博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的主备切换方案
阅读量:6655 次
发布时间:2019-06-25

本文共 824 字,大约阅读时间需要 2 分钟。

 主备切换是很多高可用性系统都必须解决的问题,方法有很多,象基于ZooKeeper的主备切换就是一个很好的选择。

 
在这里提供一种更简单但不完美的主备切换方法:
1) 假设A和B是集群中的主控(Master)节点
2) 1~7是工作节点(如HDFS中的DataNode)
3) 在每个工作节点上,都同时配置了A和B的IP,而且是对等的,无主备之分
 
所谓主:是指提供服务的主控,而备是指不提供服务的主控,当主故障时,由备接管其它服务,但因网络原因,可能主和备都未故障,这个是解决主备切换的关键问题所在。
 
选择A或B作为主的过程:
1) 未连接之前,如图1所示,A和B都不是主
2) 1~7随机选择连接到A或B
3) 这个时候可能会出现如图2所示的情况
4) (关键点)在指定的时间内(如1秒),不管是A还是B,发现到自己的连接数小于50%(这个值可修改)就主动切断连接,这个时候会将本来和自己建立连接的节点赶往另一边
5) 当A或B发现到自己的连接数超过60%(这个值可修改)时,就认为自己是主了,并保持连接
6) 这样当A或B有一个挂掉时,最终肯定会有一个满足作为主的条件
 
如果是网络原因,而不是A或B本身故障,则会出现一些可以连接到A但不能连接到B,而另一些可以连接到B但不能连接到A,甚至还有些可以同时连接A和B,但总是只有满足超过50%的才提供服务,这样就不会出现同时存在两个主的情况。所以,如果恰好是一半一半,那就无法提供服务,需要人工干预了,比如工作节点,平均分配在两个不同IDC,由于两个IDC间网络故障,问题就会出现。

图1

图2

图3
 
 
会不会导致A和B都是40%或50%了?这个会,但会触发重新竞争分配,只需要做一些策略调整,就可以解决这个问题,比如A是每1秒算一个间隔,B为2秒一个间隔。
    本文转自eyjian 51CTO博客,原文链接:http://blog.51cto.com/mooon/941076
,如需转载请自行联系原作者
你可能感兴趣的文章
使用Jekyll托管github pages的好处
查看>>
java、javaw和javaws的区别
查看>>
Git 远程分支
查看>>
华为S9300、s5700交换机端口镜像配置
查看>>
按下Enter焦点移至下一个控件的实现js代码
查看>>
zabbix系统日志文件监控key
查看>>
Salttack笔记
查看>>
如何利用ucenter实现单点登录
查看>>
apache-tomcat-6.0.37 部署
查看>>
sns推广技巧四步骤
查看>>
Web Service
查看>>
关于编程语言的一些认识
查看>>
Linux管理查看工具htop、glances、dstat
查看>>
网页中的代码
查看>>
聊聊手游的那些惊喜与惊吓
查看>>
面试中容易问到的网络编程问题
查看>>
linux根文件系统
查看>>
android的线程和进程
查看>>
为什么用Docker,Docker究竟有什么用呢
查看>>
调侃之VNC
查看>>