如何为 haproxy 设置 IPv6 格式的服务器?

如何为 haproxy 设置 IPv6 格式的服务器?

我在这个问题中隐藏了真实的 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 地址可能有更短的表示形式,但最好指定所有组件。

相关内容