高可用性のために2台のDebianマシンでkeepalivedをセットアップしましたが、vrrp_instance
に割り当てることができる仮想IPの最大数に達しました。 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でのみ失敗します。
現在のアーキテクチャを変更しない最も簡単な解決策は、virtual_ipaddress_excludedを使用することです。例えば
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
}
virtual_ipaddress_excluded {
10.200.85.101
. all the way to
10.200.85.200
}
}
virtual_ipaddress_excludedには、keepalivedがサーバーで起動および停止するIPアドレスのリストが含まれていますが、VRRPパケット自体には含まれていないため、20 IPアドレスの制限にはカウントされません。
私の構成では、特にvirtual_ipaddressにIPを割り当てたいと思います。つまり、VRRPパケットに含まれ、他のすべてをvirtual_ipaddress_excludedに入れるものです。これは、顧客が去ったからといってメインIPを変更したくないので、良い考えです。