haproxy.cfg에서 HaProxy 환경 변수를 사용하면 작동하지 않습니다.

haproxy.cfg에서 HaProxy 환경 변수를 사용하면 작동하지 않습니다.

haproxy.cfg의 환경 변수가 HA-Proxy 버전 1.5.2에서 작동하지 않는 이유를 알아내려고 합니다.

명령줄에서 Printenv를 사용하여 FE_PORT_8000_TCP_ADDR=172.17.0.4와 같은 환경 변수 목록을 얻습니다.

haproxy.cfg에서 사용해야 합니다. this 및 문서에 따르면 haproxy.conf에서 환경 변수를 어떻게 사용합니까? $FE_PORT_8000_TCP_ADDR 또는 ${FE_PORT_8000_TCP_ADDR}을 사용하면 작동합니다. 그러나 그것은 작동하지 않습니다.

Haporxy.cfg에서 하드코딩이 작동하고 브라우저에서 액세스하면 예상대로 표시됩니다.

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

그러나 가정된 값이 동일한 환경 변수는 그렇지 않습니다. 브라우저에서는 503 Service Unavailable을 표시합니다.

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

무엇이 잘못되고 있는지에 대한 아이디어가 있습니까?

업데이트: 이 사람에게는 동일한 문제가 있는 것 같습니다. haproxy.conf에서 환경 변수를 어떻게 사용합니까?

답변1

/etc/init.d/haproxyservice 명령을 사용하여 중지/시작하고 있으므로 서비스를 제어하는 ​​대화형 터미널 세션( )이 아닌 init 스크립트(예: ubuntu)에서 환경 변수를 지정해야 합니다 service haproxy start. proc 파일 시스템의 특정 pid에 사용 가능한 환경 변수를 확인할 수 있습니다. haproxy를 확인하면 TERM 및 LANG만 있을 가능성이 높습니다. 이는 서비스를 통해 init 스크립트로 전달되는 유일한 환경이기 때문입니다(서비스 맨페이지).

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

init 스크립트에서 데몬화된 haproxy를 시작하는 대신 haproxy를 직접 실행하면 원하는 동작을 볼 수 있습니다.

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

이 문제를 해결하려면 init 스크립트를 편집 /etc/init.d/haproxy하고 거기에 변수를 설정하십시오.

export FE_PORT_8000_TCP_ADDR=172.17.0.4

답변2

같은 문제가있었습니다. 환경 변수 주위에 큰따옴표를 추가하여 문제를 해결했습니다.

설명대로여기(2.3. 환경변수)

HAProxy의 구성은 환경 변수를 지원합니다.이러한 변수는 큰따옴표 안에서만 해석됩니다.구성을 구문 분석하는 동안 변수가 확장됩니다. 변수 이름 앞에는 달러("$")가 와야 하며 Bourne 셸에서 수행되는 것과 유사하게 선택적으로 중괄호("{}")로 묶어야 합니다. 변수 이름에는 영숫자 또는 밑줄 문자("_")가 포함될 수 있지만 숫자로 시작해서는 안 됩니다.

답변3

나는 같은 문제가 있었지만 Debian 8(Jessie)에서는 설정이 /etc/init.d/haproxy작동하지 않았습니다. 이렇게 변수를 설정하여 문제를 해결했습니다 /etc/default/haproxy( export필요 없음).

FE_PORT_8000_TCP_ADDR=172.17.0.4

더 많은 정보를 원하시면 내질문그리고답변내 문제에 대해.

답변4

/etc/init.d/haproxy파일에 다음 코드 조각이 포함되어 있다고 가정합니다 .

#!/bin/sh
...

BASENAME=haproxy
...

if [ -e /etc/default/${BASENAME} ]; then
    . /etc/default/${BASENAME}
fi
...

, 그렇다면 좋은 해결책은 /etc/default/haproxy대신 파일을 통해 추가 변수를 전달하는 것입니다.

... Johan Gov가 언급한 바와 같이:https://serverfault.com/a/841307/608437

관련 정보