我们知道新版本的 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
您可以将 --pass 更改为使用 --passfile 文件。Srcip - 您的机器的 ip,addr - 您的集群的虚拟 ip。
我刚刚尝试了一下,一切正常。我禁用了主节点上的以太网,2ms 后发生了切换。
但是有一个问题 - 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)
。否则,您始终可以选择使用 ifupdown 而不是 netplan 来配置运行 ucarp 所需的网络接口。