Usando variáveis ambientais do HaProxy em haproxy.cfg não funcionando

4

Tentando descobrir por que as variáveis ambientais no haproxy.cfg não estão funcionando na versão 1.5.2 do HA-Proxy

na linha de comando, usando Printenv eu recebo uma lista de variáveis ambientais como FE_PORT_8000_TCP_ADDR = 172.17.0.4

Qual eu preciso usar no haproxy.cfg. De acordo com isso e os docs Como posso usar variáveis de ambiente no haproxy.conf Usar $ FE_PORT_8000_TCP_ADDR ou $ {FE_PORT_8000_TCP_ADDR} deve funcionar. No entanto, isso não está funcionando.

Em Haporxy.cfg, o hardcoding funciona, e acessado em um navegador, mostra como esperado:

backend FE
   # balance     roundrobin
    server      FE1 172.17.0.4:8000  maxconn 256

Mas variáveis ambientais com o mesmo suposto valor não, no navegador, ele fornece 503 Serviço Indisponível.

backend FE
   # balance     roundrobin
    server      FE1 $FE_PORT_8000_TCP_ADDR:8000  maxconn 256

Alguma idéia sobre o que está sendo feito errado?

ATUALIZAÇÃO: essa pessoa tem o que parece ser o mesmo problema Como posso usar variáveis de ambiente? em haproxy.conf

    
por TroyWorks 22.05.2015 / 07:30

3 respostas

3

Como você está parando / iniciando com o comando service, é necessário especificar as variáveis de ambiente em seu script de inicialização (por exemplo, /etc/init.d/haproxy no Ubuntu) e não na sessão de terminal interativo em que você está controlando o serviço ( service haproxy start ). Você pode verificar as variáveis de ambiente disponíveis para um pid específico no arquivo de arquivos proc. Se você verificar o seu para haproxy, provavelmente será apenas TERM e LANG, porque esse é o único ambiente que é passado via serviço para o script init (manpage for service ).

# cat /proc/$(pgrep haproxy)/environ

Se, em vez de iniciar o haproxy daemonizado pelo script de inicialização, você executar o haproxy diretamente, provavelmente verá o comportamento que está procurando:

# haproxy -f /etc/haproxy/haproxy.cfg

Para resolver isso, edite o script de inicialização /etc/init.d/haproxy e defina suas variáveis lá:

export FE_PORT_8000_TCP_ADDR=172.17.0.4
    
por 22.05.2015 / 20:09
1

Tive o mesmo problema. Corrigido adicionando aspas duplas em torno da variável de ambiente.

Como explicado aqui (2.3. Variáveis de ambiente)

HAProxy's configuration supports environment variables. Those variables are interpreted only within double quotes. Variables are expanded during the configuration parsing. Variable names must be preceded by a dollar ("$") and optionally enclosed with braces ("{}") similarly to what is done in Bourne shell. Variable names can contain alphanumerical characters or the character underscore ("_") but should not start with a digit.

    
por 03.01.2016 / 21:55
0

Eu tive o mesmo problema, mas no Debian 8 (Jessie) e defini-lo em /etc/init.d/haproxy não funcionou. Eu consertei definindo a variável em /etc/default/haproxy assim (não export necessário)

FE_PORT_8000_TCP_ADDR=172.17.0.4

Para mais informações, consulte minha pergunta e responder sobre o meu problema.

    
por 29.03.2017 / 15:42