У меня 2 сервера запущены как независимые единицы systemd. Они прослушивают порт 3001 и 3002 соответственно.
Я хочу добиться непрерывного перезапуска (также известного как скользящее обновление или постепенное обновление, больше информации об этой стратегии развертывания).
Вот последовательность событий, которые я ищу при запуске приложения systemctl restart:
Таким образом, установив балансировщик нагрузки перед этими серверами, я могу перезагрузить эти серверы, не прерывая глобальную службу.
Я реализовал конфигурацию, описанную в Эта статья:
/etc/systemd/system/app.service
[Unit]
Description=app
After=network-online.target
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
/etc/systemd/system/app-unit1.service
[Unit]
Description=app-unit1
PartOf=app.service
After=app.service
[Service]
Type=notify
Environment=PORT=3001
ExecStart=/usr/bin/start-server.sh
Restart=on-failure
[Install]
WantedBy=app.service
/etc/systemd/system/app-unit2.service
[Unit]
Description=app-unit2
PartOf=app.service
After=app.service
After=app-unit1.service
[Service]
Type=notify
Environment=PORT=3002
ExecStart=/usr/bin/start-server.sh
Restart=on-failure
[Install]
WantedBy=app.service
Результирующая последовательность событий при запуске приложения systemctl restart:
Итак, у меня перерыв в обслуживании между шагом 2 и шагом 3.
Возникает вопрос: как добиться непрерывного перезапуска с помощью systemd?