0

我使用 MySQL 和 Galera wsrep 来获得同步复制,这部分已经启动并运行

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

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

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

4

1 回答 1

1

其实有2个问题:

  1. glbd 向故障节点发送大多数(不是全部)新连接,因为默认情况下它使用“最少连接”平衡策略,如果节点接受 TCP 连接,那么它将是它,因为连接将是短暂的,并且负载最少从glbd的角度来看。所以它只有在节点崩溃时才有效。使用循环平衡策略,以确保最终应用程序将连接到工作服务器或使用 glb-1.0.0beta 可以使用 mysql 客户端轮询服务器状态并做出更智能的决策。
  2. 一般来说,在不重新连接和重新验证的情况下迁移客户端连接几乎是不可能的,因为即使代理代表应用程序重新连接并重新验证服务器(这意味着代理可以以与 mysqld 相同的方式验证客户端,或者它可以窥探并重播与服务器的客户端身份验证握手(这种可能性更小))——即使在崩溃的服务器上重新创建应用程序具有的相同会话上下文几乎是不可能的(因此它不会注意到重新连接)
于 2013-01-22T10:14:57.283 回答