Ich habe einen systemd
Service für meine Spring Boot-Anwendung, die an consul
Server angeschlossen ist, hinter haproxy
. consul
bietet consul-template
an, um den Servicestandort in der Konfigurationsdatei haproxy
über den Befehl consul-template
automatisch zu aktualisieren.Lassen Sie den ExecStartPost-Befehl im Hintergrund laufen
consul-template
nimmt eine Vorlagendatei und schreibt in die endgültige Haproxy-Konfigurationsdatei und lädt dann die haproxy
neu.
Jetzt, consul-template
Prozess muss im Hintergrund immer zusammen mit meiner Anwendung ausgeführt werden, so dass, wenn die Anwendung kommt, kann neue Anwendungsstart erkennen und aktualisieren Sie ihren Speicherort in der Konfigurationsdatei.
Hier ist meine systemd
Servicedatei dafür.
[Unit]
Description=myservice
Requires=network-online.target
After=network-online.target
[Service]
Type=forking
PIDFile=/home/dragon/myservice/run/myservice.pid
ExecStart=/home/dragon/myservice/bin/myservice-script start
ExecReload=/home/dragon/myservice/bin/myservice-script reload
ExecStop=/home/dragon/myservice/bin/myservice-script stop
ExecStartPost=consul-template -template '/etc/haproxy/haproxy.cfg.template:/etc/haproxy/haproxy.cfg:sudo systemctl reload haproxy'
User=dragon
[Install]
WantedBy=multi-user.target
Nun, wenn ich systemctl start myservice
, meine Anwendung gestartet wird und der Anruf an consul-template
funktioniert auch starten, aber consul-template
Prozess nicht im Hintergrund geht. Ich muss Ctl+C
drücken und dann systemctl
kommt zurück und ich habe sowohl meine Anwendung und Consul-Template-Prozess ausgeführt.
Gibt es Möglichkeit, den
consul-template
Prozess im Hintergrund inExecStartPost
angegeben laufen?
ich versuche &
am Ende des ExecStartPost
Befehls hinzufügen, aber dann klagt consul-template
, dass es ein zusätzliches Argument ungültig ist und es funktioniert nicht.
Ich habe auch versucht, den Befehl als /bin/sh -c "consul-template command here..."
zu machen, aber das funktioniert auch nicht. Sogar nohup
in diesem Befehl funktionierte nicht.
Jede Hilfe wird wirklich geschätzt.
magisch arbeiten Sie mehr Erfolg mit Trennung des 'Consul template' Prozess in seine eigene haben, Systemeinheit. – Amir