
Tenho a necessidade de executar algumas instâncias do haproxy e preciso atualizar o arquivo haproxy.service para adicionar o segundo comando/instância. O Google me levou a adicionar o segundo comando na mesma opção ExecStart=, separado por ponto e vírgula, não funcionou.
O seguinte me fez pensar que eu poderia adicionar um segundo ExecStart= com o comando extra, isso também não funcionou.http://www.freedesktop.org/software/systemd/man/systemd.service.html
Como faço para que duas instâncias do haproxy sejam executadas por meio de um serviço systemd?
Comando original
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid
Novo 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
Segunda tentativa
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
Atualização: isto é o que recebo do status do serviço 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 o haproxy talvez esteja lendo o ponto e vírgula e o comando extra como parâmetros?
Responder1
Se as diferentes instâncias do haproxy não estiverem relacionadas, a solução mais simples é usar a unidade existente como está e simplesmente criar uma segunda para o serviço adicional que você precisa.
Copie o arquivo da unidade e edite a ExecStart
opção para apontar para o segundo arquivo de configuração.
Se você pretende iniciar muitos outros desses serviços, talvez queira usar ofunção de modelo do systemd.
Crie uma unidade como uma cópia da unidade existente e use os especificadores para apontar para os arquivos de configuração relevantes/etc/systemd/system/[email protected]
%i
Algo como (incompleto porque não conheço haproxy:
[Unit]
Description=haproxy %i
[Service]
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy%i.conf -p /var/run/haproxy%i.pid
Então você pode habilitar qualquer instância haproxy com
systemctl enable haproxy@X
Onde X
está o número da instância (e o arquivo de configuração correspondente).
E se as instâncias estiverem relacionadas, você pode ver minha pergunta e resposta:Como iniciar e interromper um serviço de ouvinte junto com um serviço personalizado