Classic Load Balancer (CLB) は、ヘルスチェックを実行してバックエンドサーバーの可用性を確認します。 ヘルスチェック機能を有効にした後、バックエンドサーバーが異常であると宣言された場合、CLBはバックエンドサーバーへのリクエストの転送を停止し、その後のリクエストを正常なバックエンドサーバーに配信します。 異常なバックエンドサーバーが回復すると、CLBはバックエンドサーバーにリクエストを配信します。 ヘルスチェック機能は、異常なバックエンドサーバーによって引き起こされる単一障害点 (SPOF) を防ぎ、サービスの可用性を向上させます。
ヘルスチェックを設定する前に、CLBヘルスチェックの仕組みを理解することを推奨します。
ヘルスチェックの設定
リスナーを追加するときに、ヘルスチェック機能を設定できます。 ほとんどの場合、デフォルトのヘルスチェック設定を使用できます。
CLB コンソールにログインします。
上部のナビゲーションバーで、CLBインスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[CLB]> [インスタンス] を選択します。 インスタンス ページで、管理するCLBインスタンスを見つけ、インスタンスのIDをクリックします。
インスタンスの詳細ページで、[リスナー] タブをクリックします。 [リスナーの追加] をクリックするか、[操作] 列の [リスナーの変更] をクリックします。
ヘルスチェック ステップに入るまで、ウィザードに従ってリスナーを設定します。 ヘルスチェック機能はデフォルトで有効になっています。 詳細設定 の横にある 改正 をクリックして、次のパラメーターを設定します。
パラメーター
手順
ヘルスチェックプロトコル
ヘルスチェックのプロトコルを選択します。 リスナープロトコルがTCPの場合、ヘルスチェックプロトコルをTCPまたはHTTPに設定します。 リスナープロトコルがUDPの場合、ヘルスチェックプロトコルをTCP、UDP、またはHTTPに設定します。 リスナープロトコルがHTTPまたはHTTPSの場合、ヘルスチェックプロトコルをHTTPに設定します。
TCPヘルスチェックはネットワーク層で実行されます。 CLBはバックエンドサーバーのポートを調査し、SYNパケットを送信してサーバーが正常かどうかを確認します。
UDPヘルスチェックは、UDPパケットを送信してサーバーが正常かどうかを調べます。
HTTPヘルスチェックは、ブラウザがwebページにアクセスするのと同様の方法で実行されます。 CLBは、HEADまたはGETリクエストを送信して、バックエンドサーバーが正常かどうかを確認します。
ヘルスチェック方法
(HTTPヘルスチェックのみ)
レイヤ7 (HTTPまたはHTTPS) リスナーのヘルスチェックは、HEADメソッドとGETメソッドの両方をサポートしています。 デフォルトではHEADメソッドが使用されます。
説明バックエンドサーバーがHEADメソッドをサポートしていない場合、またはHEADメソッドが無効になっている場合、ヘルスチェックは失敗する可能性があります。 この問題を解決するには、GETメソッドを使用します。
GETメソッドが使用され、レスポンスサイズが8 KBを超える場合、レスポンスは切り捨てられます。 ただし、レスポンスに基づいてヘルスチェック結果を取得することはできます。
ヘルスチェックポート
ヘルスチェックに使用するバックエンドポートを選択します。 デフォルトでは、バックエンドサーバーポートはプローブされます。
説明リスナーに関連付けられているサーバーグループ内のすべてのバックエンドサーバーが異なるポートを使用している場合、ヘルスチェック用のポートを指定する必要はありません。 CLBは、各バックエンドサーバーのポートを自動的にプローブします。
ヘルスチェックパス
(HTTPヘルスチェックのみ)
デフォルトでは、CLBがバックエンドサーバーでHTTPヘルスチェックを実行すると、CLBはバックエンドサーバーに設定されたデフォルトのホームページにHTTPリクエストを送信します。
ヘルスチェックにデフォルトのホームページを使用しない場合は、パスを指定できます。
ヘルスチェックには静的ページを使用することを推奨します。
ヘルスチェックドメイン名 (HTTPヘルスチェックのみ)
ヘルスチェック設定でドメイン名が設定されている場合、CLBがヘルスチェックリクエストをアプリケーションサーバーに転送するときに、CLBはこのドメイン名をHostヘッダーに追加します。 ドメイン名が設定されていない場合、CLBはリクエストにHostヘッダーを含めません。
一部のアプリケーションサーバーは、アプリケーションサーバーが要求を受け入れる前に、要求のホストヘッダーを確認する必要があります。 ヘルスチェックドメイン名が設定されておらず、ヘルスチェックリクエストにホストヘッダーが含まれていない場合、リクエストはアプリケーションサーバーによって拒否され、ヘルスチェックは失敗します。 アプリケーションサーバーがリクエストのホストヘッダーを確認する必要がある場合は、ヘルスチェック機能が期待どおりに機能するように、ヘルスチェック設定でドメイン名を構成する必要があります。
健全なステータスコード
(HTTPヘルスチェックのみ)
正常なバックエンドサーバーを示すHTTPステータスコードを選択します。
デフォルト値: http_2xxおよびhttp_3xx
ヘルスチェック応答タイムアウト
ヘルスチェック応答の最大タイムアウト時間を指定します。
バックエンドサーバーが指定されたタイムアウト期間内に応答しない場合、バックエンドサーバーは異常と宣言されます。
ヘルスチェック間隔
2つの連続したヘルスチェックの間隔を指定します。
クラスター内のすべてのノードは、指定された間隔でバックエンドサーバーで独立して並列にヘルスチェックを実行します。 ただし、ノードは異なる時点でバックエンドサーバーをプローブするため、単一のサーバーがプローブされる頻度はヘルスチェック間隔に準拠しません。
正常なしきい値
正常でないバックエンドサーバーが正常と見なされるまでにヘルスチェックに合格する必要がある回数を指定します。
異常しきい値
正常なバックエンドサーバーが正常でないと見なされるまでに連続してヘルスチェックに失敗する必要がある回数を指定します。
ヘルスチェック要求とヘルスチェック結果 (UDPヘルスチェックのみ)
UDPリスナーのヘルスチェックを設定する場合、[ヘルスチェック要求] フィールドに要求内容 (youraccountIDなど) を入力し、[ヘルスチェック結果] フィールドに期待される応答 (slb123など) を入力できます。
この操作により、ヘルスチェック応答ロジックがバックエンドサーバーに追加されます。 たとえば、youraccountID要求が受信されたときにslb123が返されます。
CLBがバックエンドサーバーから期待される応答を受信した場合、バックエンドサーバーは正常と見なされます。 それ以外の場合、バックエンドサーバーは異常と見なされます。 この方法を使用して、UDPヘルスチェックの精度を向上させることができます。
[次へ] をクリックして、リスナー設定の次のステップに進みます。
ヘルスチェック情報の表示
CLB コンソールにログインします。
上部のナビゲーションバーで、CLBインスタンスがデプロイされているリージョンを選択します。
インスタンス ページで、管理するCLBインスタンスのIDをクリックします。
インスタンスの詳細ページで、[リスナー] タブをクリックして、リスナーのヘルスチェックステータスを表示します。
リスナーは、次のヘルスチェック状態になります。
Initializing: チェックするバックエンドサーバーが初期化中であることを示します。
Healthy: すべてのバックエンドサーバーが正常であることを示します。
エラー: 異常なバックエンドサーバーが存在することを示します。
Unavailable: ヘルスチェック機能が有効になっていないことを示します。
リスナーに対応する [異常] または [初期化] をクリックして、リスナーのリスナー /転送ルール、グループ、ECSインスタンス /ポート、ヘルスステータス、および原因パラメーターを表示します。
健康事前チェック
ECSインスタンスをCLBインスタンスに追加した後、Cloud Assistantを使用してECSインスタンスでヘルスプレチェックスクリプトを実行し、ヘルスプレチェック結果を表示できます。 Heathプリチェックスクリプトは、リスナーのヘルスチェック設定に基づいて生成されます。
転送ルールに関連付けられているバックエンドサーバーでは、ヘルスプレチェックスクリプトを実行できません。
これらのチェックを実行するために異なる接続が使用されるため、ヘルスプレチェック結果は実際のヘルスチェック結果と異なる場合があります。 ヘルスプレチェックの結果は、ヘルスチェック設定に関する提案のみを提供します。
ヘルス事前チェックの前提条件
AliyunSLBHealthDiagnoseRole
RAMロールがCLBに割り当てられ、CLBがECSインスタンスにアクセスできるようにします。バックエンドECSインスタンスは、次の要件を満たす必要があります。
ECSインスタンスは仮想プライベートクラウド (VPC) にデプロイされています。
LinuxとCloud Assistantがインストールされています。 Cloud Assistant Agentのインストール方法については、「Cloud Assistant Agentのインストール」をご参照ください。
インスタンスは [実行中] 状態で、デフォルトのシェルはbashです。
CLBインスタンスのリスナーに対してヘルスチェック機能が有効になっており、ECSインスタンスがCLBインスタンスのバックエンドサーバーグループに追加されます。
健康事前チェック手順
CLB コンソールにログインします。
上部のナビゲーションバーで、CLBインスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[CLB]> [インスタンス] を選択します。 インスタンス ページで、管理するCLBインスタンスを見つけ、インスタンスのIDをクリックします。
インスタンスの詳細ページで、[リスナー] タブをクリックします。 [リスナーの追加] をクリックするか、[操作] 列の [リスナーの変更] をクリックします。
ヘルスチェック ステップに入るまでリスナーを設定します。
[詳細設定] の右側にある [ヘルス事前チェック] をクリックします。
ヘルスプレチェックを初めて使用するときは、[今すぐ有効化] をクリックします。 [クラウドリソースアクセス権限付与] ページで、[権限付与ポリシーの確認] をクリックします。 システムは自動的にAliyunSLBHealthDiagnosteRoleロールを作成し、そのロールをCLBに割り当てます。 CLBは、バックエンドECSインスタンスにアクセスするためにこのロールを引き受けます。
[ヘルスの事前チェック] ページで、ヘルスの事前チェックを実行するバックエンドサーバーを見つけ、[操作] 列の [検出の開始] をクリックします。
一度に最大5つのECSインスタンスを選択できます。 5つ以上のECSインスタンスでヘルスプリチェックを実行する場合は、これらのECSインスタンスをバッチに分割します。
[OK] をクリックして、ヘルスプレチェックを実行します。 ヘルスプレチェックが完了すると、結果がコンソールに表示されます。
次の表に、リスナーでサポートされているチェック項目を示します。
リスナータイプ
ヘルスチェックポートのステータス
iptables設定
rpfilter設定
HTTPプロービング時の応答
UDPプロービング
TCP
✔
✔
✔
✔
-
UDP
✔
✔
✔
-
✔
HTTP
✔
✔
✔
✔
-
HTTPS
✔
✔
✔
✔
-
ヘルスチェックの無効化
ビジネスがトラフィック変動に非常に敏感な場合、頻繁なヘルスチェックがビジネスの可用性に影響を与える可能性があります。 ヘルスチェックのビジネスへの悪影響を減らすには、ヘルスチェックの頻度を減らすか、ヘルスチェックの間隔を増やすか、レイヤー7ヘルスチェックをレイヤー4ヘルスチェックに変更します。 ビジネスの継続性を確保するために、ヘルスチェック機能を有効にすることを推奨します。
ヘルスチェック機能を無効にすると、CLBは異常なバックエンドECSインスタンスにリクエストを配信し、サービスが中断されます。 ヘルスチェック機能を有効にすることを推奨します。
CLB コンソールにログインします。
上部のナビゲーションバーで、CLBインスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[CLB]> [インスタンス] を選択します。 インスタンス ページで、管理するCLBインスタンスを見つけ、インスタンスのIDをクリックします。
インスタンスの詳細ページで、[リスナー] タブをクリックします。 [リスナーの追加] をクリックするか、[操作] 列の [リスナーの変更] をクリックします。
ヘルスチェック ステップに入るまでリスナーを設定します。
ヘルスチェック機能を無効にし、[次へ] をクリックします。
関連ドキュメント
CLBヘルスチェックの詳細については、「CLBヘルスチェック」をご参照ください。
ヘルスチェックの問題をトラブルシューティングする方法の詳細については、「ヘルスチェックに関するFAQ」をご参照ください。
ヘルスチェックログのクエリと分析方法の詳細については、「ヘルスチェックログの保存とダウンロード」をご参照ください。