なんだけど、ipvsadm界隈はHA前提の込み入った設定か古いドキュメントしか見つからなかったので、最低限の検証環境のセットアップ方法を、ここにまとめる次第です。
ロードバランサ:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward sudo ifconfig eth0:0 $VIP netmask 255.255.255.255 broadcast $VIP up sudo route add -host $VIP dev eth0:0 sudo ipvsadm -A -t $VIP:443 -s rr sudo ipvsadm -a -t $VIP:443 -r $SERVER1 -g sudo ipvsadm -a -t $VIP:443 -r $SERVER2 -g sudo ipvsadm -a -t $VIP:443 -r $SERVER3 -g ...
要は、フォワーディングを有効にして、自分自身へのパケットを他のサーバにフォワードするような変態行為をするからspoofing対策フィルタをオフにして、次にipvsadmでテーブル作ってサーバ追加する。
サーバ:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward echo 0 | sudo tee /proc/sys/net/ipv4/conf/eth0/rp_filter echo 2 | sudo tee /proc/sys/net/ipv4/conf/eth0/arp_announce echo 1 | sudo tee /proc/sys/net/ipv4/conf/eth0/arp_ignore sudo ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up sudo route add -host $VIP dev lo:0
要は、フォワーディング有効にして、VIPがARPでアナウンスされたり、応答したりしないように設定して、loにVIPをつけて、eth0で受信したパケットがlo:0に転送されるように設定する。
これで動く。