Haproxy

在 haproxy.cfg 中使用 HaProxy 環境變數不起作用

  • January 30, 2021

試圖弄清楚為什麼 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

引用自:https://serverfault.com/questions/693753