我有一台配置了多个IP的服务器(作为eth0上的虚拟IP)。我正在使用Haproxy进行负载投放。每个IP都已配置/指向不同的域名,所有来自每个IP地址的请求都使用haproxy转发到不同的后端服务器。
此处问题,来自haproxy的所有传出流量都通过主接口IP [默认]。我只是想为后端连接设置source ip。
我尝试了下面的配置,它无法正常工作。有什么想法吗?
backend web1
server ss2 10.11.12.13:80 source ${frontend_ip}
frontend new1
bind 10.11.13.15:8080
mode tcp
use_backend web1
答案 0 :(得分:1)
您的问题中只有1个IP,所以我无法确定。但是,如果您有多个虚拟IP并希望提供不同的后端,则至少需要创建一个frontend
。像这样:
frontend new1
bind 10.11.13.15:80
...
acl is_new1domain hdr(host) -i new1.domain.com
use_backend web1 if is_new1domain
frontend new2
bind 10.11.13.16:80
...
acl is_new2domain hdr(host) -i new2.domain.com
use_backend web2 if is_new2domain
backend web1
...
source 10.124.13.15
backend web2
...
source 10.124.13.16
实际上,如果您没有其他要解析的规则,只需使用Layer4代理/平衡即可。像这样:
listen new1
bind 10.11.12.15:80
server ss1 10.11.12.90:8080 check
server ss2 10.11.12.91:8080 check
server ss3 10.11.12.92:8080 check
source 10.124.12.15
listen new2
bind 10.11.12.16:80
server ss4 10.11.12.80:8080 check
server ss5 10.11.12.81:8080 check
server ss6 10.11.12.82:8080 check
source 10.124.12.16