ロード・バランサのヘルス・チェック構成ミスの一般的な悪影響
ロード・バランサのヘルス・チェックの構成の誤りに関連する一般的な副作用について学習します。
次に、ヘルス・チェックの構成ミスの一般的な悪影響を示します。これらは問題のトラブルシューティングに使用できます。
-
不正なポート
このシナリオでは、すべてのバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、ポートの設定が間違っている可能性があります。ポートは、リスニングを行っており、バックエンドのトラフィックが許可されているポートである必要があります。
OCIロギング・エラー:
errno:EHOSTUNREACH, syscall:connect
-
パスが正しくありません
このシナリオでは、すべてのバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、バックエンドの実際のアプリケーションと一致させる必要があるHTTPヘルス・チェックのパスの設定が間違った可能性があります。このシナリオでは、
curl
ユーティリティを使用して、同じネットワーク内のシステムからテストできます。例:$ curl -i http://backend_ip_address/health
構成されたステータス・コードをレスポンスOCIロギング・エラー:
"msg":"invalid statusCode","statusCode":404,"expected":"200"
で受け取ります。 -
不正なプロトコル
このシナリオでは、すべてのバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、バックエンドでリスニングしているプロトコルと一致させる必要があります。例: TCPおよびHTTPヘルス・チェックのみがサポートされます。バックエンドでHTTPSを使用している場合は、プロトコルとしてTCPを使用する必要があります。
OCIロギング・エラー:
code:EPROTO, errno:EPROTO
-
不正なステータス・コード
このシナリオでは、すべてのバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、HTTPヘルス・チェックでは、バックエンドから返される実際のステータス・コードと一致させるステータス・コードの設定が間違っている可能性があります。一般的なシナリオは、バックエンドが
302
ステータス・コードを返すが、200
ステータス・コードが予想される場合です。この結果では、バックエンドによってユーザーがサーバーのサインイン・ページまたは別の場所に転送されている可能性があります。このシナリオでは、バックエンドを修正して予想されるコードを返すか、ヘルス・チェック構成で302
を使用できます。OCIロギング・エラー:
msg:invalid statusCode, statusCode:nnn,expected:200
(ここで、nnn
は返されるステータス・コードです。) -
不正な正規表現パターン
すべてのバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、本文と一致する正規表現パターンの設定が不適切で間違っている可能性があるか、バックエンドが予想されるボディを返していません。このシナリオでは、パターンと一致するようにバックエンドを変更するか、バックエンドと一致するようにパターンを修正できます。次に、具体的なパターンの例を示します。-
任意のコンテンツ -
.*
-
Status:OK:
という値を返すページ -Status:OK:.*
-
OCIロギング・エラー:
response match result: failed
-
-
正しく構成されていないネットワーク・セキュリティ・グループ、セキュリティ・リストまたはローカル・ファイアウォール
すべてまたは一部のバックエンド・サーバーが異常としてレポートされます。バックエンド・サーバーに問題がない場合、ネットワーク・セキュリティ・グループ、セキュリティ・リストまたはローカル・ファイアウォール(firewalld
、iptables
、SELinux
など)のいずれかを誤って構成している可能性があります。このシナリオでは、curl
またはnetcat
ユーティリティを使用して、ロード・バランサ・インスタンスHTTPと同じサブネットおよびネットワーク・セキュリティ・グループに属するシステムからテストできます。例: $ curl -i http://backend_ip_address/health TCP
and nc -zvw3 backend_ip_address 443
。
ローカル・ファイアウォールを確認するには、次のコマンドを使用します: firewall-cmd --list-all --zone=public
。ファイアウォールに予想されるルールが欠落している場合は、次のようなコマンド・セットを使用してサービスを追加できます(この例はHTTPポート80用です):
-
firewall-cmd --zone=public --add-service=http
-
firewall-cmd --zone=public --permanent --add-service=http