负载均衡配置

来源:互联网 发布:樱井知香作品番号 编辑:程序博客网 时间:2024/05/21 15:01

环境描述:两个接口服务器(负载均衡),两个数据库服务器(负载均衡)

问题:拔掉数据库1的网线后恢复,数据库2的连接数一直很高,数据库1虽然恢复但是连接数还是很少

查看了下负载均衡配置,如下:

delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 60protocol TCP
分析1:
查找资料后发现,persistence_timeout表示同一IP的链接在配置的时间内会被分配到同一台real_server,因此初步判断是因为我们的接口服务器会在60s内同数据库服务器建立连接,而数据库1就算断网恢复,但是因为之前的连接都未失效,所以下次还是连接数据库2,导致负载都在数据库2而没有分给数据库1。

解决方法1:

去掉persistence_timeout参数,经过测试发现,去掉后即可实现均衡分配。

分析2:

去掉了时间,查了下算法是rr,rr表示轮询,即把每项请求按顺序在真正服务器中分派。再用上述情景模拟一次,比如数据库1断网后数据库2连接数为100,数据库1恢复后又有100个连接,结果就是数据库1连接数为150,数据库2连接数为50。这样还是会导致一台数据库停用后就算恢复负载也不能均衡。

解决方法2:

我们的服务器都一样,即性能都一样,因此选用lc算法,lc 最少链接(Least Connections)调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。

经过测试,假如数据库1短网,数据库2连接数为100,数据库1恢复后又有100个连接,此时的结果就是数据库1还是100连接,数据库2有100连接。符合我们的要求。

最终配置

delay_loop 6lb_algo lclb_kind DRprotocol TCP


0 0
原创粉丝点击