BIG-IPのActive/Standby構成で可用性をさらに向上させる方法をまとめます。筐体そのものが完全停止した場合はトラブルに発展する事は少ないですが、1つの物理線に障害が発生した時や中途半端に壊れた時は、切り替えるか否かを人間が予め設定しておく必要があります。
動作確認の構成
以下の構成で、可用性をさらに向上させる方法を考えます。
+----------------+ +----------------+ | (RockyLinux84) | | (RockyLinux84) | | Client50 | | Client51 | | | | | +-------+--------+ +-------+--------+ ens192 | .50 (vlan50 tagged) .51 | ens192 | 192.168.50.0/24 | +-------------------------------------+ | | 1.2 | .101 (vlan100 untagged) .101 | 1.2 +-------+--------+ 192.168.100.0/24 +-------+--------+ | | .1 .2 | | | BIG-IP +--------------------+ BIG-IP | | (bigip01) | .1.3 .1.3 | (bigip02) | +-------+--------+ +-------+--------+ 1.1 | .101 (vlan10 tagged) .102 | 1.1 | 192.168.10.0/24 | +-------------------------------------+ | | ens192 | .10 .11 | ens192 +-------+--------+ +-------+--------+ | | | | | Server10 | | Server11 | | (RockyLinux84) | | (RockyLinux84) | +----------------+ +----------------+
Failover Networkの冗長化
障害発生箇所
以下の構成でBIG-IP間の1.3のリンクで障害が発生したケースを考えます。ハートビート用の結線が1本しかない場合や二重障害含めて考慮対象とする場合は配慮が必要な障害発生パターンです。
+----------------+ +----------------+ | (RockyLinux84) | | (RockyLinux84) | | Client50 | | Client51 | | | | | +-------+--------+ +-------+--------+ ens192 | .50 (vlan50 tagged) .51 | ens192 | 192.168.50.0/24 | +-------------------------------------+ | | 1.2 | .101 (vlan100 untagged) .101 | 1.2 +-------+--------+ 192.168.100.0/24 +-------+--------+ | | .1 .2 | | | BIG-IP +-------- x -------+ BIG-IP | | (bigip01) | .1.3 .1.3 | (bigip02) | +-------+--------+ +-------+--------+ 1.1 | .101 (vlan10 tagged) .102 | 1.1 | 192.168.10.0/24 | +-------------------------------------+ | | ens192 | .10 .11 | ens192 +-------+--------+ +-------+--------+ | | | | | Server10 | | Server11 | | (RockyLinux84) | | (RockyLinux84) | +----------------+ +----------------+
発生する問題
vCenterでbigip01の「接続中」のチェックボックスを外す事で障害を再現させます。
この障害が発生すると、Failover Networkを介して互いが疎通できない状態となるため、bigip01, bigip02のそれぞれがActiveを主張する「スプリットブレイン」と呼ばれる状態になります。
bigipの周囲の環境次第では全通信断となりかねない、ネットワーク担当者が一番気をつけなければならない障害発生パターンのひとつです。
以下スクリーンショットの通り、bigip01, bigip02の両者がactiveになっている事が分かります。
回避策
Failover Networkを複数設定する事で両方がActiveになるのを避ける事ができます。Failover Networkはマネジメントポートを使う事もできます。
それでは具体的に設定してみましょう。
「Device Management」「Devices」「Failover Network」の順に画面遷移し、「Create」を押下します。
「Address」に「Management Address」を入力し、「Finished」を押下します。
Failover Networkに2つの設定値が入力されている事を確認します。Failover Networkはconfig syncされない設定ですので、bigip01, bigip02の両方に設定を入れて下さい。
再度、BIG-IPの1.3に障害を発生させます。今度は、bigip02のみがActiveになっている事が読み取れます。
HA Group – Poolによる監視
障害発生箇所
以下の構成でBIG-IP間の1.2のリンクで障害が発生したケースを考えます。1.2に障害が発生してもBIG-IPは切り替わりが発生せず、依然としてbigip01はActiveのままになります。Internal(下記構成図ならば1.1)またはExternal(下記構成図ならば1.2)のいずれか片方に障害が発生した時に切り替わりが発生するようにするには、HA Groupと呼ばれる設定が必要です。
+----------------+ +----------------+ | (RockyLinux84) | | (RockyLinux84) | | Client50 | | Client51 | | | | | +-------+--------+ +-------+--------+ ens192 | .50 (vlan50 tagged) .51 | ens192 | 192.168.50.0/24 | +-------------------------------------+ | 1.2 .101 (vlan100 untagged) .101 | 1.2 +-------x--------+ 192.168.100.0/24 +-------+--------+ | | .1 .2 | | | BIG-IP +--------------------+ BIG-IP | | (bigip01) | .1.3 .1.3 | (bigip02) | +-------+--------+ +-------+--------+ 1.1 | .101 (vlan10 tagged) .102 | 1.1 | 192.168.10.0/24 | +-------------------------------------+ | | ens192 | .10 .11 | ens192 +-------+--------+ +-------+--------+ | | | | | Server10 | | Server11 | | (RockyLinux84) | | (RockyLinux84) | +----------------+ +----------------+
HA Groupで監視できるのは、「LTM Pool」「trunk(Link Aggregation)」のいずれかです。仮想環境では「trunk(Link Aggregation)」の再現が難しいため、このページでは「LTM Pool」の方法のみを重点的に紹介します。
発生する問題
vCenterでbigip01の「接続中」のチェックボックスを外す事で障害を再現させます。
障害が発生してもbigip01がActiveのままである事が読み取れます。
回避策
Client50へping監視を行い、監視結果に応じてActive/Standbyを切り替えます。検証シナリオの都合上Client50への監視となっていますが、実践ではデフォルトゲートウェイなどを監視すると良いでしょう。
LTM Pool作成
「Local Traffic」「Pools」の順に画面遷移し、「Create」を押下します。
「Name」には何か分かりやすい名前を入力します。「Health Monitors」は「gateway_icmp」を選びます。
「New Members」の「Address」「Service Port」を入力し、「Add」を押下します。
Membersにノードが追加された事を確認します。
「Finished」を押下します。
同様の操作を繰り返し、vlan10, vlan50の両方を監視します。
これをCLIで操作する場合は以下のようになります。
create ltm node 192.168.50.50 address 192.168.50.50 create ltm pool POOL_MONITOR_VLAN0050 members replace-all-with { 192.168.50.50:any } monitor gateway_icmp create ltm node 192.168.10.10 address 192.168.10.10 create ltm pool POOL_MONITOR_VLAN0010 members replace-all-with { 192.168.10.10:any } monitor gateway_icmp
LTMの設定はActive/Standby間で同期される設定です。自動で同期しない設定にしている方は、手動で同期してください。
run cm config-sync to-group Device-Group-001
設定後、ping監視に成功し、POOLがavailable状態である事を確認します。GUIならば、緑色で表示されている事を確認します。
CLIで確認する場合は以下の通りです。
root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# show ltm pool POOL_MONITOR_VLAN0010 -------------------------------------------------------------------------------- Ltm::Pool: POOL_MONITOR_VLAN0010 -------------------------------------------------------------------------------- Status Availability : available State : enabled Reason : The pool is available Monitor : gateway_icmp Minimum Active Members : 0 Priority Groups : 0/0/0 (highest/current/lowest) Current Active Members : 1 Available Members : 1 Total Members : 1 Total Requests : 0 Current Sessions : 0 Traffic ServerSide Bits In 0 Bits Out 0 Packets In 0 Packets Out 0 Current Connections 0 Maximum Connections 0 Total Connections 0 Connection Queue Pool Pool and members Number of connections queued now 0 0 Number of connections serviced 0 0 Queue head entry age (ms) 0 0 Maximum queue entry age ever (ms) 0 0 Maximum queue entry age recently (ms) 0 0 Average queue entry age (ms) 0 0 Message Routing Framework In Out Message 0 0 Request 0 0 Response 0 0 root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# show ltm pool POOL_MONITOR_VLAN0050 -------------------------------------------------------------------------------- Ltm::Pool: POOL_MONITOR_VLAN0050 -------------------------------------------------------------------------------- Status Availability : available State : enabled Reason : The pool is available Monitor : gateway_icmp Minimum Active Members : 0 Priority Groups : 0/0/0 (highest/current/lowest) Current Active Members : 1 Available Members : 1 Total Members : 1 Total Requests : 0 Current Sessions : 0 Traffic ServerSide Bits In 0 Bits Out 0 Packets In 0 Packets Out 0 Current Connections 0 Maximum Connections 0 Total Connections 0 Connection Queue Pool Pool and members Number of connections queued now 0 0 Number of connections serviced 0 0 Queue head entry age (ms) 0 0 Maximum queue entry age ever (ms) 0 0 Maximum queue entry age recently (ms) 0 0 Average queue entry age (ms) 0 0 Message Routing Framework In Out Message 0 0 Request 0 0 Response 0 0 root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)#
HA Group Listの作成
「System」「High Availiability」「HA Group List」の順に画面遷移し、「Create」を押下します。
「HA Gropu Name」には何か分かりやすい名前を入力します。
「Pools」の「Add」を押下します。
「Pools」をプルダウンから選択し、HA Scoreの欄は10より大きい値を入力します。スクリーンショット上では HA Scoreは30としています。
以上の設定完了後、「Add」を押下します。
同様の操作を繰り返し、Poolを2つの状態にします。
HA Group ListはHA Scoreと呼ばれるスコアに基づいてActive/Standbyが決定されます。現在Activeとなっている機器にはActive Bonusとして10が加算されます。その他、前述のPoolsの設定により、Poolsがavailableの状態である時のみ30 x 2のスコアが加算されます。
以上の設定が完了したら、「Create HA Group」を押下します。なお、この設定はconfig syncで同期される設定ではないので、bigip01, bigip02の両方に設定を入れて下さい。
traffic groupの編集
「Device Management」「Traffic Groups」の順に画面遷移し、「traffic-gropu-1」を押下します。
「HA Group」には先ほど作成したHA Groupをプルダウンから選びます。「Failover Method」は「Failover to Device With Best HA Score」に変更します。
設定変更後、「Save」を押下します。
障害発生時の挙動確認
障害発生前のHA Scoreを確認します。bigip01はActive Bounusが加算され70点で、bigip02はActive Bonusがないので60点になります。
[bigip01] root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# show sys ha-group --------------------------- Sys::HA Group: HA-GROUP-001 --------------------------- State enabled Active Bonus 10 Score 60 root@(bigip01)(cfg-sync In Sync)(Active)(/Common)(tmos)# [bigip02] root@(bigip02)(cfg-sync In Sync)(Standby)(/Common)(tmos)# show sys ha-group --------------------------- Sys::HA Group: HA-GROUP-001 --------------------------- State enabled Active Bonus 10 Score 60 root@(bigip02)(cfg-sync In Sync)(Standby)(/Common)(tmos)#
この状態でvCenterにて「接続中」のチェックを外し、擬似的に障害を発生させます。
しばらく待つと、HA Groupの画面で監視NGとなっている事が読み取れ、さらにActive Standbyが切り替わっている事も読み取れます。
HA Scoreを確認すると以下の通りです。
[bigip01] root@(bigip01)(cfg-sync In Sync)(Standby)(/Common)(tmos)# show sys ha-group --------------------------- Sys::HA Group: HA-GROUP-001 --------------------------- State enabled Active Bonus 10 Score 0 root@(bigip01)(cfg-sync In Sync)(Standby)(/Common)(tmos)# [bigip02] root@(bigip02)(cfg-sync In Sync)(Active)(/Common)(tmos)# show sys ha-group --------------------------- Sys::HA Group: HA-GROUP-001 --------------------------- State enabled Active Bonus 10 Score 60 root@(bigip02)(cfg-sync In Sync)(Active)(/Common)(tmos)#