私はLVSベースのロードバランサーを持っていますが、これは問題なく機能しています。ハートビートを使用して2台のサーバーで実行され、フェイルオーバーを提供します。
システムに2番目のIP範囲のサポートを追加しましたが、フェイルオーバーが発生すると、引き継ぐサーバーは、その範囲のルートを削除して再度追加するまで、この2番目の範囲のIPをARPできません。
フェイルオーバー直後にアクティブなロードバランサーに表示される内容の詳細は次のとおりです。
# arp
foo1.example.com ether 00:20:ED:1A:0C:82 C eth0
foo2.example.com ether 00:1E:C9:B0:F6:FE C eth0
bar1.example.com (incomplete) eth0
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
2.2.2.128 * 255.255.255.192 U 0 0 0 eth0
1.1.1.0 * 255.255.255.0 U 0 0 0 eth0
default 1.1.1.1 0.0.0.0 UG 100 0 0 eth0
そのため、2.2.2。*ネットブロックにあるbar1.example.comをARPすることはできません。
私が見つけたのは、ネットブロックのルートを削除して追加すると問題が解決するということです
ip route del 2.2.2.128/26 dev eth0
ip route add 2.2.2.128/26 dev eth0
Bar1.example.comにpingを実行してARPルックアップをトリガーすると、ARPキャッシュに次のように表示されます。
bar1.example.com ether 00:22:19:51:71:E4 C eth0
ここで何が起こっているのか、またはハートビートデーモンにこのルートの削除とテイクオーバーの実行時に再追加を実行させる方法を知っている人はいますか?
スイッチが古いARPマッピングを長時間保持し続けることがあります。 Linuxで「arping-U」を使用して、アップストリームスイッチにキャッシュをフラッシュするように指示する必要がありました。
IPをリソースとしてどのように指定していますか? IPAddr
リソーススクリプトを使用していますか?フェイルオーバー時にARPを再ブロードキャストしない場合、以前にVIPと通信していた機器は、ARPテーブルに古い物理アドレスを持ちます。