SEIL/x86 FujiとkeepalivedでVRRP
先日書いた 味見日報 - MAP-E は仕様変更があった場合に急に繋がらなくなる可能性もありそうなので、既存ルーターであるSEIL/x86 FujiとVRRPを組んで、MAP-Eゲートウェイが使用できない場合にPPPoE回線側にフォールバックするようにします。
味見日報 - MAP-E (2)
とも言う。
環境
SEIL/x86 Fuji
|
|
MAP-Eゲートウェイ
|
|
IPアドレスは以下のようにします。
- 192.168.1.1: 既存ルーターのVIP
- 192.168.1.2: 既存ルーター#1の実IP(SEIL側。PPPoEへのフォールバック用)
- 192.168.1.4: MAP-EゲートウェイのVIP
- 192.168.1.5: MAP-Eゲートウェイの実IP(MAP-Eゲートウェイ側)
設定
VRRPは以下の設定を行います。
- Priority
- MAP-Eゲートウェイ: 245
- 既存ルーター(SEIL): 240
- Preempt: On
- MAP-Eが使えるときは常にMAP-Eを優先します
- vrid: 4
- VIPの末尾から採用
SEIL/x86 Fuji vrrp configuration
1行だけ。
|
|
!!! note SEIL/x86 Fujiはauthenticationをサポートしていない(RFC3768まで)ので、認証コードもありません。RFC5798があれば…
* https://www.seil.jp/doc/index.html#fn/vrrp/vrrpv2.html
* https://tools.ietf.org/html/rfc5798
keepalived configuration
keepalivedでは、VRRPの設定以外に以下の設定も盛り込みます。
- MAP-Eトンネル経由の通信で、想定したグローバルIPv4アドレスを使っているかチェックする
Install keepalived
まずはkeepalivedを入れます。
|
|
Create MAP-E tunnel check script
MAP-Eのトンネルが機能しているかチェックするスクリプトを書きます。
|
|
!!! note
* 192.0.2.1
は文書用アドレスなので、実際は自身の環境におけるMAP-EのグローバルIPv4アドレスを入れます。
* https://api.ipify.org
は重くて応答が遅い場合があるので https://inet-ip.info/ip
や https://checkip.amazonaws.com
など、自分の環境から安定して応答が得られそうなサービスを使います。僕は最近 https://inet-ip.info/ip
に変えました。
実行権限を与えておきます。成功時にexit code 0を返すようになっていればOKです。 この場合、アドレスが一致しないと1が返ります。
|
|
Create keepalived.conf
/etc/keepalived/keepalived.conf を書きます。先ほど書いたスクリプトを vrrp_script
の script
に指定します。
|
|
!!! note
interval
/ fall
/ rise
/ timeout
の値は適当ですので、環境に合わせて設定してください。
Start keepalived
後は起動して完了です。
|
|
状態確認
SEIL/x86 Fuji vrrp status
|
|
keepalived status
keepalivedのログから最終ステートがMASTERなのを確認します。
|
|
keepalivedは/32のアドレスを付与するので、指定したアドレスを持っていればOKです。
|
|
その他
いつ切り替わったか気になる時は Qiita - keepalivedの通知をSlackへ流す 設定を追加しておくと良いと思います。
内部NWでメールを飛ばす場合は特に気にならないのですが、Slack通知を使う場合はMAP-Eの接続が途絶えた場合に通知経路をどうするか考える必要がありそうです。
雑な考えだと hooks.slack.com
は1つのAレコードしか持っていない気がするので、FAULTした場合は以下のようにSlack向けの経路を一時的に設定することで通知の欠損を回避できると思います。
|
|
トンネル疎通確認用の経路だけ常にトンネルに向けておいて、keepalivedのnotify契機でデフォルトルートを設定する方が妥当でしょうか。 この辺りは考えだすと止まらないので一旦棚上げにしてしまいます。
終わり
RFC準拠だからSEILともVRRPするのは問題ないと思っていたので、フォールバックの仕組みとしては問題なく動きそう。
障害発生時やMAP-Eの仕様変更があった時に上手く気付けると良いなぁ。