当我使用DNS服务器
+ redis/mysql master/slave
作为HA部署时,我发现有两个问题:
当
redis/mysql
master 失败时,我将 slave 提升为新的 master(sentinel
forredis
和mha
formysql
),由于DNS缓存的存在,域名更改可能会滞后,但我们可以减少DNS ttl或关闭nscd
服务。长连接可能会一直连接到旧的 master(如果连接没有重新连接),这会导致问题。
我的想法:
将域名更改为新的master ip地址后,我们需要终止所有现有连接(客户端将重新连接并连接到新的master)或关闭原来的master。
有没有更好的方法?
最佳答案
如果两个节点在同一个数据中心,你可以使用 VIP(虚拟 IP),然后使用 corosync 将 VIP 移动到 master。 ,它几乎是“即时”的故障转移。
如果节点在两个不同的数据中心,我想你可以使用 ProxySQL ,不过我还没有测试过 ProxySQL。
关于mysql - 在 HA 环境下切换 DNS 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40212574/