我需要像这样配置一个 HAProxy 前端:
frontend web-server
option forwardfor except 127.0.0.0/8
bind :8080
bind :32768-65535
default_backend service
但是,该配置不允许我连接到内部或外部的其他服务器。
$ wget www.google.com
--2016-12-22 23:21:13-- http://www.google.com/
Resolving www.google.com (www.google.com)... 172.217.6.196, 2607:f8b0:4006:804::2004
Connecting to www.google.com (www.google.com)|172.217.6.196|:80... failed: Cannot assign requested address.
Connecting to www.google.com (www.google.com)|2607:f8b0:4006:804::2004|:80... failed: Network is unreachable.
如果我注释该行bind :32768_65535
并重新启动 HAProxy,我可以再次连接到其他服务器。
我想我正在将 HAProxy 绑定到启动连接所需的端口,这就是该配置导致此问题的原因。
如何配置 HAProxy 以侦听这些端口,而不会出现连接问题?
编辑:
- HAProxy 1.6
- Ubuntu 16.04(全新安装)
因此,haproxy 绑定了从 32768 到 65535(含)的每个本地端口。这是一个问题,因为默认情况下,传出连接会绑定此范围内的本地端口:
要解决此问题,您需要选择一个不会在您的系统上使用的本地端口范围,并重新配置此 sysctl 以使用它。例如:
(并使其持久化
/etc/sysctl.conf
。)