我有一些由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)我还可以使用其他解决方案吗?
答案 0 :(得分:1)
您可以配置通配符条目,指向两个节点,并为后端配置运行状况检查,而不是使用haproxy.domain.com
中的特定条目。这样,当您卸下节点1时,HA代理可以检测到它,而不再将流量定向到该节点。这样,在HA代理方面,事情将变得更加动态,您无需进行DNS更改。