我有一个运行HAProxy的服务器来负载平衡我们的mysql服务器。当我们在相当长的一段时间内有较低的平均负载时,一些服务器可能会出现故障,但是,在将来,如果负载再次升高,这些服务器就会自动上升。问题是,当一个实例发生故障时,HAProxy就不再寻找它了,所以当实例再次出现时,它就被忽略了。为了解决这个问题,我们在需要时重新启动。
下面是我们的配置文件:
global
log 127.0.0.1 local0 notice
user haproxy
group haproxy
defaults
log global
retries 2
timeout connect 3000
timeout server 5000
timeout client 5000
listen mysql-cluster
bind 0.0.0.0:3306
mode tcp
option mysql-check user haproxy_check
balance leastconn
server mysql-1 ********:3306 check
server mysql-2 ********:3306 check
也许如果我把重试从2改为一个大的数字,它能解决我们的问题吗?
按要求编辑,这是我的HAProxy版本:
$ haproxy -v
HA-Proxy version 1.4.24 2013/06/17
Copyright 2000-2013 Willy Tarreau <w@1wt.eu>
谢谢
发布于 2017-06-12 07:14:03
我们的AWS基础设施中也有类似的情况: RDS副本访问的每个实例上都有HAProxy (我们有3个副本,但应用程序只能使用一个主机名)。我们通过将HAProxy替换为Route53内部使用具有相同名称(例如db.example.internal)和相同权重(加权Route53策略)的多个记录来全局地解决这个问题。此外,我们为每个副本创建Route53健康检查(TCP3306端口检查)。对于我们来说,这个解决方案非常有效,如果我们需要添加/删除RDS副本--我们需要更改的唯一地方-- Route53记录和健康检查(我们不需要维护每个实例HAProxy状态/conf)
https://stackoverflow.com/questions/44315899
复制相似问题