
Ich muss mehrere Instanzen von Haproxy ausführen und muss die Datei Haproxy.service aktualisieren, um den zweiten Befehl/die zweite Instanz hinzuzufügen. Google hat mich dazu gebracht, den zweiten Befehl mit derselben Option ExecStart= hinzuzufügen, getrennt durch ein Semikolon. Das hat jedoch nicht funktioniert.
Das Folgende ließ mich glauben, dass ich mit dem zusätzlichen Befehl ein zweites ExecStart= hinzufügen könnte, was jedoch auch nicht funktionierte.http://www.freedesktop.org/software/systemd/man/systemd.service.html
Wie kann ich zwei Instanzen von Haproxy über einen systemd-Dienst ausführen?
Ursprünglicher Befehl
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid
Neuer Befehl
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid; ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid
Zweiter Versuch
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid
Update: Das bekomme ich vom Service-Haproxy-Status:
[root@lb01 ~]# service haproxy status
Redirecting to /bin/systemctl status haproxy.service
haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
Active: inactive (dead) since Fri 2015-10-30 16:35:44 GMT; 6s ago
Process: 3221 ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid; /usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid (code=exited, status=0/SUCCESS)
Main PID: 3221 (code=exited, status=0/SUCCESS)
Oct 30 16:48:01 lb01 systemd: Started HAProxy Load Balancer.
Oct 30 16:48:01 lb01 haproxy-systemd-wrapper: Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ]
Oct 30 16:48:01 lb01 haproxy-systemd-wrapper: [ -p <pidfile> ] [ -m <max megs> ] [ -C <dir> ]
Sieht aus, als ob Haproxy möglicherweise das Semikolon und den zusätzlichen Befehl als Parameter einliest?
Antwort1
Wenn die verschiedenen Haproxy-Instanzen nicht miteinander verbunden sind, besteht die bei weitem einfachste Lösung darin, die vorhandene Einheit unverändert zu verwenden und einfach eine zweite für den zusätzlichen Dienst zu erstellen, den Sie benötigen.
Kopieren Sie die Unit-Datei und bearbeiten Sie die ExecStart
Option, um auf die zweite Konfigurationsdatei zu verweisen.
Wenn Sie vorhaben, noch viele weitere dieser Dienste zu starten, können Sie dieTemplate-Funktion von systemd.
Erstellen Sie eine Einheit als Kopie der vorhandenen Einheit und verwenden Sie die Spezifizierer, um auf die relevanten Konfigurationsdateien zu verweisen/etc/systemd/system/[email protected]
%i
So etwas wie (unvollständig, weil ich haproxy nicht kenne):
[Unit]
Description=haproxy %i
[Service]
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy%i.conf -p /var/run/haproxy%i.pid
Anschließend können Sie jede beliebige Haproxy-Instanz aktivieren mit
systemctl enable haproxy@X
Wobei X
die Nummer der Instanz (und der passenden Konfigurationsdatei) ist.
Und wenn die Fälle zusammenhängen, können Sie sich meine Frage und Antwort ansehen:So starten und stoppen Sie einen Listener-Dienst zusammen mit einem benutzerdefinierten Dienst