servicio systemd y múltiples instancias de haproxy

servicio systemd y múltiples instancias de haproxy

Tengo el requisito de ejecutar un par de instancias de haproxy y necesito actualizar el archivo haproxy.service para agregar el segundo comando/instancia. Google me llevó a agregar el segundo comando en la misma opción ExecStart=, separado por un punto y coma, esto no funcionó.

Lo siguiente me hizo pensar que podía agregar un segundo ExecStart= con el comando adicional, pero esto tampoco funcionó.http://www.freedesktop.org/software/systemd/man/systemd.service.html

¿Cómo hago para que dos instancias de haproxy se ejecuten a través de un servicio systemd?

comando original

ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid

Nuevo comando

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

Segundo intento

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

Actualización: esto es lo que obtengo del estado del servicio haproxy:

[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> ]

¿Parece que haproxy tal vez esté leyendo el punto y coma y el comando adicional como parámetros?

Respuesta1

Si las diferentes instancias de haproxy no están relacionadas, la solución más sencilla es utilizar la unidad existente tal como está y simplemente crear una segunda para el servicio adicional que necesita.

Copie el archivo de la unidad y edite la ExecStartopción para que apunte al segundo archivo de configuración.

Si prevé iniciar muchos más de estos servicios, es posible que desee utilizar elfunción de plantilla de systemd.

Cree una unidad como una copia de la unidad existente y use los especificadores para señalar los archivos de configuración relevantes/etc/systemd/system/[email protected]%i

Algo como (incompleto porque no sé haproxy:

[Unit]
Description=haproxy %i

[Service]
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy%i.conf -p /var/run/haproxy%i.pid

Luego puedes habilitar cualquier instancia de haproxy con

systemctl enable haproxy@X

¿Dónde Xestá el número de la instancia (y el archivo de configuración correspondiente)?

Y si las instancias están relacionadas, puedes ver mi pregunta y respuesta:Cómo iniciar y detener un servicio de escucha junto con un servicio personalizado

información relacionada