【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) の設定 (インライン構成)

サーバ負荷分散入門
サーバ負荷分散入門

posted with amazlet at 19.11.27
みやた ひろし
SBクリエイティブ (2014-10-05)
売り上げランキング: 68,658

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 1ethernet 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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です