为了确保更多的无麻烦故障转移,我们将使用主从复制(只有2个主机--总共一个主机,一个从服务器)替换遗留的MySQL数据库,使用MariaDB Galera主-主复制集群。我读过的教程通常指导在Galera节点前面创建一个HAproxy实例,以便在它们之间进行负载平衡(如果需要高可用性,则使用更多的HAproxy实例共享虚拟IP )。这是建议的拓扑结构的样子。
然而,在我们的环境中,总共只有两个Galera主机(负载很低,所以一个主机就足够了),主要要求是冗余,并尽可能无缝地完成连接的应用程序的故障转移。
由于单个主机必须能够在另一个主机失败时处理所有负载,因此负载平衡只会使硬件升级的必要性变得模糊,并可能导致不必要的写冲突。所有查询都应该转到一个主机(另一个只是静默地复制),只有在第一个主机失败时,所有的查询才会转到第二个主机,从那时起,第二个主机应该成为“主”主机,并能够在恢复时将所有内容复制回原来的失败主机。
问题是:如果我们只需要冗余而不需要负载平衡,那么完全忽略Galera主机前的HAproxy实例并让两个Galera实例直接共享保留的虚拟IP是否合理?或者,在我们的情况下,是否还有任何值得注意的优势(不包括对3+ Galera主机的简单扩展)仍然使用HAproxy?
发布于 2017-04-04 13:21:18
是的,虚拟IP就足够了。
但是,您应该有第三个主机运行至少Galera仲裁守护进程,它负责仲裁,即决定两个节点中的哪个是同步的。
如果只有两个节点,而另一个节点以意外的方式下降,并且节点被打开,则群集状态是未知的,因为两个节点都不知道它是否是最新的。
有关更多信息,请访问https://www.sebastien-han.fr/blog/2012/10/10/galera-arbitrator-resource-agent/。
https://serverfault.com/questions/842477
复制相似问题