Haproxy
在 haproxy.cfg 中使用 HaProxy 環境變數不起作用
試圖弄清楚為什麼 haproxy.cfg 中的環境變數在 HA-Proxy 版本 1.5.2 中不起作用
在命令行上,使用 Printenv 我得到一個環境變數列表,如 FE_PORT_8000_TCP_ADDR=172.17.0.4
我需要在 haproxy.cfg 中使用它。根據this和docs How can I use environment variables in haproxy.conf using $ FE_PORT_8000_TCP_ADDR or $ {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 中使用環境變數
由於您使用 service 命令停止/啟動,因此您需要在初始化腳本(例如
/etc/init.d/haproxy
在 ubuntu 上)中指定環境變數,而不是在您控制服務的互動式終端會話中(service haproxy start
)。您可以在 proc 文件系統中驗證特定 pid 可用的環境變數。如果你檢查你的 haproxy,它可能只有 TERM 和 LANG,因為這是通過服務傳遞給 init 腳本的唯一環境(服務手冊頁)。# cat /proc/$(pgrep haproxy)/environ
如果不是從 init 腳本啟動守護程序,而是直接執行 haproxy,您可能會看到您正在尋找的行為:
# haproxy -f /etc/haproxy/haproxy.cfg
要解決此問題,請編輯 init 腳本
/etc/init.d/haproxy
並在其中設置變數:export FE_PORT_8000_TCP_ADDR=172.17.0.4