この度、自宅検証環境にESXi用のサーバーが1台増設することができ、自宅のネットワークのゲートウェイとして利用しているVyOSの冗長化が必要となったため、VRRPを実装してみた。さらに、簡単な障害時の切り替わり動作の確認を行ってみた。
環境
環境は以下の通りとなる。利用しているVyOSのバージョンは1.1.8となる。各VyOSのインターフェース設定は以下の通り。
・VyOS#1
vyos@t3033vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 192.168.33.33/24 u/u
eth1 192.168.11.33/24 u/u
lo 127.0.0.1/8 u/u
::1/128
------------------------------
・VyOS#2
vyos@t3032vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 192.168.33.32/24 u/u
eth1 192.168.11.32/24 u/u
lo 127.0.0.1/8 u/u
::1/128
------------------------------
VRRPの設定
以下設定を投入する。VyOS#1とVyOS#2の設定の違いは、Priorityの箇所のみである。Priorityの値が高いVyOSが通常Masterとして動作する (今回であればVyOS#1)。・VyOS#1
------------------------------
# eth0側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.33.31に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.33.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth0 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を150に設定 (大きいほど優先される)
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 150
# eth1側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.11.31に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.11.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth1 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth1 vrrp vrrp-group 10 priority 150
------------------------------
・VyOS#2
------------------------------
# eth0側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.33.31に設定
set interfaces ethernet eth0 vrrp vrrp-group 10 virtual-address 192.168.33.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth0 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth0 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth0 vrrp vrrp-group 10 priority 100
# eth1側の設定
# アドバタイズの間隔を1秒間毎に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 advertise-interval 1
# VIPを192.168.11.31に設定
set interfaces ethernet eth1 vrrp vrrp-group 10 virtual-address 192.168.11.31/24
# 自動フェイルバックをONにする
set interfaces ethernet eth1 vrrp vrrp-group 10 preempt true
# eth0とeth1を連動して切り替えるための設定
set interfaces ethernet eth1 vrrp vrrp-group 10 sync-group syncgrp01
# Masterになる優先度を100に設定 (大きいほど優先される)
set interfaces ethernet eth1 vrrp vrrp-group 10 priority 100
------------------------------
設定投入後は、VyOS#1、VyOS#2の順にcommit、saveしておこう。
VRRPの状態確認
設定後、VRRPの状態を確認してみると、VyOS#1側がMASTER、VyOS#2がBACKUPとして動作していることがわかる。・VyOS#1
vyos@t3033vyos:~$ show vrrp
------------------------------
RFC Addr Last Sync
Interface Group State Compliant Owner Transition Group
--------- ----- ----- --------- ----- ---------- -----
eth0 10 MASTER no no 22m11s syncgrp01
eth1 10 MASTER no no 22m10s syncgrp01
------------------------------
vyos@t3033vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 192.168.33.33/24 u/u
192.168.33.31/24
eth1 192.168.11.33/24 u/u
192.168.11.31/24
lo 127.0.0.1/8 u/u
::1/128
------------------------------
・VyOS#2
vyos@t3032vyos:~$ show vrrp
------------------------------
RFC Addr Last Sync
Interface Group State Compliant Owner Transition Group
--------- ----- ----- --------- ----- ---------- -----
eth0 10 BACKUP no no 22m3s syncgrp01
eth1 10 BACKUP no no 22m3s syncgrp01
------------------------------
vyos@t3032vyos:~$ show interfaces
------------------------------
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 192.168.33.32/24 u/u
eth1 192.168.11.32/24 u/u
lo 127.0.0.1/8 u/u
::1/128
------------------------------
VRRPの切り替わり動作確認 (筐体障害編)
VRRPの冗長性確認を行うために、実際にMaster側のVyOS#1を停止し、切り替わり動作の確認を行う。まずは、192.168.11.82の端末のARPテーブルを確認してみると、VIPはVyOS#1側のMACアドレスとなっていることがわかる。
C:\Users\tadmin>arp -a
------------------------------
インターフェイス: 192.168.11.82 --- 0x10
インターネット アドレス 物理アドレス 種類
192.168.11.31 00-0c-29-cf-37-09 動的 ←★VIP
192.168.11.32 00-0c-29-77-3c-a4 動的 ←★VyOS#2のIP
192.168.11.33 00-0c-29-cf-37-09 動的 ←★VyOS#1のIP
------------------------------
Pingの結果は以下の通り、1回の欠けが発生したものの、通信は正常に回復した。
C:\Users\tadmin>ping 192.168.33.1 -t
------------------------------
192.168.33.1 に ping を送信しています 32 バイトのデータ:
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
------------------------------
再度、192.168.11.82の端末のARPテーブルを確認すると、VIPはVyOS#2側のMACアドレスとなっていることがわかる。
C:\Users\tadmin>arp -a
------------------------------
インターフェイス: 192.168.11.82 --- 0x10
インターネット アドレス 物理アドレス 種類
192.168.11.31 00-0c-29-77-3c-a4 動的 ←★VIP
192.168.11.32 00-0c-29-77-3c-a4 動的 ←★VyOS#2のIP
192.168.11.33 00-0c-29-cf-37-09 動的 ←★VyOS#1のIP
------------------------------
VyOS#2のVRRPのステータスもMASTERになっている。
vyos@t3032vyos:~$ show vrrp
------------------------------
RFC Addr Last Sync
Interface Group State Compliant Owner Transition Group
--------- ----- ----- --------- ----- ---------- -----
eth0 10 MASTER no no 4s syncgrp01
eth1 10 MASTER no no 3s syncgrp01
------------------------------
なお、VRRPの切り替わり時間だが、デフォルトで1秒間隔のアドバタイズをMasterルーターが送信し続け、Backupルーターはアドバタイズを受信することでMasterルーターが正常に動作していることを検知する。Backupルーターでアドバタイズが受信できなくなると、3秒間 (アドバタイズ間隔の3倍の時間) 待機し、さらに受信ができない場合は、BackupルーターはMasterルーターに昇格するという動作をする。
VRRPの動作確認 (NIC障害編)
先ほどはVyOS#1を停止させたが、今度はVyOS#1のeth0をLinkDownさせた場合の切り替わり動作を確認する。192.168.11.82の端末からPingを飛ばしながら、ESXiよりVyOS#1のeth0の仮想NICを切断してみる。
今度は2回の欠けが発生したが、前述したとおり、最大3秒間の切り替わり時間があるので、想定通りの結果と言えるだろう。
C:\Users\tadmin>ping 192.168.33.1 -t
------------------------------
192.168.33.1 に ping を送信しています 32 バイトのデータ:
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.33.1 からの応答: バイト数 =32 時間 <1ms TTL=63
------------------------------
なお、VyOSのステータスは以下の通りとなる。NIC障害の場合、VRRPのStateが「FAULT」になる。
・VyOS#1
vyos@t3033vyos:~$ show vrrp
------------------------------
RFC Addr Last Sync
Interface Group State Compliant Owner Transition Group
--------- ----- ----- --------- ----- ---------- -----
eth0 10 FAULT no no 1m29s syncgrp01
eth1 10 FAULT no no 1m29s syncgrp01
------------------------------
・VyOS#2
vyos@t3032vyos:~$ show vrrp
------------------------------
RFC Addr Last Sync
Interface Group State Compliant Owner Transition Group
--------- ----- ----- --------- ----- ---------- -----
eth0 10 MASTER no no 3m12s syncgrp01
eth1 10 MASTER no no 3m15s syncgrp01
------------------------------
0 件のコメント:
コメントを投稿