VRRPだけでも障害時は数秒で切り替わることが確認できており、特に動作に不満はないのだが、VyOSではTCPやUDPのコネクション情報をフェイルオーバー時に引き継ぐ「ステートフルフェイルオーバー」という機能が実装できることを知った。これはVyOSでは「conntrack-sync」と呼ばれる機能となる。本記事では、VyOSでのconntrack-syncの設定を行い、動作確認をしてみた。
環境
環境は以下の通りとなる。利用しているVyOSのバージョンは1.1.8となる。VRRPの設定
VyOSでVRRPを実装する方法は、以下の過去記事に記載しており、本記事ではVyOS2台でVRRPの構成が組まれていることが前提となる。conntrack-syncを設定する
設定は2台のVyOS両方に対し、同じコマンドで設定する。VyOS#1設定
まずはVyOS#1の設定をコメント付きで記載する。vyos@t3033vyos# set service conntrack-sync accept-protocol 'tcp,udp,icmp'
→★conntrack-syncで同期するプロトコルとしてTCP/UDP/ICMPを設定
vyos@t3033vyos# set service conntrack-sync failover-mechanism vrrp sync-group syncgrp01
→★フェイルオーバーのタイプをVRRPに設定
vyos@t3033vyos# set service conntrack-sync interface eth1
→★情報同期に利用するインタフェースを指定
vyos@t3033vyos# compare
[edit service]
+conntrack-sync {
+ accept-protocol tcp,udp,icmp
+ event-listen-queue-size 8
+ failover-mechanism {
+ vrrp {
+ sync-group syncgrp01
+ }
+ }
+ interface eth1
+ mcast-group 225.0.0.50
+ sync-queue-size 1
+}
vyos@t3033vyos# commit
vyos@t3033vyos# save
VyOS#2設定
続いてVyOS#2の設定となるが、コマンドは完全に同一となる。vyos@t3032vyos# set service conntrack-sync accept-protocol 'tcp,udp,icmp'
vyos@t3032vyos# set service conntrack-sync failover-mechanism vrrp sync-group syncgrp01
vyos@t3032vyos# set service conntrack-sync interface eth1
vyos@t3032vyos# compare
[edit service]
+conntrack-sync {
+ accept-protocol tcp,udp,icmp
+ event-listen-queue-size 8
+ failover-mechanism {
+ vrrp {
+ sync-group syncgrp01
+ }
+ }
+ interface eth1
+ mcast-group 225.0.0.50
+ sync-queue-size 1
+}
vyos@t3032vyos# commit
vyos@t3032vyos# save
動作確認
conntrack-syncのステータスを確認
設定が完了したら、conntrack-syncのステータスを確認する。VyOS#1がMaster、VyOS#2がStandbyになっている。- VyOS#1
vyos@t3033vyos:~$ show conntrack-sync status
sync-interface : eth1
failover-mechanism : vrrp [sync-group syncgrp01]
last state transition : MASTER at Sun Jan 20 06:11:04 JST 2019
ExpectationSync : disabled
- VyOS#2
vyos@t3032vyos:~$ show conntrack-sync status
sync-interface : eth1
failover-mechanism : vrrp [sync-group syncgrp01]
last state transition : BACKUP at Sun Jan 20 06:13:05 JST 2019
ExpectationSync : disabled
保持しているコネクション情報を確認
conntrack-syncでは、2つのコネクション情報を管理している。- 自身のもつコネクション情報(Internal Cache)
- 対向ルーターが持つコネクション情報(External Cache)
- VyOS#1
vyos@t3033vyos:~$ show conntrack-sync statistics
Main Table Statistics:
cache internal:
current active connections: 128
connections created: 138830 failed: 0
connections updated: 431529 failed: 0
connections destroyed: 138702 failed: 0
cache external:
current active connections: 19
connections created: 77975 failed: 0
connections updated: 4198 failed: 0
connections destroyed: 77956 failed: 0
traffic processed:
0 Bytes 0 Pckts
multicast traffic (active device=eth1):
39144744 Bytes sent 7447944 Bytes recv
546040 Pckts sent 116175 Pckts recv
0 Error send 0 Error recv
message tracking:
0 Malformed msgs 537 Lost msgs
- VyOS#2
yos@t3032vyos:~$ show conntrack-sync statistics
Main Table Statistics:
cache internal:
current active connections: 12
connections created: 83300 failed: 0
connections updated: 6895 failed: 0
connections destroyed: 83288 failed: 0
cache external:
current active connections: 128
connections created: 167162 failed: 0
connections updated: 349591 failed: 0
connections destroyed: 167034 failed: 0
traffic processed:
0 Bytes 0 Pckts
multicast traffic (active device=eth1):
7474996 Bytes sent 38942708 Bytes recv
116529 Pckts sent 543314 Pckts recv
0 Error send 0 Error recv
message tracking:
0 Malformed msgs 2418 Lost msgs
フェイルオーバー時の動作を確認する
VyOS#1を停止させ、VRRPがフェイルオーバーした際のconntrack-syncの動作確認を行う。まずは、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 4s syncgrp01
次にconntrack-syncのステータス確認を行うと、こちらもMASTERになっている。vyos@t3032vyos:~$ show conntrack-sync status
sync-interface : eth1
failover-mechanism : vrrp [sync-group syncgrp01]
last state transition : MASTER at Mon Jan 21 06:47:09 JST 2019
ExpectationSync : disabled
コネクション情報を確認すると、VyOS#1のコネクション情報がVyOS#2に引き継がれており、Internal Cacheが増加していることがわかる。vyos@t3032vyos:~$ show conntrack-sync statistics
Main Table Statistics:
cache internal:
current active connections: 157
connections created: 84647 failed: 0
connections updated: 7251 failed: 0
connections destroyed: 84490 failed: 0
cache external:
current active connections: 0
connections created: 173852 failed: 0
connections updated: 370742 failed: 0
connections destroyed: 173852 failed: 0
traffic processed:
0 Bytes 0 Pckts
multicast traffic (active device=eth1):
7660420 Bytes sent 41014156 Bytes recv
121520 Pckts sent 572546 Pckts recv
0 Error send 0 Error recv
message tracking:
0 Malformed msgs 2418 Lost msgs
0 件のコメント:
コメントを投稿