高可用性のために 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
}
バックアップ マシンにも同じ構成があり、正常に動作していますが、20 番目の IP までのみです。
私は見つけた方法この問題について議論しています。基本的に、彼らは 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 でのみフェールオーバーが発生します。
答え1
現在のアーキテクチャを変更せずに最も簡単な解決策は、仮想IPアドレスを除外。 例えば
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
}
}
仮想IPアドレスを除外keepalived がサーバー上で起動および停止する IP アドレスのリストが含まれていますが、それらは VRRP パケット自体には含まれていないため、20 個の IP アドレス制限にはカウントされません。
私の設定では、専用のIPを割り当てるようにしています。仮想IPアドレスつまり、VRRPパケットに含まれるものだけを扱い、他のすべてを仮想IPアドレスを除外顧客が離脱したという理由だけでメイン IP を変更する必要が生じないようにするため、これは良いアイデアです。
答え2
こんな古い質問に答えて申し訳ありませんが、この制限はもう存在しないと思います。ドキュメンテーション 仮想 IP の最大数について。誰かこれについて私をサポートしてくれませんか? ありがとう!