高可用性のために2台のDebianマシンでkeepalivedをセットアップしましたが、に割り当てることができる仮想IPの最大数に達しましたvrrp_instance
。20以上の仮想IPを構成してフェールオーバーするにはどうすればよいですか?
これは、非常に単純なセットアップです。
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
各マシンは、SSLクライアント証明書の終了とバックエンドWebサーバーへのプロキシのために、仮想IPでApache(後のNginx)バインディングも実行しています。私が非常に多くのVIPを必要とする理由は、HTTPSでVirtualHostを使用できないことです。
これが私のkeepalived.confです:
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
BACKUPマシンにも同じ構成があり、正常に機能していますが、20番目のIPまでです。
この問題を議論するHOWTOを見つけました。基本的に、VIPを1つだけ持ち、この1つのIPを「経由して」すべてのトラフィックをルーティングし、「すべてがうまくいく」ことを提案します。これは良いアプローチですか?マシンの前でpfSenseファイアウォールを実行しています。
上記のリンクから引用:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
前もって感謝します。
編集:
@David Schwartzは、ルートを追加することは理にかなっていると述べたため、pfSenseファイアウォールに静的ルートを追加しようとしましたが、期待どおりに機能しませんでした。
pfSenseルート:
Interface: LAN
Destination network: 10.200.85.200/32 (virtual IP)
Gateway: 10.200.85.100 (floating virtual IP)
Description: Route to VIP .100
また、ホストでパケット転送が有効になっていることを確認しました。
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
私はこれを間違っていますか?また、keepalived.confからすべてのVIPを削除したため、10.200.85.100のみが失敗します。