我认为我尝试做的事情可以使用 bash 脚本来实现,但我肯定需要一些帮助!好的,场景如下:
我有一个双节点 MySQL 集群,其中已设置主主复制。现在,所讨论的应用程序 (SOGo) 在这两个节点上运行。在任何给定时间点,应用程序的两个实例都应该从单个副本读取/写入,这显然是为了避免重复条目。
因此,如果实例 A 正在写入其本地数据库,则实例 B 也会远程写入该数据库。反之亦然。
如果 A 出现故障,那么我必须替换 B 的 SOGo 实例中的配置指令,使其现在使用本地数据库。只需一个简单的 sed 语句和服务重启即可完成此操作。
此后,当 A 再次回来时,我既可以指示 A 写入 B 的副本,也可以要求 B 停止在其本地副本上写入,而是写入 A 的副本。
那么,为了使这个过程自动化,我最好的选择是什么?
答案1
您可以安装 heartbeat 包来提供所需的功能。可以配置 Heartbeat 以向当前活动机器分配一个称为虚拟 IP (VIP) 的 IP 地址。此 IP 应与分配给两台服务器的其他两个 IP 不同。
因此,您的应用程序可以使用此 VIP 访问数据库。当一台服务器发生故障时,VIP 将通过心跳自动移动到另一台服务器。因此,您的应用程序不需要重新启动和/或配置为使用不同的 IP。您可能只需要检查连接是否中断!