我使用心跳为ldirectord进行mysql负载平衡。 它将mysql连接平均分配给池中可用的所有服务器,但有时候甚至在遇到连接错误太多之后,slave仍保留在池中。 在发送更多连接之前,应该有一些选项来计算从站上正在运行的查询的数量。
任何使用ldirectord进行mysql操作的人都希望能够分享与此build议解决scheme相同的经验?
谢谢。
从这些页面:
http://www.ultramonkey.org/3/topologies/ha-lb-eg.html
http://www.ultramonkey.org/3/topologies/config/lb/non-fwmark/linux-director/ldirectord.cf
它看起来像你想要做的是设置一些URL,你可以访问每个后端主机(像一个微小的CGI与thttpd会做的伎俩)testing守护进程在框中,并报告的东西,不符合接收string。 发生这种情况时,ldirectord会从池中取出节点。
configuration示例:
request="test-mysql.cgi" receive="MYSQL OK"
如果使用最小连接负载均衡algorithm,则IPVS将以最less的活动连接数量向后端发送新连接,这意味着当所有服务器都已满时,您只会收到“连接太多”的错误。 目前在IPVS(或ldirectord)中没有任何机制来指定对后端在无法处理之前将接受的同时连接数量的限制; 实际上,实现起来并不难,但问题在于,当你满员时,你如何处理连接? RST连接尝试? 无论你做什么,这将是一个错误,客户端将不得不处理,MySQL协议讲话中的“太多连接”更容易诊断,在我看来,“连接拒绝”,因为还有更多而后者的错误原因各不相同。
如果是我的群集,我会切换到最less的连接平衡,并增加更多的工作量监控; 如果你达到了极限,而且你不知道你提前接近了他们,那么你的监控失败了。