当我使用DNS server
+ redis/mysql master/slave
作为HA部署时,我发现有两个问题:
-
当
redis/mysql
主服务器故障时,我将从服务器提升为新主服务器(redis
为sentinel
,mysql
为mha
),域名更改可能由于存在DNS缓存而延迟,但我们可以减少DNS ttl或关闭nscd
服务 -
长活连接可能会一直连接到旧主机(如果连接没有重新连接),这会导致问题。
我的想法:
在将域名更改为新的主ip地址后,我们需要杀死所有现有的连接(客户端将重新连接并连接到新的主ip地址)或关闭原主ip地址
有更好的方法吗?
如果两个节点在同一个数据中心,您可以使用VIP(虚拟IP),然后使用corosync将VIP移动到主服务器,这几乎是"瞬时"的故障转移。
如果节点在两个不同的数据中心,我认为你可以使用ProxySQL,但我还没有测试过ProxySQL。