我在这个问题中隐藏了真实的 IPv6 地址。
我在 /etc/haproxy/haproxy.cfg 中设置了后端配置:
# ...
frontend app
bind *:8000
default_backend app
backend app
balance roundrobin
server server1 [IPv6 address1 here]:8000 check
server server2 [IPv6 address2 here]:8000 check
启动haproxy服务后,检查状态是否失败:
$ sudo systemctl start haproxy
$ sudo systemctl status haproxy
...
Jan 10 15:00:36 myserver haproxy-systemd-wrapper[6330]: [ALERT] 009/150036 (6331) : parsing [/etc/haproxy/haproxy.cfg:91] : 'server server1' : invalid address: '[IPv6 address1 here]:8080'
Jan 10 15:00:36 myserver haproxy-systemd-wrapper[6330]: [ALERT] 009/150036 (6331) : parsing [/etc/haproxy/haproxy.cfg:92] : 'server server2' : invalid address: '[IPv6 address2 here]:8080'
Jan 10 15:00:37 myserver haproxy-systemd-wrapper[6330]: [ALERT] 009/150036 (6331) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
Jan 10 15:00:37 myserver haproxy-systemd-wrapper[6330]: [ALERT] 009/150037 (6331) : Fatal errors found in configuration.
Jan 10 15:00:37 myserver haproxy-systemd-wrapper[6330]: haproxy-systemd-wrapper: exit, haproxy RC=1
Jan 10 15:00:37 myserver systemd[1]: haproxy.service: main process exited, code=exited, status=1/FAILURE
Jan 10 15:00:37 myserver systemd[1]: Unit haproxy.service entered failed state.
Jan 10 15:00:37 myserver systemd[1]: haproxy.service failed.
我认为 IPv6 设置的用法如下:[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8000。为什么在这种情况下这是无效地址?
答案1
我认为 HAProxy 不支持将方括号作为 IPv6 地址的一部分。请务必始终指定端口号,或者如果要使用默认端口,请添加尾随冒号。因此,在您的例子中,您将有 9 个组件(8 个用于 IP,1 个用于端口),并且没有括号。IPv6 地址可能有更短的表示形式,但最好指定所有组件。