systemd-Dienst und mehrere Haproxy-Instanzen

systemd-Dienst und mehrere Haproxy-Instanzen

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 ExecStartOption, 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 Xdie 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

verwandte Informationen