将frontend_ip设置为后端的源IP

时间:2016-05-25 08:28:58

标签: http tcp load-balancing haproxy

我有一台配置了多个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

1 个答案:

答案 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