Ubuntu の新しいバージョンは Netplan を完全にサポートしていることはわかっています。そこで、ucarp プロトコル (アプリケーション) でこの機能を使用する方法を知りたいと思います。Netplan を ucarp と統合するにはどうすればよいでしょうか。解決策がない場合は、この機能を使用する別の方法は何ですか。ご清聴ありがとうございました。ご返信をお待ちしております。
答え1
UCARP を Netplan で動作させることは可能です:
まず、/usr/share/ucarp/vip-up と vip-down を編集する必要があります。
----- up -----
#!/bin/sh
exec 2>/dev/null
/sbin/ip address add "$2"/32 dev "$1"
------- down -------
#!/bin/sh
exec 2>/dev/null
/sbin/ip address del "$2"/32 dev "$1"
次のステップはucarpを設定することです。
/usr/sbin/ucarp --interface=ens160 --pass=YourPassw00rd --srcip=10.0.215.26 --vhid=1 --addr=10.0.215.46 --shutdown --preempt --advskew=0 --upscript=/usr/share/ucarp/vip-up --downscript=/usr/share/ucarp/vip-down
--passfile でファイルを使用するように --pass を変更できます。Srcip - マシンの IP、addr - クラスターの仮想 IP。
これを試してみたところ、すべて正常でした。マスター ノードでイーサネットを無効にすると、2 ミリ秒後に切り替えが発生しました。
しかし、問題が 1 つあります。UCARP はサービスではないため、そのためのユニットを作成する必要があります。
nano /etc/systemd/system/ucarp.service
そしてそれを埋める
[Unit]
#Unit description. You can see this message when use "service ucarp status"
Description=Start UCARP as service
# Start after this:
After=syslog.target
After=network.target
[Service]
# Set type of service. Only oneshot works with exec lines with so much values. Look for Man page for instructions.
Type=oneshot
# Execute on start.
ExecStart=/usr/sbin/ucarp --interface=ens160 --pass=SuperPa$$w0rd --srcip=10.0.215.26 --vhid=1 --addr=10.0.215.46 --shutdown --preempt --advskew=0 --upscript=/usr/share/ucarp/vip-up --downscript=/usr/share/ucarp/vip-down -B
# Execute on stop.
KillMode=control-group
# Execute on reboot.
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
自動起動に追加されました
sudo systemctl enable ucarp
答え2
ucarp パッケージには ifupdown の統合が含まれていますが、netplan の統合は含まれていません。これは、更新が必要なパッケージのリストに含まれています。https://bugs.launchpad.net/ubuntu/+source/ucarp/+bug/1718227。
networkd バックエンドを使用している場合は、で説明されているように、フックをローカルで自分で実装できますnetworkd-dispatcher(8)
。それ以外の場合は、ucarp を実行する必要があるネットワーク インターフェイスを構成するために、netplan ではなく ifupdown を使用するというフォールバック オプションが常にあります。