Tro*_*rks 4 environment-variables haproxy
试图弄清楚为什么 haproxy.cfg 中的环境变量在 HA-Proxy 版本 1.5.2 中不起作用
在命令行上,使用 Printenv 我得到了一个环境变量列表,比如 FE_PORT_8000_TCP_ADDR=172.17.0.4
我需要在 haproxy.cfg 中使用它。根据this和文档 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
Run Code Online (Sandbox Code Playgroud)
但是具有相同假定值的环境变量没有,在浏览器中它给出 503 Service Unavailable。
backend FE
# balance roundrobin
server FE1 $FE_PORT_8000_TCP_ADDR:8000 maxconn 256
Run Code Online (Sandbox Code Playgroud)
关于做错了什么的任何想法?
更新:这个人有同样的问题 如何在 haproxy.conf 中使用环境变量
由于您使用 service 命令停止/启动,因此您需要在 init 脚本(例如/etc/init.d/haproxy
在 ubuntu 上)中指定环境变量,而不是在您控制服务的交互式终端会话中 ( service haproxy start
)。您可以在 proc 文件系统中验证可用于特定 pid 的环境变量。如果您检查您的 haproxy,它可能只是 TERM 和 LANG,因为这是通过服务传递到 init 脚本(服务手册页)的唯一环境。
# cat /proc/$(pgrep haproxy)/environ
Run Code Online (Sandbox Code Playgroud)
如果不是从 init 脚本启动守护进程 haproxy,而是直接运行 haproxy,您可能会看到您正在寻找的行为:
# haproxy -f /etc/haproxy/haproxy.cfg
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请编辑 init 脚本/etc/init.d/haproxy
并在其中设置变量:
export FE_PORT_8000_TCP_ADDR=172.17.0.4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13568 次 |
最近记录: |