我们将用MariaDB Galera master-master复制群集,使用主 – 从复制(总共只有2个主机 – 一个主机,一个从机)replace旧版MySQL数据库,以确保更加无忧的故障转移。 我已阅读的教程通常指示在Galera节点前面创build一个HAproxy实例,以便在它们之间进行负载平衡(并且如果需要高可用性,则使用更多使用keepalived共享虚拟IP的HAproxy实例)。 这就是build议的拓扑结构。
但是在我们的环境中,我们总共只有2个Galera主机(负载很低,因此一个主机就足够了),而且主要的要求是冗余,尽可能无缝地为连接的应用程序进行故障切换。
由于单个主机必须能够处理所有的负载,以防其他人的失败,所以当需要升级硬件时,负载平衡只是模糊了这一点,并且可能引入不必要的写入冲突。 所有的查询都应该到一个主机(另一个主机只是默默的复制),只有在第一个主机失败的情况下,所有的主机都会故障切换到第二个主机,从而成为主机,并且能够复制一切恢复到原来的失败主机。
问题是:如果我们只需要冗余而不是负载平衡,那么在Galera主机前面省略HAproxy实例是否合理,并且两个Galera实例直接共享Keepalived虚拟IP? 还是有什么值得注意的优势(不包括简单的扩展到3 + Galera主机)在我们的情况下仍然使用HAproxy?
是的,虚拟IP应该足够了。
但是,您应该有第三个主机运行至lessGalera仲裁守护程序,它负责仲裁,即决定两个节点中哪一个是同步的。
如果只有两个节点,而另一个节点以意想不到的方式closures,并且该节点出现,则群集状态是未知的,因为节点都不知道它是否是最新的。
有关更多信息,请参阅https://www.sebastien-han.fr/blog/2012/10/10/galera-arbitrator-resource-agent/ 。