简单的主备切换方案

    主备切换是很多高可用性系统都必须解决的问题,方法有很多,象基于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秒一个间隔。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与算法进阶

学习Git(一)起步

什么是Git 在Git官网上找到这样一段描述 Git is a free and open source distributed version control...

3406
来自专栏Pythonista

web service基础知识

<!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px '.PingFang SC'; color: ...

2963
来自专栏张善友的专栏

集中管理远程计算机终端程序

虚拟网络计算 (VNC) 和 Microsoft 远程桌面协议 (RDP) 之类的工具轻松地从您的家庭或办公室中登录到并管理远程计算机。 如果您任务管理多个不同...

2225
来自专栏个人分享

storm系统架构学习

    运行Storm nimbus后台服务的节点(Nimbus),它是storm系统的中心,负责接收用户提交的作业(如同spark submit一样 即为ja...

1263
来自专栏北京马哥教育

SQLAlchemy基本使用

云豆贴心提醒,本文阅读时间6分钟,文末有秘密! ORM介绍 ORM(Object-Relational Mapping) 架构,采用元数据来描述对象-关系映射...

3937
来自专栏EAWorld

微服务系统之认证管理详解

微服务大行其道,微服务安全也是非常热门的话题。本文向大家分享微服务系统中认证管理相关技术。其中包括用户认证、网关和 API 认证、系统间和系统内的认证,以及我们...

3081
来自专栏Ken的杂谈

ZooKeeper集群部署指南

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:...

2901
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:基于Access数据库的Demo

说明:该demo是基于Access数据库进行客户信息的新增、查看、编辑 新增客户信息和客户列表

1502
来自专栏HTML5学堂

移动端及时调试工具 - weinre使用方法

HTML5学堂:在前一篇文章当中,我们借着weinre讲解了NodeJS中的一些简单命令,也讲解了weinre的安装方法,今天我们把weinre的使用“完结”掉...

2953
来自专栏北京马哥教育

【图文并茂】一步步带你了解Web站点架构

1.1 http反向代理服务器 在web站点前端,我们需要搭建一个反向代理服务器,用于负责接受用户的请求,请求包括动态和静态的内容请求。一般反向代理服务器的部署...

4828

扫码关注云+社区

领取腾讯云代金券