我有兴趣在我们的 MySQL 环境中使用 HA 代理作为故障转移/负载平衡器。我们有一个 master-master + 2 slaves 设置。
我希望主/主设置,即使它们是为它设置的,也只写给一个主。这是为了避免裂脑问题。
我确实计划在 HA 代理上有一个单独的端口用于读取和负载平衡。
是否可以仅将 HA 代理用作故障转移,如果可以,您将如何设置?
是不是有点像循环法的平衡,但是给其中一台服务器的权重为 1 而另一台服务器的权重为 0?如果第一台服务器脱机,第二台服务器将被使用,无论其重量如何?
是的,可以通过将
backup
选项添加到server
行尾来实现,如下所示:9199端口用于监控MySQL状态:
/etc/services
/etc/xinetd.d/mysqlchk
/opt/mysqlchk
来源:http ://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/
但是等一下,当一个 master 失败时,你如何将 slaves 指向新的 master?您最好使用 HAProxy 来负载平衡读取操作,并让Percona Pacemaker 资源代理处理写入操作(包括故障转移)。
请注意,mysql 的某些客户端实现(例如官方的JDBC 连接器)支持此功能,而无需使用负载平衡器软件。如果您碰巧(或不幸)拥有这样的连接器并控制它的配置,那么有一些好处,即:
客户端故障转移。少一个可能出错的例子。
通过使用故障转移节点进行读取来提高读取性能。
更低的延迟(这主要是吹毛求疵,但在某些设置中非常重要)
请参阅JDBC示例。
并且有mysqlproxy或多或少以与 ha-proxy 相同的方式解决它。