负载平衡percona与haproxy

时间:2016-08-16 17:01:31

标签: mysql haproxy percona

我正在尝试为具有3个不同节点的percona DB配置ha-proxy。我的配置如下 -

backend mysql_backend
mode tcp
option tcplog
balance leastconn
option httpchk default-server port 9200 inter 5s downinter 10s  rise 3 fall 2 maxconn 256
server  percona1  percona-1:3306 check port <port_num> inter 12000 rise 3 fall 3 maxconn 450
server  percona2 percona-2:3306 check port <port_num> inter 12000 rise 3 fall 3 maxconn 450 backup
server  percona3 percona-3:3306 check port <port_num> inter 12000 rise 3 fall 3 maxconn 450 backup

在上面的配置中,*maxconn 450*指定将发送到此服务器1的最大并发连接数,即percona1。现在出现在我脑海中的有趣的事情,如果

  1. 连接数达到450而另一个请求来了? 451st请求是否会排队,或者它将被转发到percona2 / percona3(如果percona1失败,这是一个备份服务器,但这里percona1没有失败但达到限制)

  2. 配置Percona1(my.conf),例如它一次可以处理多达250个连接,但是从代理服务器,它在代理服务器中配置的时候就像450那样得到250多个。

  3. 我的问题是在上述场景中会发生什么?

    我已阅读文档,但我得到任何明确的信息。非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

我猜你在谈论Percona XtraDb群集,因为以这种方式使用HAproxy和3个独立的MySQL实例会导致灾难(如果它们是单独的实例,现在重新构建! )。以下是您的问题的答案:

  1. 如果配置为maxconn为450,则第451个连接将排队并等待与服务器的开放连接。 (documentation非常清楚)*需要注意的一点是,您应该检查HAproxy进程的ulimit -n,以确保它的连接限制超过1350(450 * 3个节点) )*
  2. 我不完全确定我理解这个问题,但是如果你引用max_connections的{​​{1}}参数,那么你应该将该参数设置为略高于HAproxy { {1}}该特定服务器的值以避免超时