5.4. 利用可能なルータープラグイン
ルーターは、ノードに割り当てて OpenShift Container Platform クラスターのトラフィックを制御することができます。OpenShift Container Platform はデフォルトのルーターとして HAProxy を使用しますが、オプションも提供されています。
5.4.1. HAProxy テンプレートルーター
HAProxy テンプレートのルーター実装は、テンプレートルータープラグインの参照実装です。これは、openshift3/ose-haproxy-router リポジトリーを使用して、テンプレートルータープラグインとともに、HAProxy インスタンスを実行します。
テンプレートルーターには 2 つのコンポーネントがあります。
- エンドポイントとルートを監視して変更を基に HAProxy の再読み込みをトリガーするラッパー
- ルートとエンドポイントをベースに HAProxy 設定ファイルをビルドするコントローラー
HAProxy ルーター はバージョン 1.8.1 を使用します。
コントローラーおよび HAProxy は、Pod 内に常駐しており、デプロイメント設定で管理されます。ルーターの設定プロセスは、oc adm router
コマンドで自動化されています。
コントローラーは、ルートとエンドポイントに変更がないか、また、HAProxy プロキシーを監視します。変更が検出されたら、新しい haproxy-config ファイルを作成して、HAProxy を再起動します。haproxy-config ファイルは、ルーターのテンプレートファイルと OpenShift Container Platform からの情報をベースに構築されます。
HAProxy テンプレートファイルは、必要に応じてカスタマイズして、OpenShift Container Platform で現在サポートされていない機能をサポートすることができます。HAProxy マニュアル では、HAProxy がサポートする全機能を説明しています。
以下の図では、データがプラグインを使用してマスターから最終的に HAProxy 設定にどのように移動するかが記載されています。
図5.4 HAProxy ルーターデータフロー
HAProxy テンプレートルーターメトリクス
HAProxy ルーターは、外部のメトリクスコレクションや集計システム (例 Prometheus、statsd) で消費されるように、Prometheus 形式 のメトリクスを提供して公開します。ルーターは、HAProxy CSV 形式 のメトリクスを提供するように設定したり、まったくルーターメトリクスを提供しないように設定したりできます。
メトリクスは、ルーターコントローラーおよび HAProxy の両方から 5 秒ごとに取得されます。ルーターメトリクスカウンターは、ルーターのデプロイ時に 0 から開始され、経時的に増加します。HAProxy メトリクスカウンターは、HAProxy が再読み込みされるたびに 0 にリセットされます。ルーターはフロントエンド、バックエンド、サーバーごとに HAProxy 統計を収集します。サーバーが 500 台以上ある場合に、リソースの使用量を減らすには、バックエンドでは複数のサーバーを利用できるので、サービスではなく、バックエンドをレポートします。
この統計は 利用可能な HAProxy 統計 のサブセットです。
以下の HAProxy メトリクスは定期的に収集され、Prometheus 形式に変換されます。フロントエンドはすべて、"F" カウンターが収集されます。バックエンドごとのカウンターを収集する場合には、サーバーごとの "S" サーバーカウンターが収集されます。それ以外の場合は、バックエンドごとに "B" カウンターが収集され、サーバーカウンターは収集されません。
詳細は、ルーター環境変数を参照してください。
以下の表を参照してください。
列 1 - HAProxy CSV 統計のインデックス
列 2
F | フロントエンドのメトリクス |
b | サーバーのしきい値が原因でサーバーメトリクスを表示しない場合のバックエンドメトリクス |
B | サーバーメトリクスを表示する場合のバックエンドメトリクス |
S | サーバーメトリクス |
列 3 - カウンター
列 4 - カウンターの説明
Index | 使用方法 | カウンター | 説明 |
2 | bBS | current_queue | サーバーに割り当てられていないキューに入れられた要求の現在の数。 |
4 | FbS | current_sessions | アクティブなセッションの現在の数。 |
5 | FbS | max_sessions | アクティブなセッションの観察される最大数。 |
7 | FbBS | connections_total | 接続の合計数。 |
8 | FbS | bytes_in_total | 受信バイトの現在の合計。 |
9 | FbS | bytes_out_total | 送信バイトの現在の合計。 |
13 | bS | connection_errors_total | 接続エラーの合計。 |
14 | bS | response_errors_total | 応答エラーの合計。 |
17 | bBS | up | 現在のバックエンドのヘルスステータス (1 = UP、0 = DOWN)。 |
21 | S | check_failures_total | 失敗したヘルスチェックの合計数。 |
24 | S | downtime_seconds_total | 合計ダウンタイム (秒)。 |
33 | FbS | current_session_rate | 直近の 1 秒間で、1 秒あたりの現在のセッション数。 |
35 | FbS | max_session_rate | 1 秒あたりの最大セッション実数。 |
40 | FbS | http_responses_total | HTTP 応答合計数、コード 2xx。 |
43 | FbS | http_responses_total | HTTP 合計応答数、コード 5xx。 |
60 | bS | http_average_response_latency_milliseconds | 直近の要求 1024 件のうちの HTTP 応答 (ミリ秒単位)。 |
ルーターコントローラーは、以下のアイテムを収集します。これらは、Prometheus 形式のメトリクスでのみ提供されます。
名前 | 説明 |
template_router_reload_seconds | ルーターの再読み込みにかかる時間を秒単位で測定します。 |
template_router_write_config_seconds | ルーター設定のディスクへの書き込みにかかる時間を秒単位で測定します。 |
haproxy_exporter_up | 最後に成功した haproxy の収集です。 |
haproxy_exporter_csv_parse_failures | CSV の解析時のエラー数です。 |
haproxy_exporter_scrape_interval | 次の収集が許可されるまでの秒単位の時間です (データのサイズに比例します)。 |
haproxy_exporter_server_threshold | 追跡したサーバー数と現在のしきい値です。 |
haproxy_exporter_total_scrapes | 現在の合計 HAProxy 収集数です。 |
http_request_duration_microseconds | ミクロ秒単位の HTTP 要求のレイテンシーです。 |
http_request_size_bytes | バイト単位の HTTP 要求サイズです。 |
http_response_size_bytes | バイト単位の HTTP 応答サイズです。 |
openshift_build_info | OpenShift がビルドされた major、minor、git commit、git version でラベル付けされた定数値 '1' のメトリクスです。 |
ssh_tunnel_open_count | SSH トンネルを開放しようと試行した合計数です。 |
ssh_tunnel_open_fail_count | SSH トンネルを開放しようとして失敗した合計数です。 |