【A10 Thunder】VRRP-Aによる冗長化設定
A10ネットワークス社のロードバランサ、ADC (Application Delivery Controller) 製品であるThunderシリーズについて、VRRP-Aによる冗長化設定を紹介します。機器の冗長化を行うことで、障害発生時のシステム影響を最小限に抑えることが可能になります。
[今までのA10 Thunder 設定情報記事]
【A10 Thunder】運用管理系の設定
【A10 Thunder】L2 / L3ネットワーク設定
【A10 Thunder】VRRP-Aによる冗長化設定
【A10 Thunder】L4 負荷分散 (SLB) の設定 (インライン構成)
SBクリエイティブ (2014-10-05)
売り上げランキング: 68,658
Contents
VRRP-Aの概要
VRRP-Aは、A10 ThunderのOSであるACOSに搭載された冗長化機能です。同じような名前のルータ冗長化プロトコルVRRPとは全くの別物なので注意が必要です。VRRP-Aは、以下のリソースについて冗長化を行います。
- バーチャルサーバIPアドレス (ロードバランス対象サービス用のVIP)
- フローティングIPアドレス (筐体インターフェース冗長化用のVIP)
- NATプール
- Source NATのレンジリストとマッピング
VRRP-A構成の代表としてトラフィックを処理する機器をアクティブ機、アクティブ機が停止した際に通信を引き継ぐ機器をスタンバイ機と呼称します。
VRRP-AではVRIDという単位で、上記冗長化対象リソースをグルーピングします。負荷分散対象のサービスごとにVRIDを作成することで、メンテナンス時のフェイルオーバ対象を分離したり、VRIDごとにプライオリティを変更してアクティブ機を分散することができます。
前提条件
以下の前提条件で検証を行いました。
- HW: VirtualBox上の仮想マシン
- OS: vThunder ACOS 4.1.0-P9
- VRRP-Aに関係のない管理設定、ルーティング設定、ロードバランス設定は、事前に設定が行われていること
ネットワーク構成は、以下の通りです。インターフェースは、クライアント側、サーバ側、VRRP-Aのセッション同期およびハートビート通信用の3セグメント構成です。
後述のコマンド例で、プロンプト文字が(config)#
の箇所は、configure terminal
でコンフィギュレーションモードに入った状態で実行してください。
プロンプト文字が#
の箇所は、特権モードまたはコンフィギュレーションモードで実行してください。
設定手順
インターフェースのIPアドレス設定
インターフェースにIPアドレスを設定します。以下はアクティブ機の例です。スタンバイ機は、IPアドレスを読み替えて設定してください。
(config)# interface ethernet 1
(config-if:ethernet:1)# enable
(config-if:ethernet:1)# ip address 10.0.10.1 /24
(config-if:ethernet:1)# exit
(config)# interface ethernet 2
(config-if:ethernet:2)# enable
(config-if:ethernet:2)# ip address 10.0.20.1 /24
(config-if:ethernet:2)# exit
(config)# interface ethernet 3
(config-if:ethernet:3)# enable
(config-if:ethernet:3)# ip address 10.0.30.1 /24
(config-if:ethernet:3)# exit
設定後のインターフェースを確認します。
以下は、1号機の結果です。
# show interfaces brief
Port Link Dupl Speed Trunk Vlan MAC IP Address IPs Name
------------------------------------------------------------------------------------
mgmt Up Full 1000 N/A N/A 0800.27a8.a0d0 10.0.0.1/24 1
1 Up Full 10000 None 1 0800.2734.095a 10.0.10.1/24 1
2 Up Full 10000 None 1 0800.27ec.888f 10.0.20.1/24 1
3 Up Full 10000 None 1 0800.27ec.c040 10.0.30.1/24 1
以下は、2号機の結果です。
#show interfaces brief
Port Link Dupl Speed Trunk Vlan MAC IP Address IPs Name
------------------------------------------------------------------------------------
mgmt Up Full 1000 N/A N/A 0800.2780.28c3 10.0.0.2/24 1
1 Up Full 10000 None 1 0800.27da.bd3f 10.0.10.2/24 1
2 Up Full 10000 None 1 0800.271f.cc72 10.0.20.2/24 1
3 Up Full 10000 None 1 0800.2740.5087 10.0.30.2/24 1
VRRP-Aの基本設定
VRRP-AのグループIDとデバイスIDについて設定します。
2号機は、device-id
を2に指定してください。それ以外の行は、2台でパラメータを揃えます。
(config)# vrrp-a common
(config-common)# set-id 1 # VRRP-Aグループで一意のIDを設定
(config-common)# device-id 1 # デバイスごとのIDを設定
(config-common)# disable-default-vrrid # デフォルトのVRIDを無効化
(config-common)# enable # VRRP-A機能を有効化
(config-common)# exit
VRRP-A用インターフェースの設定
VRRP-Aの冗長化管理対象にするインターフェースを設定します。
クライアントから通信を受け取るインターフェースはrouter-interface
、サーバ側ネットワークに接続されたインターフェースはserver-interface
を指定します。
サービス通信が流れるインターフェースにハートビート通信を流すのは好ましくないので、ethernet 1
とethernet 2
にはそれぞれno-heartbeat
を指定します。
(config)# vrrp-a interface ethernet 1
(config-ethernet:1)# router-interface # クライアント側インターフェース
(config-ethernet:1)# no-heartbeat # ハートビート通信を流さない
(config-ethernet:1)# exit
(config)# vrrp-a interface ethernet 2
(config-ethernet:2)# server-interface # サーバ側インターフェース
(config-ethernet:2)# no-heartbeat # ハートビート通信を流さない
(config-ethernet:2)# exit
(config)# vrrp-a interface ethernet 3
(config-ethernet:3)# exit
VRRP-Aのセッション同期用通信を行うインターフェースをethernet
もしくはtrunk
で指定します。インターフェースでタグVLANを使用している場合は、末尾にvlan xx
で通信に使用するVLAN IDを指定します。
今回は、ethernet 3
を上記役割のインターフェースに設定します。
(config)# vrrp-a preferred-session-sync-port ethernet 3
仮想ルータの設定
仮想ルータの機能を持つVRIDを設定します。複数の冗長化グループを動作させたい場合は、VRIDを複数設定することもできます。
本項目で設定する内容は以下の通りです。
- フローティングIPアドレス(VIP)
- 自動フェイルバック(preempt)有無
- プライオリティ
- トラッキング
フローティングIPアドレスは、冗長化したいインターフェースと同じサブネットに所属する空きIPアドレスを指定します。フローティングIPアドレスへ通信があると、アクティブ機が通信を受け取ります。
本番環境では、自動フェイルバックを無効化することをお勧めします。問題発生時のフェイルオーバのばたつきを防止し、意図したタイミングで手動切り戻しを行うのが確実です。
自動フェイルバックを無効化する場合、スタンバイ機でpriority
のプライオリティがデフォルトの150よりも低くなるように指定してください。
トラッキング設定では、クライアント側インターフェース、サーバ側インターフェースの両方を監視し、ダウンしたら自機のプライオリティを20下げるようにします。これにより、アクティブ機のインターフェースがダウンするとVRIDのプライオリティが150 → 130に変化し、プライオリティ140のスタンバイ機がアクティブ機に昇格します。
(config)# vrrp-a vrid 1
(config-vrid:1)# floating-ip 10.0.10.3 # クライアント側インターフェースのVIP
(config-vrid:1)# floating-ip 10.0.20.3 # サーバ側インターフェースのVIP
(config-vrid:1)# preempt-mode disable # 自動フェイルバックの無効化
(config-vrid:1)# blade-parameters
(config-vrid:1-blade-parameters)# priority 130 # スタンバイ機のみ設定。デフォルトプライオリティの150から優先度を下げる
(config-vrid:1-blade-parameters)# tracking-options # 下記インターフェースがダウンすると自機のプライオリティ値を減少させる
(config-vrid:1-blade-parameters-track...)# interface ethernet 1 priority-cost 20
(config-vrid:1-blade-parameters-track...)# interface ethernet 2 priority-cost 20
(config-vrid:1-blade-parameters-track...)# exit
(config-vrid:1-blade-parameters)# exit
(config-vrid:1)# exit
ピアグループの設定
ピアグループの設定は、通常は不要です。
VRRP-Aは、マルチキャストでハートビート通信を行います。マルチキャストが使えないネットワーク環境では、ピアグループにハートビートを行うユニキャストIPアドレスを指定します。
(config)# vrrp-a peer-group # マルチキャストが使えない環境の場合に設定
(config-peer-group)# peer 10.0.30.1
(config-peer-group)# peer 10.0.30.2
バーチャルサーバの設定
バーチャルサーバに対して、VRRP-A用の設定を行います。バーチャルサーバが複数存在する場合は、各バーチャルサーバにそれぞれVRRP-Aの設定を行います。
バーチャルサーバのVIPは、2台とも同じIPアドレスを指定してください。
(config)# slb virtual-server VS-Web 10.0.10.10
(config-slb vserver)# vrid 1 # VRIDを指定
(config-slb vserver)# port 80 tcp
(config-slb vserver-vport)# ha-conn-mirror # 他のVRRP-Aメンバとのコネクション同期を有効化
(config-slb vserver-vport)# exit
(config-slb vserver)# exit
運用手順
Active / Standby 状態確認
通常状態
アクティブ機でVRRP-Aの状態を確認すると、以下のように表示されます。
State
列がアクティブ、スタンバイの状態を示しています。*
が末尾に付いているデバイスがスタンバイ機です。
# show vrrp-a
vrid 1
Unit State Weight Priority
1 (Local) Active 65534 150
became Active at: Oct 31 13:09:09 2019
for 0 Day, 0 Hour,42 min
2 (Peer) Standby 65534 140 *
vrid that is running: 1
アクティブ機リンクダウン状態
アクティブ機のインターフェースがリンクダウンが発生した場合、スタンバイ機でVRRP-Aの状態を確認すると以下のように表示されます。アクティブ機のプライオリティが20下がっていることが確認できます。
# show vrrp-a
vrid 1
Unit State Weight Priority
2 (Local) Standby 65534 140 *
became Standby at: Nov 2 07:55:38 2019
for 0 Day, 0 Hour, 1 min
1 (Peer) Active 65534 130
vrid that is running: 1
アクティブ機システムダウン状態
アクティブ機がシステムダウンしてスタンバイ機とのハートビート通信が途絶えた場合、スタンバイ機でVRRP-Aの状態を確認すると以下のように表示されます。アクティブ機がVRRP-Aのメンバとして認識されていないことがわかります。
# show vrrp-a
vrid 1
Unit State Weight Priority
2 (Local) Active 65534 140
became Active at: Nov 2 07:58:27 2019
for 0 Day, 0 Hour, 0 min
vrid that is running: 1
状態変化ログ
VRRP-Aの状態が変化すると、以下のログが出力されます。表示内容はstate switch from <変化前> to <変化後> (現在の状態)
です。0はスタンバイ、1はアクティブを示します。
# show log | grep VRRP-A
Nov 02 2019 08:05:47 Info [HA]:VRRP-A parid 0 vrid 1 state switch from 1 to 0 (Standby)
Nov 02 2019 07:58:26 Info [HA]:VRRP-A parid 0 vrid 1 state switch from 0 to 1 (Active)
手動フェイルオーバ、フェイルバック
フェイルオーバ(全VRID)
冗長系を切り替えるフェイルオーバは、Active機で実施します。
# vrrp-a force-self-standby enable
VRRP-Aの状態を確認すると、スタンバイ機に降格しました。元アクティブ機(Unit 1)にForced Standby
の表示が付き、State
列がStandby
と表示されます。
(config)# show vrrp-a
vrid 1
Unit State Weight Priority
1 (Local) Standby 65534 150 Forced Standby *
became Standby at: Nov 1 15:45:30 2019
for 0 Day, 0 Hour, 0 min
2 (Peer) Active 65534 140
vrid that is running: 1
手動フェイルオーバ(個別VRID)
個別のVRID単位でフェイルオーバする場合は、以下のようにvrid
を指定します。
(config)# vrrp-a force-self-standby vrid 1 enable
手動フェイルバック(全VRID)
フェイルバックするときは、元々のアクティブ機で強制フェイルオーバ状態を無効化します。
(config)# vrrp-a force-self-standby disable
なお、自動フェイルバックを無効化(preempt-mode disable
)している場合は、元々のスタンバイ機でもフェイルオーバコマンドを実行し、直後に強制フェイルオーバ状態を無効化する必要があります。
(config)# vrrp-a force-self-standby enable
(config)# vrrp-a force-self-standby disable
手動フェイルバック(個別VRID)
個別のVRID単位でフェイルバックするときは、元々のアクティブ機でもVRID単位で強制フェイルオーバ状態を無効化します。
(config)# vrrp-a force-self-standby vrid 1 disable
自動フェイルバックを無効化(preempt-mode disable
)している場合は、元々のスタンバイ機でもVRID単位でフェイルオーバコマンドを実行し、直後に強制フェイルオーバ状態を無効化する必要があります。
(config)# vrrp-a force-self-standby enable
(config)# vrrp-a force-self-standby disable
スタンバイ機に設定を同期
VRRP-Aでは、アクティブ機、スタンバイ機のどちらかに設定した内容は自動的に同期されません。冗長構成の機器間で設定を同期するには、アクティブ機からスタンバイ機のIPアドレス宛に設定同期コマンドを実行します。内部的にはSSHを使用するので、アクティブ機とスタンバイ機で管理ユーザの名前とパスワードが一致している必要があります。
(config)# configure sync all all-partitions <スタンバイ機のmanagementアドレス> auto-authentication
同期に成功した場合は、アクティブ機では以下のログが表示されます。
# show log | grep SYNC
Nov 01 2019 16:21:58 Notice [CLI]:HA SYNC : prepare to send
Nov 01 2019 16:21:58 Notice [CLI]:HA SYNC : prepare completely
Nov 01 2019 16:21:58 Info [CLI]:CONFIG SYNC: prepare to send sync package
Nov 01 2019 16:21:58 Info [CLI]:CONFIG SYNC : partition (shared)
Nov 01 2019 16:21:58 Info [CLI]:CONFIG SYNC : Start to prepare
Nov 01 2019 16:21:58 Info [CLI]:CONFIG SYNC: whole sync
同期を受ける側のスタンバイ機では、以下のログが表示されます。
# show log | grep SYNC
Nov 02 2019 08:17:46 Info [CLI]:CONFIG SYNC(WHOLE): completely
(略)
Nov 02 2019 08:17:29 Notice [CLI]:CONFIG SYNC: receiving HA sync package...
なお、設定同期には同期先IPアドレスへのSSH接続権限が必要です。management
以外のインターフェースと接続する場合は、アクティブ機、スタンバイ機の両方に以下の設定を追加します。
(config)# enable-management service ssh
(config-enable-management ssh)# <SSH接続を許可するインターフェース名>
(config-enable-management ssh)# exit