【A10 Thunder】サーバ負荷分散(L4)の基本設定と動作確認 5.2.0

ロードバランサで知られる A10 ネットワークスの Thunder シリーズで、サーバ負荷分散(SLB)の基本設定と動作を確認します。今回はレイヤ4の負荷分散として、Thunder が公開する仮想アドレス(VIP)宛ての HTTP アクセスを、2台の Web サーバへラウンドロビンで振り分けます。

検証には仮想アプライアンスの vThunder(ACOS 5.2.0)を使いました。Thunder の CLI は Cisco に近い操作感で、設定しやすいのが特徴です。同じ設定を GUI と CLI の両方で行い、正常時と Web サーバ障害時の状態をそれぞれ確認します。

この記事でわかること
  1. Server・Service Group・Virtual Server の3つの設定要素と、その関係
  2. GUI での負荷分散の設定手順
  3. 同じ設定を CLI で行うコマンド
  4. 正常時と Web サーバ障害時の状態の確認方法(GUI/CLI)
sg-web Web-01 10.0.200.100(TCP 80) Web-02 10.0.200.173(TCP 80) vThunder VIP 10.0.10.200 TCP 80 Internet Client HTTP(TCP 80)
図1 検証構成(クライアントが VIP 10.0.10.200 の TCP 80 にアクセスし、vThunder が Web-01 と Web-02 にラウンドロビンで振り分ける)

負荷分散を構成する3つの要素

Thunder の L4 負荷分散は、Server、Service Group、Virtual Server の3つを組み合わせて作ります。クライアントが接続するのは Virtual Server(VIP)で、Thunder はそこに紐付いた Service Group のメンバーから振り分け先の Server を選びます。

Virtual Server Service Group Server Server vip-web10.0.10.200port 80 tcp sg-webtcpround-robin Web-0110.0.200.100port 80 tcp Web-0210.0.200.173port 80 tcp 紐付け member 接続を受ける入口(VIP) 振り分け先のグループ 実際のWebサーバ
図2 3つの設定要素の関係(Virtual Server → Service Group → Server)
要素役割今回の設定
Server(リアルサーバ)実際に通信を処理するサーバ。IP アドレスと、通信を受けるポート番号・プロトコルを登録します。Web-01 10.0.200.100、Web-02 10.0.200.173(どちらも TCP 80)
Service GroupServer をまとめたグループ。このグループのメンバーの間で負荷分散します。分散方式(Algorithm)もここで決めます。sg-web(TCP、Round Robin)
Virtual Serverクライアントの接続を受ける入口。VIP と、受け付けるポート(Virtual Port)を設定し、Service Group を紐付けます。vip-web 10.0.10.200(TCP 80)
戻りの通信の経路

今回の構成では送信元 NAT をしていないため、Web サーバには送信元がクライアントのアドレスのまま届きます。サーバからの応答は Thunder を通って返る必要があり、サーバのデフォルトゲートウェイを Thunder 側に向けるなどの経路が前提になります。応答が Thunder を通らずにクライアントへ直接返ると、クライアントは VIP 以外のアドレスから応答を受け取ることになり、通信が成立しません。送信元 NAT を使う構成は、末尾の関連記事で扱っています。

負荷分散の設定(GUI)

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

リアルサーバ(Server)を登録する

まず、振り分け先の Web サーバ2台をリアルサーバとして登録します。ADC ›› SLB ›› Servers を開き、Create をクリックします。

Name と Host(IP アドレス)を入力したら、Port 欄の Create をクリックして、サーバが通信を受けるポート番号とプロトコルを追加します。ポートを追加したら Create で確定します。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Servers ›› Create
1NameWeb-01
Type◉ IPv4○ IPv6○ FQDN
2Host10.0.200.100
ActionEnable
Port
3Create
Port の追加
4Port or Port Range80
ProtocolTCP
Health Check◉ Default○ Disable○ Monitor○ Follow Port
Cancel5Create
図3 リアルサーバの登録画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Nameサーバを識別する任意の名前。Web-01 とします。
2Hostサーバの IP アドレス。10.0.200.100 とします。
3Port の Createポートの追加画面を開きます。
4Port or Port Range/Protocolサーバが通信を受けるポート番号とプロトコル。HTTP なので 80、TCP を指定します。Health Check は Default のままにします。
5Createポートを追加します。

