我想设置一个 HA postgres 数据库。我在不同的物理服务器上设置了具有同步流复制的主数据库和从数据库。当复制中出现错误时,从数据库会触发一个脚本,该脚本将从数据库切换到主数据库。
两台服务器都配置了一个额外的虚拟 IP 地址,在正常运行时,从属数据库服务器上的此接口处于关闭状态。如果发生故障,脚本将关闭主数据库服务器上的此接口并启动从属数据库服务器上的相应接口。然后,脚本执行一些 arp 命令,让 LAN 知道 IP 地址映射已更改。当数据库客户端重新连接时,它们将连接到在同一 IP 上作为主服务器运行的从属服务器。
这种方法到目前为止还有效,但在某些情况下也会遇到麻烦。
如果我拔掉主机的网络插头,故障转移机制就会触发。从属数据库将成为同一 IP 上的主数据库。但是,由于网络已关闭,脚本无法关闭(旧)主机上的虚拟 IP 接口。如果我再插入网络插头,虚拟 IP 上就会发生 IP 地址冲突。
是否有概念可以处理这种情况?