Como eu uso o HAProxy com variáveis de ambiente ao executar como serviço?

2

Eu sou novo no Linux e estou tentando configurar o HAProxy com variáveis de ambiente. Eu estou executando Debian 8 (Jessie) e HAProxy 1.5.8 que eu instalei usando apt-get como por link

Sem variáveis de ambiente, a configuração funciona bem.

Eu segui as instruções de esta resposta (definindo a variável de ambiente de /etc/init.d/haproxy ) para obter as variáveis de ambiente funcionando, mas ainda tem a resposta 503 - Serviço Indisponível.

Eu olhei através de /etc/init.d/haproxy e pensei que essas duas linhas talvez mudassem o escopo de quais variáveis estavam disponíveis

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

então eu comentei eles.

Eu posso então iniciar o HAProxy usando sudo /etc/init.d/haproxy start e minha configuração funciona como eu esperava, mas quando tento executar o sudo service haproxy start eu ainda recebo o 503 - Serviço Indisponível.

Parece-me que esta questão tem a resposta que procuro mas não consegui traduzir as respostas de lá para o meu domínio.

Esta é a parte do arquivo haproxy.cfg em que estou usando variáveis de ambiente:

backend backend1
    server EnvVar ${SERVER_IP}:86 maxconn 512

Também procurei outras questões aqui sem encontrar uma solução para o meu problema.

Como eu configuro uma variável de ambiente para que ela possa ser lida pelo haproxy quando o haproxy é executado como um serviço?

    
por Johan Gov 27.03.2017 / 17:01

2 respostas

1

Eu finalmente percebi isso.

Em /lib/systemd/system/haproxy.service , há uma linha como esta

EnvironmentFile=-/etc/default/haproxy

Eu olhei em /etc/default/haproxy e é assim:

# Defaults file for HAProxy
#
# This is sourced by both, the initscript and the systemd unit file, so do not
# treat it as a shell script fragment.

# Change the config file location if needed
#CONFIG="/etc/haproxy/haproxy.cfg"

# Add extra flags here, see haproxy(1) for a few options
#EXTRAOPTS="-de -m 16"

Eu adicionei a minha variável de ambiente lá e reverti o resto das minhas alterações e ele funciona tanto quando executando como um serviço quanto ao executá-lo diretamente usando /etc/init.d/haproxy .

Esta é a linha que adicionei:

SERVER_IP=165.88.76.44
    
por 29.03.2017 / 15:35
0

Esta resposta está correta e funciona corretamente no haproxy 1.7 - 1.8

Aqui, um script simples para melhorar o uso de vários arquivos haproxy:

cd /etc/sysconfig

for i in haproxy_*; do 
   echo $i; 
   echo "MY_SERVER=$(hostname -i)" >> $i   
done

Agora nas configurações do Haproxy:

...
backend lochttps

   server server_name ${MY_SERVER}:60441 check ssl verify none id 1
...
    
por 05.10.2017 / 14:55