【A10 Thunder】サーバ負荷分散ヘルスチェックと動作確認 5.2.0

負荷分散装置では、リアルサーバが稼働しているか否かをヘルスチェックにより監視し、もし、サーバがダウンした際に、それを検知し、ロードバランス対象から外します。

この記事では、下記記事の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以外、TCPUDPHTTPなど、多様に設定できます。

ここで、設定したヘルスモニターをリアルサーバやその公開ポートに割り当て、適用します。

Pingによるカスタムヘルスチェック

Pingの送信間隔(Interval)を3秒、タイムアウトを1秒にするカスタムのヘルスモニタ(名前:custom_ping)を設定します。

ADC >> Health Monitors >> Health Monitors より、下記画面のように設定し、Createをクリックします。

下記のように登録されました。

これをリアルサーバに適用します。ADC >> SLB >> Servers  でリアルサーバ(Web-01)をクリックし、Health Monitorで先ほど設定したcustom_pingを選択します。

設定後、updateをクリックします。

下記のように、StatusUPしていることが確認できます。

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 TypeHTTP)を設定します。

Createをクリックすると、下記のとおり登録されます。

リアルサーバ Web-01の公開ポートに割り当てます。ADC >> SLB >> Servers よりWeb-01をクリックし、公開ポートである80を編集(edit)します。

Health CheckMonitorを選択し、Health Monitorで、先ほど追加した hc_httpを選択し、Updateをクリックします。

下記のように、StatusUPしていることが確認できます。

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をレスポンスしています。

コメント