将 netplan 与 ucarp 结合使用

将 netplan 与 ucarp 结合使用

我们知道新版本的 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 所需的网络接口。

相关内容