happroxy背后的牧场主

时间:2019-01-07 17:41:21

标签: docker haproxy rancher

我有一些由Rancher管理的小型集群。只有两个工作程序: node1 node2

我可以添加 stack1 ,为此堆栈或全局添加负载均衡器,并且工作正常。但是我在使用DNS时遇到了一些问题。

例如,我可以将 stack1.domain.com 指向 node1.domain.com 。我的负载均衡器正在node1上运行(甚至在群集的所有节点上都运行),因此它可以正常工作。

但是,如果有一天我需要关闭我的node1,则必须快速执行并将DNS stack1.domain.com指向node2.domain.com 这不是一个好主意。

我的第一个想法是在Rancher群集之前使用小型haproxy服务器。

因此,我将 stack1.domain.com 指向 haproxy.domain.com ,然后将其代理到节点1和节点2。

但这不起作用。

我可以放这样的东西

frontend  http *:80
    acl stack1           hdr(host)       -i stack1.domain.com
    use_backend bck_s1          if stack1

backend bck_s1
    mode http
    balance     roundrobin
    server      n1 node1.domain.com:80 check
    server      n2 node2.domain.com:80 check

可能可行。但是,如果我还需要添加在80端口上侦听的stack2,则无法使用此架构。

我可以添加 bck_s2 ,但是它将指向相同的 node1 / node2 。因此,牧场主会不明白我想要stack1还是stack2?

可以使用不同的端口来解决它,但这似乎不是一个好主意。当然,我可以侦听stack1到80的端口,stack2到8080,但是如果我有stack3,4,...太复杂了。

我有个想法要为后端添加一些路径。像这样:

backend bck_s1
    mode http
    balance     roundrobin
    server      n1 node1.domain.com:80/s1 check
    server      n2 node2.domain.com:80/s1 check

在这种情况下,我可以根据规则/ s1,/ s2等在Rancher上放置一个负载均衡器。 但是似乎无法使用haproxy做到这一点。我说的对吗?

问题。

1)是否可以使用haproxy来实现它以及如何实现?

2)我还可以使用其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以配置通配符条目,指向两个节点,并为后端配置运行状况检查,而不是使用haproxy.domain.com中的特定条目。这样,当您卸下节点1时,HA代理可以检测到它,而不再将流量定向到该节点。这样,在HA代理方面,事情将变得更加动态,您无需进行DNS更改。

参考: -Wildcard in subdomain for ACL in HAPROXY