systemd service e várias instâncias de haproxy

3

Eu tenho um requisito para 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 um ponto-e-vírgula, isso 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. link

Como faço para obter duas instâncias do haproxy para serem 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: Isso é o que recebo do status haproxy do serviço:

[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 está lendo no ponto-e-vírgula e no comando extra como parâmetros?

    
por Aftab 30.10.2015 / 17:21

1 resposta

3

Se as diferentes instâncias de haproxy não estiverem relacionadas, a solução mais simples é, de longe, usar a unidade existente como está e simplesmente criar uma segunda para o serviço adicional necessário.

Copie o arquivo da unidade e edite a opção ExecStart para apontar para o segundo arquivo de configuração.

Se você prever muitos outros serviços, convém usar a função de modelo do systemd .

Crie uma unidade /etc/systemd/system/[email protected] como uma cópia da unidade existente e use os especificadores %i para apontar para os arquivos de configuração relevantes

Algo parecido (incompleto porque não sei haproxy:

[Unit]
Description=haproxy %i

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

Depois, você pode ativar qualquer instância haproxy com

systemctl enable haproxy@X

Em que X é o número da instância (e o arquivo de configuração correspondente).

E se as instâncias estiverem relacionadas, você poderá ver minha pergunta e resposta: Como iniciar e parar um serviço de ouvinte em conjunto com um serviço personalizado

    
por 30.10.2015 / 20:41