設定は次のとおりです。
host1-ip iface: ens192: 10.100.0.11/16
host1-gateway: ens192: 10.100.0.1
host1-ip iface: ens224: 10.0.0.11/16
host1-gateway: ens224: 10.0.0.1
host2-ip iface: ens192: 10.100.0.12/16
host2-gateway: ens192: 10.100.0.1
host2-ip iface: ens224: 10.0.0.12/16
host2-gateway: ens224: 10.0.0.1
keepalived-vip1 on iface: ens192: 10.100.100.1
keepalived-vip2 on iface: ens224: 10.0.100.1
dns1: 10.100.0.21
dns2: 10.100.0.22
/etc/netplan/01-netcfg.yaml:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens192:
addresses: [ 10.100.0.11/16 ]
gateway4: 10.100.0.1
nameservers:
search: [ example.com ]
addresses:
- "10.100.0.21"
- "10.100.0.22"
ens224:
addresses: [ 10.0.0.11/16 ]
nameservers:
search: [ example.com ]
addresses:
- "10.100.0.21"
- "10.100.0.22"
この構成で
keepalived-vip1 on iface: ens192: 10.100.100.1 <-- works
keepalived-vip2 on iface: ens224: 10.0.100.1 <-- dead, not pingable
論理的には ens224 インターフェイスに設定されたゲートウェイがないため、ネットワークスケジューラが来て、次のスクリプトを使用して iface ens224 のゲートウェイと接続保持アドレスを設定します。
/usr/lib/networkd-dispatcher/routable.d/00up:
#!/bin/bash
## INITIALISIERUNG
#Diese Werte werden vom netword-dispatcher an das Skript übergeben
set -x
INTERFACE=${IFACE}
ACTION=${STATE}
case "${INTERFACE}" in
("ens224")
case "${ACTION}" in
("routable")
/bin/ip route add table 2 default via 10.0.0.1
/bin/ip rule add from 10.0.100.1 table 2
;;
(*)
;;
esac
(*)
;;
esac
サーバーを再起動すると、すべてが期待どおりに機能します。私の2つのアドレスを使用して再起動しても動作します。
keepalived-vip1 on iface: ens192: 10.100.100.1 <-- works
keepalived-vip2 on iface: ens224: 10.0.100.1 <-- works
ここでいくつかのコマンドを実行します。
netplan apply
systemctl restart systemd-networkd
これでアドレスが消えました(Keepalivedヘルスチェックはまだ成功しているため、フェイルオーバーは発生しませんが、この場合はこのnetplan //ネットワーク//再起動動作をデバッグする必要があります)。
keepalived-vip1 on iface: ens192: 10.100.100.1 <-- dead, not pingable
keepalived-vip2 on iface: ens224: 10.0.100.1 <-- dead, not pingable
スクリプトの手動ステップを使用して問題を解決してください。
ip route add table 2 default via 10.0.0.1
ip rule add from 10.0.100.1 table 2
まだ:
keepalived-vip1 on iface: ens192: 10.100.100.1 <-- dead, not pingable
keepalived-vip2 on iface: ens224: 10.0.100.1 <-- dead, not pingable
サーバーを再起動すると正常に戻ります。
keepalived-vip1 on iface: ens192: 10.100.100.1 <-- works
keepalived-vip2 on iface: ens224: 10.0.100.1 <-- works
私もnetplanを使ってみましたが、すでにNetplanには、それぞれ異なるゲートウェイに接続されている2つのNICがあります。しかし、2番目のkeepalived-vipを動作させることはできません。
ベストアンサー1
私自身の質問に答えようとする多くの調査の終わりに、私はkeepalived質問を見つけました。https://github.com/acassen/keepalived/issues/836
「systemd-networkdが自分に「属していない」アドレスを削除しています。」 keepalivedはubuntuまたはrhelのリリースでそれを検出できません。
私にとっての解決策は、この状況を処理できるバージョン2.0.20で接続保持コンテナを構築することでした。
(keepalived> = v2が処理できる)