8.9. Ingress Controller の設定
8.9.1. HAProxy ダイナミック設定マネージャー (DCM) リンクのコピーリンクがクリップボードにコピーされました!
管理者として、ドメインソケットを介して実行中の HAProxy プロセスを設定する代替更新メカニズムとして、Dynamic Configuration Manager (DCM) を使用できます。この方法により、HAProxy プロセスをフォークして再ロードする必要がなくなります。
ルーターは、サポートされている操作には自動的に DCM を使用し、DCM で処理できない操作にはフォークアンドリロードにフォールバックします。
ルーターの再起動後、デフォルトの HAProxy プロセスは新しい子プロセスをフォークし、既存の接続がすべて閉じられるまで古いプロセスを実行し続けます。HAProxy が長時間の接続を処理している際に頻繁に再起動すると、古いプロセスが蓄積され、ノード上で過剰なメモリーを消費します。プロセスが蓄積されると、経路やエンドポイントが頻繁に変更される環境では、メモリー不足エラーが発生する可能性があります。
DCM は、実行中の HAProxy プロセスに直接設定更新を適用することで、この問題を解決します。
DCM は、デフォルトのフォークアンドリロードモデルに比べて、以下の利点を提供します。
- メモリー使用量の削減: 頻繁なエンドポイント更新時に、古い HAProxy プロセスが蓄積されなくなります。フォークアンドリロード方式では、古いプロセスごとに数百メガバイト、あるいは数ギガバイトものメモリーを消費する可能性があります。
- メトリクスの精度向上: フォークとリロードの後、古い HAProxy プロセスは残りの接続のメトリクスを更新できません。DCM はプロセスを置き換えないため、メトリクスの完全な継続性を維持します。
-
負荷分散の改善:
ラウンドロビン、ランダム、最小接続数などの HAProxy 負荷分散アルゴリズムは、バックエンドサーバーごとの接続数を追跡します。再読み込み後、新しいプロセスは古いプロセスによって管理されていた接続に関するデータを持っていません。このデータ不足が、トラフィックの不均一な分布を引き起こしています。DCM はこのプロセスが継続するため、このデータを保持します。
フォークアンドリロード機能を使用すると、アプリケーションを任意の数のレプリカにスケールアップすると、HAProxy の設定がリロードされます。DCM は、HAProxy のリロードをトリガーすることなく、以下のスケーリング操作を動的に処理します。
- スケールアウト操作
- あらゆるスケールイン操作
DCM を使用する場合でも、HAProxy では、以下のようなサポートされていない動的操作に対してリロードが必要です。
- ルートの追加、削除、または変更
- ルート上の TLS 証明書を変更する
- ルートアノテーションの変更
- グローバルルーターの設定変更
DCM が動的に処理できない操作に遭遇した場合、ルーターは標準のフォークアンドリロード機構にフォールバックします。このメカニズムは、新しい haproxy.config ファイルを書き込み、HAProxy をリロードします。HAProxy は、受信接続を処理するための新しいプロセスをフォークします。Ingress Operator には、HAProxy 設定の更新を管理するために DCM とフォークアンドリロードのどちらかを選択するための spec.tuningOptions.configurationManagement API フィールドが含まれています。