MySQL代理HA,节点故障后无需重新连接

时间:2012-11-15 16:26:16

标签: mysql database-replication mysql-proxy

我使用MySQL与Galera wsrep进行同步复制,这部分已经启动并运行

我需要设置一种代理来处理客户端连接。由于群集中的任何节点都可能失败,因此客户端不会直接连接节点,而只能通过代理连接。

目前我使用Galera Load Balancer,它可以正常工作,但有一个例外: 如果一个节点发生故障,通过代理连接到该节点的所有客户端都会出现连接错误并需要重新连接。

我无法控制连接到代理的服务器应用程序,其中一些无法自动重新连接,需要手动重启。那么问题是如何强制代理自动将已连接的应用程序重定向到新数据节点,而无需重新连接?

1 个答案:

答案 0 :(得分:1)

实际上有两个问题:

  1. glbd将大多数(并非所有)新连接发送到故障节点,因为默认情况下它使用“连接最少”的平衡策略,如果节点接受TCP连接,那么它就是它,因为连接将是短暂的,它将从glbd的角度来看加载最少。所以它只有在节点崩溃时才有效。使用循环平衡策略,以确保最终应用程序将连接到工作服务器或使用glb-1.0.0beta,它可以使用mysql客户端轮询服务器状态并做出更明智的决策。
  2. 通常,在没有重新连接和重新验证的情况下迁移客户端连接几乎是不可能的,因为即使代理重新连接并代表应用程序重新验证服务器(这意味着代理可以像mysqld一样验证客户端) ,或者它可以间谍并重放与服务器的客户端身份验证握手(这更不可能)) - 即使在所有这些之后,几乎不可能重新创建应用程序在崩溃的服务器上具有的相同会话上下文(因此它不会注意重新连接)