【发布时间】:2017-08-18 15:48:35
【问题描述】:
由 Upstart 或 systemd 启动的服务,我想对其进行热更新。更新后,新的服务进程正在运行,然后杀死由upstart或systemd启动的旧服务进程。 A 最后,新进程可以作为旧进程被 upstart 或 systemd 监控。
【问题讨论】:
标签: auto-update systemd upstart
由 Upstart 或 systemd 启动的服务,我想对其进行热更新。更新后,新的服务进程正在运行,然后杀死由upstart或systemd启动的旧服务进程。 A 最后,新进程可以作为旧进程被 upstart 或 systemd 监控。
【问题讨论】:
标签: auto-update systemd upstart
你没有说你的服务是做什么的。我正在回答简单的情况,即具有短期连接的网络服务,例如 HTTP 服务器。
systemctl restart <myservice>在实践中,您的服务中通常还会有一些状态,您需要在关闭时保持,并在启动时加载。
服务关闭可能需要等待一小段时间,直到所有请求完成。
对于具有许多长期 TCP 连接(例如 XMPP 服务器)的更困难的情况,它不再与 systemd 有关,您必须让新旧进程协调才能将套接字从一个传递到另一个。我在Online upgrades in Go 中进行了描述,但工作量要大得多。
【讨论】: