Redis为什么不能使用一主一从哨兵
哨兵机制
识别挂掉的主节点
quorum(法定人数)
是判定主节点不能访问所需要的最少哨兵数量
执行失效备援perform a failover
其中一个哨兵需要被选为救援的领导,并被授权执行救援,而这需要过半数的哨兵同意
So for example if
you have 5 Sentinel processes, and the quorum for a given master set to the
value of 2, this is what happens:
- If two Sentinels agree at the same time about the master
being unreachable, one of the two will try to start a failover. - If there are at least a total of three Sentinels
reachable, the failover will be authorized and will actually start.
In practical terms
this means during failures Sentinel never starts a failover if the
majority of Sentinel processes are unable to talk (aka no failover in
the minority partition).
一主一从哨兵
+----+ +----+
| M1 |-------| R1 |
| S1 | | S2 |
+----+ +----+
Configuration: quorum = 1
如果M1挂掉,R1会成为主节点,因为两个哨兵可以就M1的失效达成一致,而且可以授权救援。表面上这样可以工作,但是请看下面这种情况。
如果M1所在的机器直接停掉,同时S1就停止工作。这样的话S2就不能授权救援,整个系统就不可用了。
要注意的是,失效救援是需要过半数的哨兵同意。同时如果上图只在一边执行救援,并且没有授权,会非常危险:
+----+ +------+
| M1 |----//-----| [M1] |
| S1 | | S2 |
+----+ +------+
上面的配置了两个主节点(完美对称)(假设S2可以没有授权进行救援)。
客户端可能无限期地往两边写入数据,当网络恢复时并不能知道哪边的配置是对的。
所以至少请在配置三个哨兵在三个不同的机器上。
最新文章
- 图解CSS3制作圆环形进度条的实例教程
- linux 时间管理——概念、注意点(一)【转】
- subline
- Func<;T>;与Action<;T>;委托泛型介绍:转
- 【转】Oracle 执行动态语句
- css框模型
- 搭通自己的电脑与GitHub的传输通道
- .net core 使用DES加密字符串
- java_jdbc_oracle简单总结(2016-11-23)
- vsim生成VCD波形文件(verilog)
- 自定义tableviewCell的分割线
- Java - 文件(IO流)
- Android App开之标注切图
- WPF:DataTemplateSelector设置控件不同的样式
- Python文件夹备份
- openSUSE Leap 15.0 Adobe Flash Player 安装说明
- Oracle——trunc()函数的使用
- 随机森林学习-sklearn
- 通过阅读python subprocess源码尝试实现非阻塞读取stdout以及非阻塞wait
- Java基础-Java中的并法库之线程池技术
热门文章
- python gitlab 学习笔记
- WPF 多个选项卡TabControl 页面分离
- Python修炼之路-装饰器、生成器、迭代器
- 在CentOS 6.4上安装Puppet配置管理工具
- return和exit以及C语言递归函数
- springboot使用外部application.properties配置文件
- CSS布局之flexbox
- java+web+大文件上传下载
- BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛 水题~
- POJ 3660 Cow Contest 任意两点之间的关系 Floyd