мы знаем, что новая версия 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 вашего кластера.
Я только что попробовал это, и все было в порядке. Я отключил Ethernet на главном узле, и переключение произошло через 2 мс.
Но есть одна проблема — 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.