解决单点问题的几种思路
keepalived + 双机热备
布署两台机器(一主一备),这两台用keepalive检测心跳。每台机器都设置一个crontab脚本,每5分钟检查一下Dc进程在不在,如果不在,则拉起来。
如果一台机器的Dc进程崩溃了,则crontab脚本会拉起来。如果整台机器都挂了,则IP会切换到另一台机器的ip上。
不能解决出现网络分区情况下的脑裂
Zookeeper
用Zookeeper选举一个leader来对外服务,当leader节点挂掉后,再选举另一个节点。外部通过Zookeeper来实时 获取Dc的真实ip。
这种方法有个缺点:要布署一个zookeeper集群、且需要zookeeper先运行、其它节点后运行。
Basic Paxos
在master节点中内置Basic Paxos协议来实现选举,对外提供接口