Qiitaから移動させたコンテンツです。
某所でkeepalivedを使い、VRRP構成+LVSでのロードバランサとして使用している。
このロードバランサは以下のような構成で多数のIPアドレス(SSL証明書の都合など)を設定して運用しています。
この際に追加したIPアドレスの疎通が取れないという悲しい事態が発生しました。
keepalived ロードバランサの構成(DSR構成)
VIPに対してSSLで使うためのIPアドレスをルーターからstatic routeでルーティンし、
IPアドレスを追加している。(必要に応じて追加していっている)
→ このためジワジワとロードバランサのkeepalivedに追加するIPアドレスが増えてきました。
※便宜上プライベートIPアドレスで記載してあります。
20個以上のIPアドレスをVRRPで設定できない
- 設定ファイルに21個のIPアドレスを設定設定している(※コンフィグは見本)
vrrp_instance BOND0 {
state MASTER
interface bond0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.4 dev bond0
192.168.2.1 dev bond0
192.168.2.2 dev bond0
192.168.2.3 dev bond0
192.168.2.4 dev bond0
192.168.2.5 dev bond0
192.168.2.6 dev bond0
192.168.2.7 dev bond0
192.168.2.8 dev bond0
192.168.2.9 dev bond0
192.168.2.10 dev bond0
192.168.2.11 dev bond0
192.168.2.12 dev bond0
192.168.2.13 dev bond0
192.168.2.14 dev bond0
192.168.2.15 dev bond0
192.168.2.16 dev bond0
192.168.2.17 dev bond0
192.168.2.18 dev bond0
192.168.2.19 dev bond0
192.168.2.20 dev bond0
}
}
- 21個のIPアドレスを設定したはずなのに足りない!!
# ip addr show bond0 | grep "inet 192"
inet 192.168.1.4/32 scope global bond0
inet 192.168.2.1/32 scope global bond0
inet 192.168.2.2/32 scope global bond0
inet 192.168.2.3/32 scope global bond0
inet 192.168.2.4/32 scope global bond0
inet 192.168.2.5/32 scope global bond0
inet 192.168.2.6/32 scope global bond0
inet 192.168.2.7/32 scope global bond0
inet 192.168.2.8/32 scope global bond0
inet 192.168.2.9/32 scope global bond0
inet 192.168.2.10/32 scope global bond0
inet 192.168.2.11/32 scope global bond0
inet 192.168.2.12/32 scope global bond0
inet 192.168.2.13/32 scope global bond0
inet 192.168.2.14/32 scope global bond0
inet 192.168.2.15/32 scope global bond0
inet 192.168.2.16/32 scope global bond0
inet 192.168.2.17/32 scope global bond0
inet 192.168.2.18/32 scope global bond0
inet 192.168.2.19/32 scope global bond0
実はこれ、keepalivedのドキュメントに載ってるんです。。。
http://www.keepalived.org/pdf/UserGuide.pdf
virtual_ipaddress { # Block limited to 20 IP addresses
@IP
@IP
@IP
}
20IPアドレスまで!明記されてるハズカシイ!
20個以上のIPアドレスを設定する場合
- 設定ファイルにvirtual_ipaddress_excludedを用いて追加IPアドレスを設定する(※コンフィグは見本)
vrrp_instance BOND0 {
state MASTER
interface bond0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.4 dev bond0
}
virtual_ipaddress_excluded {
192.168.2.1 dev bond0
192.168.2.2 dev bond0
192.168.2.3 dev bond0
192.168.2.4 dev bond0
192.168.2.5 dev bond0
192.168.2.6 dev bond0
192.168.2.7 dev bond0
192.168.2.8 dev bond0
192.168.2.9 dev bond0
192.168.2.10 dev bond0
192.168.2.11 dev bond0
192.168.2.12 dev bond0
192.168.2.13 dev bond0
192.168.2.14 dev bond0
192.168.2.15 dev bond0
192.168.2.16 dev bond0
192.168.2.17 dev bond0
192.168.2.18 dev bond0
192.168.2.19 dev bond0
192.168.2.20 dev bond0
}
}
- 無事20個以上のIPアドレスを設定することができました。
# ip addr show bond0 | grep "inet 192"
inet 192.168.1.4/32 scope global bond0
inet 192.168.2.1/32 scope global bond0
inet 192.168.2.2/32 scope global bond0
inet 192.168.2.3/32 scope global bond0
inet 192.168.2.4/32 scope global bond0
inet 192.168.2.5/32 scope global bond0
inet 192.168.2.6/32 scope global bond0
inet 192.168.2.7/32 scope global bond0
inet 192.168.2.8/32 scope global bond0
inet 192.168.2.9/32 scope global bond0
inet 192.168.2.10/32 scope global bond0
inet 192.168.2.11/32 scope global bond0
inet 192.168.2.12/32 scope global bond0
inet 192.168.2.13/32 scope global bond0
inet 192.168.2.14/32 scope global bond0
inet 192.168.2.15/32 scope global bond0
inet 192.168.2.16/32 scope global bond0
inet 192.168.2.17/32 scope global bond0
inet 192.168.2.18/32 scope global bond0
inet 192.168.2.19/32 scope global bond0
inet 192.168.2.20/32 scope global bond0