登録すると、Servers の一覧に Web-01 が表示されます。Status のアイコンが緑であれば、ヘルスチェックに成功しています。同じ手順で Web-02(10.0.200.173、TCP 80)も登録します。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Servers
StatusNameIP AddressHealth Monitor
1Web-0110.0.200.100Default
Web-0210.0.200.173Default
図4 登録したリアルサーバの一覧(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Status(緑)緑:ヘルスチェックに成功し、サーバが Up している状態です。Health Monitor の Default は、個別のヘルスモニタを割り当てず、既定のヘルスチェックを使っていることを表します。

サービスグループ(Service Group)を作る

次に、登録したリアルサーバをサービスグループにまとめます。負荷分散はこのグループのメンバーの間で行われます。ADC ›› SLB ›› Service Groups を開き、Create をクリックします。

Name、Protocol、Algorithm を指定したら、Member 欄の Create でメンバーを追加します。メンバーを追加したら、最後に Update で保存します。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Service Groups ›› Create
1Namesg-web
ProtocolTCP
AlgorithmRound Robin
Member
2Create
Member の追加
Choose Creation Type◉ Existing Server○ New Server
3ServerWeb-01
Port80
Priority1
StateEnable
Cancel4Create
サービスグループの保存
Cancel5Update
図5 サービスグループの作成とメンバーの追加(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name/Protocol/Algorithm名前は sg-web、プロトコルは TCP、負荷分散方式は Round Robin を選びます。
2Member の Createメンバーの追加画面を開きます。
3Server/Port登録済みのリアルサーバ Web-01 と、そのポート番号 80 を指定します。
4Createメンバーを追加します。Web-02 も同じ手順で追加します。
5Updateメンバーを追加したサービスグループを保存します。

保存すると、sg-web の下に Web-01 と Web-02 がメンバーとして表示されます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Service Groups
StatusNameTypeAlgorithm
sg-webtcpRound Robin
Web-0180
Web-0280
図6 メンバーを登録したサービスグループ(実際の画面ではなく、表示のポイントを示したイメージです)

バーチャルサーバ(Virtual Server)を作る

クライアントの接続を受けるバーチャルサーバを作り、サービスグループを紐付けます。ADC ›› SLB ›› Virtual Servers を開き、Create をクリックします。

Name と IP Address(VIP)を入力したら、Virtual Port 欄の Create で、受け付けるプロトコル・ポート番号と、紐付けるサービスグループを指定します。最後に Update で保存します。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› Create
1Namevip-web
Wildcard☐
Address Type◉ IPv4○ IPv6
IP Address10.0.10.200
Netmask 
ActionEnable
Virtual Port
2Create
Virtual Port の追加
Name 
3ProtocolTCP
Port or Port Range80
Connection Limit64000000
ActionEnable
Source NAT Pool 
Source NAT Auto☐
4Service Groupsg-web
Template TCP 
Persist Type○ Destination IP○ SSL SID○ Source IP
Cancel5Create
バーチャルサーバの保存
Cancel6Update
図7 バーチャルサーバの作成と Virtual Port の追加(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name/IP Address名前は vip-web、VIP は 10.0.10.200 とします。
2Virtual Port の CreateVirtual Port の追加画面を開きます。
3Protocol/Port or Port RangeVIP で受け付けるプロトコルとポート番号。TCP、80 を指定します。
4Service Group振り分け先のサービスグループ sg-web を選びます。Source NAT Pool と Source NAT Auto は空欄のままなので、送信元 NAT は行いません。
5CreateVirtual Port を追加します。
6Updateバーチャルサーバを保存します。

保存すると、Virtual Servers の一覧に vip-web が表示されます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers
StatusNameIP Address
vip-web10.0.10.200
図8 作成したバーチャルサーバ(実際の画面ではなく、表示のポイントを示したイメージです)

設定を保存する

GUI で行った変更は、保存しないと再起動で消えます。画面上部のツールバーにあるフロッピーディスクのアイコン(Save)をクリックして、設定を保存します。

負荷分散の設定(CLI)

GUI で行った設定と同じ内容を CLI で設定します。GUI の項目とコマンドの対応は次のとおりです。

GUI の項目CLI のコマンド
Servers:Name/Hostslb server Web-01 10.0.200.100
Servers:Port/Protocolport 80 tcp
Service Groups:Name/Protocolslb service-group sg-web tcp
Service Groups:Algorithmmethod round-robin
Service Groups:Member(Server/Port)member Web-01 80
Virtual Servers:Name/IP Addressslb virtual-server vip-web 10.0.10.200
Virtual Port:Protocol/Portport 80 tcp
Virtual Port:Service Groupservice-group sg-web
Save アイコンwrite memory

特権モード・コンフィグレーションモードへ移る

Cisco ルータと同じく、enable で特権モードに移り、config terminal でコンフィグレーションモードに移ります。

vThunder

vThunder>enable 
Password: 特権パスワードを入力。デフォルトはパスワードなし
vThunder#config terminal
vThunder(config)#
enable パスワード

ACOS の enable パスワードは、初期状態では空です(プロンプトで Enter を押すだけで特権モードに移れます)。本番機では、強いパスワードに変更しておきます。また、ACOS 6.0.0 以降では、admin アカウントの初期パスワードは初回ログイン時に変更が必須です。

リアルサーバ(Server)を登録する

slb server でサーバ名と IP アドレスを設定し、そのモードの中の port で、サーバが通信を受けるポート番号とプロトコルを設定します。

vThunder

vThunder(config)#slb server Web-01 10.0.200.100 
vThunder(config-real server)#  port 80 tcp  
vThunder(config-real server-node port)#exit 
vThunder(config-real server)#! 
vThunder(config-real server)#slb server Web-02 10.0.200.173  
vThunder(config-real server)#  port 80 tcp  
vThunder(config-real server-node port)#exit 
vThunder(config-real server)#exit 
vThunder(config)#

サービスグループ(Service Group)を作る

slb service-group でサービスグループ名とプロトコル(TCP/UDP)を設定し、method で負荷分散方式、member でメンバーのサーバとポート番号を指定します。

vThunder

vThunder(config)#slb service-group sg-web tcp 
vThunder(config-slb svc group)# method round-robin 
vThunder(config-slb svc group)# member Web-01 80  
vThunder(config-slb svc group-member:80)# member Web-02 80  
vThunder(config-slb svc group-member:80)#exit 
vThunder(config-slb svc group)#exit 
vThunder(config)#
補足

サービスグループの負荷分散方式は、何も指定しなければラウンドロビンです。ここでは設定内容がわかるように method round-robin を明示しています。

バーチャルサーバ(Virtual Server)を作る

slb virtual-server でバーチャルサーバ名と VIP を設定します。続けて port で受け付けるポート番号とプロトコルを指定し、そのモードの中の service-group でサービスグループを紐付けます。

vThunder

vThunder(config)#slb virtual-server vip-web 10.0.10.200
vThunder(config-slb vserver)# port 80 tcp             
vThunder(config-slb vserver-vport)#service-group sg-web
vThunder(config-slb vserver-vport)#exit
vThunder(config-slb vserver)#exit
vThunder(config)#

設定を保存する

再起動後も設定が残るように、write memory で保存します。

vThunder

vThunder(config)#write memory 
Building configuration...
Write configuration to default primary startup-config
[OK]
vThunder(config)#

動作確認(正常時)

クライアントのブラウザで VIP(10.0.10.200)に HTTP でアクセスすると、Web-01 と Web-02 から交互に応答が返ります。

クライアントのブラウザ画面イメージ
http://10.0.10.200/
Web-011回目のアクセス
http://10.0.10.200/
Web-02再読み込み後
図9 アクセスするたびに応答するサーバが変わる(実際の画面ではなく、表示結果のイメージです)

GUI で確認する

状態は、ADC ›› SLB ›› Servers、ADC ›› SLB ›› Service Groups、ADC ›› SLB ›› Virtual Servers のそれぞれの一覧で確認できます。Status のアイコンがすべて緑であれば正常です。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Servers
StatusNameIP AddressCurrentTotal
1Web-0110.0.200.10016
tcp8016
Web-0210.0.200.17326
tcp8026
ADC ›› SLB ›› Service Groups
StatusNameTypeCurrentTotal
2sg-webtcp112
Web-018006
Web-028016
ADC ›› SLB ›› Virtual Servers
StatusNameIP AddressCurrentTotal
3vip-web10.0.10.200214
tcp80214
図10 正常時の Servers/Service Groups/Virtual Servers(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Servers の Status(緑)緑:サーバ(IP)とポート(tcp 80)のどちらもヘルスチェックに成功しています。
2Service Groups の Status(緑)緑:グループとメンバーがすべて Up しています。Total(接続数の累計)が Web-01 と Web-02 で同じ 6 になっており、均等に振り分けられています。
3Virtual Servers の Status(緑)緑:VIP と Virtual Port(tcp 80)が Up しています。

セッション情報

ADC ›› SLB ›› Session では、Thunder が処理しているセッションを確認できます。1つのセッションは、クライアント側の通信(Forward)とサーバ側の通信(Reverse)の組で表示されます。

Forward Reverse Web-01 vThunder Client Reverse Source10.0.200.100:80 Forward Dest10.0.10.200:80 Forward Source= Reverse Dest(クライアント)
図11 セッション表示の Forward と Reverse
vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse Dest
Tcp(伏せています):5139810.0.10.200:8010.0.200.100:80(伏せています):51398
図12 セッション情報(実際の画面ではなく、表示のポイントを示したイメージです)
表示意味
Forward Source/Forward Destクライアントから Thunder への通信。送信元はクライアント、宛先は VIP(10.0.10.200:80)です。
Reverse Source/Reverse DestThunder が選んだサーバ側の通信。送信元は Web-01(10.0.200.100:80)で、送信元 NAT をしていないため、宛先はクライアントのアドレスのままです。

CLI で確認する

show health stat:ヘルスチェックの状態

リアルサーバへのヘルスチェックの状態は show health stat で確認します。今回は個別のヘルスモニタを割り当てていないため、既定のヘルスチェックとして、サーバの IP には ICMP、ポート 80 には TCP の接続でチェックしています。Status が UP であれば、ヘルスチェックに応答しています。

vThunder

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
10.0.200.173               default         UP     11 /0  @0      ICMP Receive OK                     0     0  /0  0
10.0.200.173         80    default         UP     20 /0  @0      TCP Verify Connection OK            0     0  /0  0
表示意味
Port 空欄サーバ自体(IP アドレス)へのヘルスチェック。Reason が ICMP Receive OK で、ICMP の応答を受け取れています。
Port 80ポート 80 へのヘルスチェック。Reason が TCP Verify Connection OK で、TCP の接続を確認できています。
Health monitor default個別のヘルスモニタを割り当てず、既定のヘルスチェックを使っています。
Status UPヘルスチェックの結果、Up と判定しています。

show slb server:リアルサーバの状態

show slb server では、リアルサーバとポートごとの接続数とパケット数、状態を確認できます。State が Up であれば正常です。

vThunder

vThunder#show slb server 
Total Number of Servers configured: 2
Total Number of Services configured: 2
                   Current = Current Connections, Total = Total Connections
                   Fwd-pkt = Forward packets, Rev-pkt = Reverse packets
Service                   Current    Total      Fwd-pkt    Rev-pkt    Peak-conn  State
---------------------------------------------------------------------------------------
Web-01:80/tcp             2          10         79         47         0          Up   
Web-01: Total             2          10         79         47         0          Up   

Web-02:80/tcp             1          9          40         29         0          Up   
Web-02: Total             1          9          40         29         0          Up

show slb service-group:サービスグループの状態

show slb service-group では、サービスグループの状態とメンバーごとの接続数を確認できます。State が All Up であれば、グループ内のすべてのメンバーが Up しています。

vThunder

vThunder#show slb service-group 
Total Number of Service Groups configured: 1
                   Current = Current Connections, Total = Total Connections
                   Fwd-p = Forward packets, Rev-p = Reverse packets
                   Peak-c = Peak connections
Service Group Name
Service                         Current    Total      Fwd-p     Rev-p     Peak-c
-----------------------------------------------------------------------------------
*sg-web               State: All Up
Web-01:80                       1          4          22        15        0        
Web-02:80                       2          3          20        12        0

show slb virtual-server:バーチャルサーバの状態

show slb virtual-server では、バーチャルサーバと Virtual Port の状態、接続数を確認できます。All Up であれば、紐付いたサービスグループのメンバーまで含めて、すべて Up しています。

vThunder

vThunder#show slb virtual-server 
Total Number of Virtual Services configured: 1
Virtual Server Name      IP              Current    Total      Request  Response Peak
Service-Group            Service         connection connection packets  packets  connection
----------------------------------------------------------------------------------------
*vip-web 10.0.10.200         All Up

   port 80  tcp                          3          7          42       27       0       
sg-web                   80/tcp          3          7          42       27       0       
Total received conn attempts on this port: 7

show session:セッション情報

show session では、処理中のセッションを確認できます。GUI と同じく、Forward がクライアント側、Reverse がサーバ側の通信です。Type の SLB-L4 は、L4 の負荷分散で処理しているセッションであることを表します。

vThunder

vThunder#show session 
    
Prot Forward Source            Forward Dest              Reverse Source            Reverse Dest              Age   Hash Flags             Type     
---------------------------------------------------------------------------------------------------------------------------------------------------    
Tcp  (伏せています):53550     10.0.10.200:80            10.0.200.100:80           (伏せています):53550     120   1    NFe0f0r0          SLB-L4     
Total Sessions:  1

show log:ログ

show log ではシステムログを確認できます。下から順に、サーバの ICMP と TCP のヘルスチェックの成功、メンバーの Up、サービスグループの Up、バーチャルサーバの Up が記録されています。

vThunder

vThunder# show log
Oct 17 2021 08:17:22 Info        [ACOS]:Virtual server vip-web is up
Oct 17 2021 08:17:22 Info        [ACOS]:Service tcp on virtual server vip-web port 80 is up.
Oct 17 2021 08:17:22 Info        [HMON]:Service-group sg-web is up.
Oct 17 2021 07:54:45 Info        [HMON]:SLB server Web-02 (10.0.200.173) TCP port 80 of group sg-web is up (enable).
Oct 17 2021 07:53:03 Info        [HMON]:SLB server Web-01 (10.0.200.100) TCP port 80 of group sg-web is up (enable).
Oct 17 2021 07:30:03 Info        [HMON]:SLB server Web-02 (10.0.200.173) port 80 is up (TCP Verify Connection OK)
Oct 17 2021 07:29:41 Info        [HMON]:SLB server Web-02 (10.0.200.173) is up (ICMP Receive OK)
Oct 17 2021 07:26:47 Info        [HMON]:SLB server Web-01 (10.0.200.100) port 80 is up (TCP Verify Connection OK)
Oct 17 2021 07:22:40 Info        [HMON]:SLB server Web-01 (10.0.200.100) is up (ICMP Receive OK)

動作確認(Web サーバ障害時)

Web-01 をシャットダウンします。Thunder はヘルスチェックで Web-01 の停止を検知し、負荷分散の対象から外します。この状態でクライアントからアクセスすると、Web-02 からだけ応答が返ります。

クライアントのブラウザ画面イメージ
http://10.0.10.200/
Web-02何度アクセスしても Web-02
図13 Web-01 の停止後は Web-02 だけが応答する(実際の画面ではなく、表示結果のイメージです)

GUI で確認する

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Servers
StatusNameIP AddressHealth Monitor
1Web-0110.0.200.100Default
tcp80
Web-0210.0.200.173Default
ADC ›› SLB ›› Service Groups
StatusNameTypeAlgorithm
2↓sg-webtcpRound Robin
Web-0180
Web-0280
ADC ›› SLB ›› Virtual Servers
StatusNameIP Address
3↓vip-web10.0.10.200
↓tcp80
図14 Web-01 停止後の Servers/Service Groups/Virtual Servers(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Web-01 の Status(赤)赤:Web-01 とそのポート tcp 80 がダウンしています。
2sg-web の Status(緑+赤の下向き矢印)緑:Up しているメンバー(Web-02)があるので、グループとしては動作しています。右下の赤い下向き矢印は、ダウンしているメンバーがあることを表します。
3vip-web の Status(緑+赤の下向き矢印)バーチャルサーバも動作を続けていますが、配下にダウンしているものがあるため、赤い下向き矢印が付きます。

CLI で確認する

show health stat:ヘルスチェックの状態

Web-01(10.0.200.100)の Status が DOWN になり、Reason は ICMP Receive Error です。サーバ自体が ICMP に応答しないため、ダウンと判定しています。

vThunder

vThunder# show health stat 

IP address           Port  Health monitor  Status Cause(Up/Down) Reason(Up/Down)                     Retry PIN
--------------------------------------------------------------------------------------------------------------------------
10.0.200.100               default         DOWN   11 /48 @8      ICMP Receive Error                  42    0  /0  0
10.0.200.173               default         UP     11 /7  @8      ICMP Receive OK                     6     0  /0  0
10.0.200.173         80    default         UP     20 /0  @0      TCP Verify Connection OK            0     0  /0  0

show slb server:リアルサーバの状態

Web-01 の State が Down になっています。

vThunder

vThunder#show slb server 
Total Number of Servers configured: 2
Total Number of Services configured: 2
                   Current = Current Connections, Total = Total Connections
                   Fwd-pkt = Forward packets, Rev-pkt = Reverse packets
Service                   Current    Total      Fwd-pkt    Rev-pkt    Peak-conn  State
---------------------------------------------------------------------------------------
Web-01:80/tcp             0          9          49         32         0          Down 
Web-01: Total             0          9          49         32         0          Down 

Web-02:80/tcp             0          8          82         54         0          Up   
Web-02: Total             0          8          82         54         0          Up

show slb service-group:サービスグループの状態

sg-web の State が Functional Up に変わりました。All Up から Functional Up に変わったことで、グループ内の一部のメンバーがダウンしていることがわかります。Up しているメンバーが残っているので、グループとしては動作しています。

vThunder

vThunder# show slb service-group 
Total Number of Service Groups configured: 1
                   Current = Current Connections, Total = Total Connections
                   Fwd-p = Forward packets, Rev-p = Reverse packets
                   Peak-c = Peak connections
Service Group Name
Service                         Current    Total      Fwd-p     Rev-p     Peak-c
-----------------------------------------------------------------------------------
*sg-web               State: Functional Up
Web-01:80                       0          9          49        32        0        
Web-02:80                       0          8          82        54        0

show slb virtual-server:バーチャルサーバの状態

vip-web も Functional Up になっています。VIP での受け付けは続いています。

vThunder

vThunder#show slb virtual-server 
Total Number of Virtual Services configured: 1
Virtual Server Name      IP              Current    Total      Request  Response Peak
Service-Group            Service         connection connection packets  packets  connection
----------------------------------------------------------------------------------------
*vip-web 10.0.10.200         Functional Up

   port 80  tcp                          0          17         131      86       0       
sg-web                   80/tcp          0          17         131      86       0       
Total received conn attempts on this port: 17

show log:ログ

下から順に、ポート 80 の TCP のヘルスチェックがタイムアウトしてポートとメンバーがダウンし、続いて ICMP のタイムアウトでサーバ自体のダウンを検知したことがわかります。

vThunder

vThunder# show log
Oct 30 2021 14:45:01 Info        [HMON]:SLB server Web-01 (10.0.200.100) is down (ICMP Timeout)
Oct 30 2021 14:44:51 Info        [HMON]:SLB server Web-01 (10.0.200.100) TCP port 80 of group sg-web is down (health-check).
Oct 30 2021 14:44:51 Info        [HMON]:SLB server Web-01 (10.0.200.100) port 80 is down (TCP Timeout)

正常時と障害時の比較

確認する対象正常時Web-01 障害時
show health statすべて UP10.0.200.100 が DOWN(ICMP Receive Error)
show slb serverWeb-01、Web-02 とも UpWeb-01 が Down
show slb service-groupAll UpFunctional Up
show slb virtual-serverAll UpFunctional Up
GUI の Statusすべて緑Web-01 は赤、sg-web と vip-web は緑+赤の下向き矢印

うまくいかないとき

状態よくある原因確認すること
サーバが DOWN(ICMP のエラー・タイムアウト)サーバが停止している。サーバや途中の FW が ICMP を止めている。Thunder からサーバへの経路がないサーバの稼働状況、Thunder からサーバへの ping、ICMP の許可
サーバは UP だがポート 80 だけ DOWN(TCP Timeout)Web サービスが止まっている。待ち受けポートが違う。FW が TCP 80 を止めているサーバで Web サービスとポート 80 の待ち受けを確認
Thunder の状態はすべて Up だが、VIP に接続できないクライアントから VIP への経路がない。Virtual Port のプロトコル・ポート番号が違うshow slb virtual-server の Total received conn attempts が増えるか
セッションはできるが応答が返らない送信元 NAT をしていない構成で、サーバの応答が Thunder を通らずに返っているサーバのデフォルトゲートウェイ(戻りの経路)、送信元 NAT の要否

まとめ

Thunder の L4 負荷分散は、Server → Service Group → Virtual Server の順に作り、Virtual Server に Service Group を紐付けて完成します。状態は GUI の各一覧のアイコンか、CLI の show コマンドで確認できます。

要素設定コマンド確認コマンド
Serverslb server <名前> <IP>
port <番号> tcp
show slb server
show health stat
Service Groupslb service-group <名前> tcp
method round-robin
member <サーバ名> <ポート>
show slb service-group
Virtual Serverslb virtual-server <名前> <VIP>
port <番号> tcp
service-group <名前>
show slb virtual-server
show session

Web サーバが1台止まっても、ヘルスチェックで検知して残りのサーバだけに振り分けるため、サービスは止まりません。そのときサービスグループとバーチャルサーバの状態は All Up から Functional Up に変わるので、監視ではこの変化を見ておくと、冗長性が失われていることに気付けます。

コメント