負荷分散装置では、リアルサーバが稼働しているか否かをヘルスチェックにより監視し、もし、サーバがダウンした際に、それを検知し、ロードバランス対象から外します。
この記事では、下記記事のWebサーバ(Web-01)をターゲットに、A10で設定する基本的なヘルスチェックの設定と動作を確認しますので、先にお読みいただくことをお勧めします。
>> 参考記事 : サーバ負荷分散(レイヤ4)の基本設定と動作確認 5.2.0ヘルスチェック(デフォルト)
Pingによるヘルスチェック
リアルサーバを設定すると、デフォルトで、Pingによるヘルスチェックが実行されます。デフォルトのヘルスチェックは、ADC >> Health Monitors >> Health Monitors で確認できます。
各パラメータの意味は以下。
- Retry:リアルサーバをダウンと見なす再送回数。デフォルト3回
- Up Retry:リアルサーバがアップされたと見なす再送回数。デフォルト1回。
- Interval:ヘルスチェックの送信間隔。デフォルト5秒。
- Timeout:ヘルスチェックの応答のタイムアウト。デフォルト5秒。
CLIでは、show health monitor で確認できます。
vThunder#show health monitor Idle = Not used by any server In use = Used by server Monitor Name Interval Retries Timeout Up-Retries Method Status ----------------------------------------------------------------------- ping 5 3 5 1 ICMP In use
L4ポートによるヘルスチェック
リアルサーバの公開ポートを割り当てると、デフォルトで、そのポートに対するデフォルトのヘルスチェックが実行されます。
デフォルトの動作例
リアルサーバ 10.0.200.100に対して、公開ポートとしてTCP 80番を設定すると、リアルサーバに対して、Pingによるヘルスチェック、公開ポートに対してL4ポートのヘルスチェックがデフォルトで実行されます。
CLI設定とデフォルトのヘルスチェックの紐付けイメージは下記のようになります。
ヘルスチェックの状態は、CLIで、show health stat で確認できます。
vThunder#show health stat ・ ・ IP address Port Health monitor Status Cause(Up/Down) Reason(Up/Down) Retry PIN -------------------------------------------------------------------------------------------------------------------------- 10.0.200.100 default UP 11 /0 @0 ICMP Receive OK 0 0 /0 0 10.0.200.100 80 default UP 20 /0 @0 TCP Verify Connection OK 0 0 /0 0
Webサーバでキャプチャすると、5秒毎にPingを受信していることが確認できます。
また、TCP80番に対しても5秒毎にヘルスチェックされていることが確認できます。TCPの3ハンドシェークを結んだあと、すぐに、FINによりセッションをクローズしています。
ヘルスチェックの無効化
例えば、デフォルトのヘルスチェックにおいて、リアルサーバへのPingによるヘルスチェックを無効化したい場合、health-check-disable コマンドを設定します。
vThunder(config)#slb server Web-01 10.0.200.100 vThunder(config-real server)#health-check-disable
show health stat を確認すると、ICMPのヘルスチェックの表示が消えています。
vThunder#show health stat IP address Port Health monitor Status Cause(Up/Down) Reason(Up/Down) Retry PIN -------------------------------------------------------------------------------------------------------------------------- 10.0.200.100 80 default UP 20 /0 @0 TCP Verify Connection OK 0 0 /0 0
GUIでは、ADC >> SLB >> Servers のリアルサーバの詳細設定で、Disable Health Checkにチェックを入れます。
ヘルスチェック(カスタム)
ヘルスチェックする方式や送信間隔、タイムアウトなどをヘルスモニタとしてカスタム設定し、リアルサーバやその公開ポートに割り当てることができます。
カスタム設定は、ADC >> Health Monitors >> Health Monitors >> Create より追加できます。
デフォルトでは下記のような画面が出力されます。
Method Typeにて、ヘルスチェックの方式をICMP以外、TCPやUDP、HTTPなど、多様に設定できます。
ここで、設定したヘルスモニターをリアルサーバやその公開ポートに割り当て、適用します。
Pingによるカスタムヘルスチェック
Pingの送信間隔(Interval)を3秒、タイムアウトを1秒にするカスタムのヘルスモニタ(名前:custom_ping)を設定します。
ADC >> Health Monitors >> Health Monitors より、下記画面のように設定し、Createをクリックします。
下記のように登録されました。
これをリアルサーバに適用します。ADC >> SLB >> Servers でリアルサーバ(Web-01)をクリックし、Health Monitorで先ほど設定したcustom_pingを選択します。
設定後、updateをクリックします。
下記のように、StatusがUPしていることが確認できます。
CLIで設定する場合は、下記のようになります。
vThunder(config)#health monitor custom_ping vThunder(config-health:monitor)# interval 3 timeout 1 vThunder(config)#slb server Web-01 10.0.200.100 vThunder(config-real server)# health-check custom_ping
show health statにて、custom_pingによるヘルスチェックが実行されていることが確認できます。
vThunder# show health stat
IP address Port Health monitor Status Cause(Up/Down) Reason(Up/Down) Retry PIN
--------------------------------------------------------------------------------------------------------------------------
10.0.200.100 custom_ping UP 11 /0 @0 ICMP Receive OK 0 0 /0 0
10.0.200.100 80 default UP 20 /0 @0 TCP Verify Connection OK 0 0 /0 0
httpによるカスタムヘルスチェック
レイヤ4のTCPレベルではなく、L7レベルでのヘルスチェックも可能です。ここでは、HTTPでのヘルスチェックの動作を確認します。
メソッドをHTTPとするヘルスモニタを、ADC >> Health Monitors >> Health Monitors より設定します。
General Fieldでは、Name(名前:hc_http)とMethod Type(HTTP)を設定します。
Createをクリックすると、下記のとおり登録されます。
リアルサーバ Web-01の公開ポートに割り当てます。ADC >> SLB >> Servers よりWeb-01をクリックし、公開ポートである80を編集(edit)します。
Health CheckでMonitorを選択し、Health Monitorで、先ほど追加した hc_httpを選択し、Updateをクリックします。
下記のように、StatusがUPしていることが確認できます。
CLIで設定する場合は、下記のようになります。
vThunder(config)#health monitor hc_http vThunder(config-health:monitor)#method http vThunder(config)#slb server Web-01 10.0.200.100 vThunder(config-real server)#port 80 tcp vThunder(config-real server-node port)#health-check hc_http
show health statにて、hc_httpによるヘルスチェックが実行されていることが確認できます。
vThunder#show health stat
IP address Port Health monitor Status Cause(Up/Down) Reason(Up/Down) Retry PIN
--------------------------------------------------------------------------------------------------------------------------
10.0.200.100 custom_ping UP 11 /0 @0 ICMP Receive OK 0 0 /0 0
10.0.200.100 80 hc_http UP 10 /0 @0 HTTP Status Code OK
デフォルトでは、サーバからのステータスコード200がレスポンスされることで、UPしていると見なします。
下記は、Webサーバ側で取得したキャプチャで、HTTPのヘルスチェックを5秒毎に受信し、200 OKをレスポンスしています。
コメント