2017-08-18 3 views
0

starten Starten von Upstart oder Systemd und ich möchte es aktualisieren. Nach dem Update wird der neue Service-Prozess ausgeführt und der alte Service-Prozess, der mit Upstart oder Systemd beginnt, wird beendet. Schließlich kann der neue Prozess durch den Upstart oder Systemd als alter Prozess überwacht werden.Hot update ein Service, der von Upstart oder Systemd

Antwort

0

Sie haben nicht gesagt, was Ihr Dienst tut. Ich beantworte für den einfachen Fall einen Netzwerkdienst mit kurzlebigen Verbindungen, beispielsweise einem HTTP-Server.

  1. Haben Sie systemd den Sockel. Suchen Sie nach "systemd socket activation" (stackoverflow search). Ich beschreibe, wie man es hier macht: https://www.darkcoding.net/software/systemd-socket-activation-in-go/
  2. Während der Dienst läuft, ersetzen Sie die Binärdatei auf der Festplatte durch die neue.
  3. systemctl restart <myservice>

In der Praxis wird es müssen Sie einigen Zustand in Ihrem Service zu oft auch beim Herunterfahren anhalten, und die Last beim Start.

Der heruntergefahrene Dienst muss möglicherweise eine kurze Zeit warten, bis alle Anforderungen abgeschlossen sind.

Für den schwierigeren Fall mit vielen langlebigen TCP-Verbindungen (wie einem XMPP-Server), geht es nicht mehr um Systemd, Sie müssen Ihre alten und neuen Prozesse koordinieren, um die Sockets von einem zum anderen zu übergeben . Ich beschreibe es in Online upgrades in Go, aber es ist viel mehr Arbeit.

Verwandte Themen