7.6. Load-balancing サービスヘルスモニターの概要
Load-balancing サービス (octavia) のヘルスモニターは、各バックエンドメンバーサーバーで定期的なヘルスチェックを実行するプロセスで、障害が発生したサーバーを事前検出し、それらをプールから一時的に除外します。
ヘルスモニターが障害が発生したサーバーを検出すると、サーバーをプールから除外し、メンバーを ERROR
とマークします。サーバーを修正して再度稼動状態にすると、ヘルスモニターはメンバーのステータスを ERROR
から ONLINE
に自動的に変更し、トラフィックをこれに渡すことを再開します。
実稼働環境のロードバランサーでは、ヘルスモニターを常に使用します。ヘルスモニターがない場合は、失敗したサーバーはプールから削除されません。これにより、Web クライアントのサービスの中断が発生する可能性があります。
以下に示すように、ヘルスモニターにはいくつかの種別があります。
- HTTP
-
デフォルトでは、アプリケーションサーバーの
/
パスを調べます。 - HTTPS
HTTP ヘルスモニターとまったく同じように動作しますが、TLS バックエンドサーバーが対象です。
サーバーがクライアント証明書の検証を実行する場合、HAProxy には有効な証明書がありません。このような場合、TLS-HELLO ヘルスモニタリングが代替手段です。
- TLS-HELLO
バックエンドサーバーが SSLv3-client hello メッセージに応答するようにします。
TLS-HELLO ヘルスモニターは、ステータスコードやボディーの内容などの他のヘルスメトリックを確認しません。
- PING
定期的に ICMP ping リクエストをバックエンドサーバーに送信します。
これらのヘルスチェックに合格するように、PING を許可するようにバックエンドサーバーを設定する必要があります。
重要PING ヘルスモニターは、メンバーに到達可能で ICMP エコーリクエストに応答するかどうかを確認するだけです。PING ヘルスモニターは、インスタンスで実行されるアプリケーションが正常であるかどうかを確認しません。ICMP エコーリクエストが有効なヘルスチェックである場合にのみ、PING ヘルスモニターを使用します。
- TCP
バックエンドサーバープロトコルポートへの TCP 接続を開きます。
TCP アプリケーションは TCP 接続を開き、TCP ハンドシェイクの後にデータを送信せずに接続を閉じる必要があります。
- UDP-CONNECT
基本的な UDP ポート接続を実行します。
Destination Unreachable (ICMP タイプ 3) がメンバーサーバーで有効化されていない場合、またはセキュリティールールによってブロックされている場合には、UDP-CONNECT ヘルスモニターが正しく動作しないことがあります。この場合、メンバーサーバーは、実際にダウンしている時に
ONLINE
の稼働ステータスとしてマークされる可能性があります。