我已经使用Kubernetes部署了一个Redis集群。我现在正在尝试使用HAProxy来实现负载均衡。如果你有静态is,HAProxy对于redis集群的负载均衡是非常好的。然而,我们在使用kubernetes时没有这个功能。在测试故障转移时,Redis和Kubernetes分别处理新主机的选举和新pod的部署。但是,kubernetes会选举新的IP到新的pod。如何将这个新IP注入到HAProxy healthchecks中,并删除旧的主IP?
我有以下设置。
+----+ +----+ +----+ +----+
| W1 | | W2 | | W3 | | W4 | Web application servers
+----+ +----+ +----+ +----+
\ | | /
\ | | /
\ | | /
+---------+
| HAProxy |
+---------+
/ \ \
+----+ +----+ +----+
| P1 | | P2 | | P3 | K8S pods = Redis + Sentinel
+----+ +----+ +----+这与haproxy blog上描述的设置非常相似。
发布于 2015-03-20 09:45:34
根据https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/redis的说法,它使用sentinel来管理故障转移。这将问题简化为基于“正常”前哨的解决方案。
在这种情况下,我建议在与HAProxy相同的容器中运行HAProxy,并使用一个简单的前哨脚本来更新HAProxy配置并发出重新加载命令。一个简单的HAProxy配置,它只是与主对话,可以很容易地是一个简单的搜索,替换,重新加载脚本。
哦,不要在那篇博文中使用HAProxy检查。它不能解释或检测分裂的大脑状况。您可以使用简单的端口检查可用性,也可以编写一个自定义检查,它查询每个前哨,并且只与至少有两个前哨报告为主的那个进行对话。
https://stackoverflow.com/questions/29155357
复制相似问题