技术标签: sentinel 脑裂 quorum majority redis
前面Redis Sentinel 架构原理详解(三)中介绍了redis哨兵集群中sentinel的leader如何选举,以及redis主从中的新master如何选择,这里再和大家一起学习下Sentinel集群的quorum 和majority,configuration epoch,以及Redis Sentinel可能出现的问题以及解决办法。
quorum 是在 sentinel.conf中手动配置的,默认为2,意味着只有大于等于quorum数量的sentinel都认为master主观下线,sentinel集群才会认为master客观下线。
# sentinel monitor [master-name] [master-ip] [master-port] [quorum]
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel集群执行故障转移时需要选举leader,此时涉及到majority,majority 代表 sentinel 集群中大部分 sentinel 节点的个数,只有大于等于 max(quorum, majority)
个节点给某个 sentinel 节点投票,才能确定该sentinel节点为leader,majority 的计算方式为:num(sentinels) / 2 + 1
,比如:
2 个节点的 sentinel 集群的 majority为 2
3 个节点的 sentinel 集群的 majority为 2
4 个节点的 sentinel 集群的 majority为 3
5 个节点的 sentinel 集群的 majority为 3
所以 sentinel集群的节点个数至少为3个,当节点数为2时,假如一个 sentinel 节点宕机,那么剩余一个节点是无法让自己成为 leader 的,因为2个节点的sentinel 集群的 majority是2,此时没有2个节点都给剩余的节点投票,也就无法选择出leader,从而无法进行故障转移。另外最好把quorum的值设置为 <= majority,否则即使 sentinel 集群剩余的节点满足majority数,但是有可能不能满足quorum数,那还是无法选举leader,也就不能进行故障转移。
configuration epoch 是当前redis主从架构的配置版本号,无论是sentinel集群选举 leader 还是进行故障转移的时候,要求各 sentinel节点得到的 configuration epoch都是相同的,sentinel is-master-down-by-addr
命令中就必须有当前配置版本号这个参数,在选举leader过程中,如果本次选举失败,那么进行下一次选举,就会更新配置版本号,也就是说,每次选举都对应一个新的 configuration epoch,在故障转移的过程中,也要求各个 sentinel 节点使用相同的 configuration epoch。在故障转移成功之后,sentinel leader 会更新生成最新的master 配置,configuration epoch 也会更新,然后同步给其他的 sentinel 节点,这样保证 sentinel 集群中保存的 master、slave 配置都是最新的,当 client 请求的时候就会拿到最新的配置信息。
redis sentinel 无法保证数据完全不丢失,原因有两个:
redis 提供了两个配置参数可以尽量丢失少的数据:
min-slaves-to-write 1
min-slaves-max-lag 10
第一个参数表示 master必须至少有一个 slave在进行正常复制,否则就拒绝写请求,此时 master 丧失可用性。何为正常复制,何为异常复制?这个就是由第二个参数控制的,它的单位是秒,表示如果 10s 没有收到从节点的反馈,就意味着从节点同步不正常。这样可以把 master 宕机期间的数据丢失降低到可控范围内。
redis-2.6 版本提供的是 redis sentinel v1版本,但是功能性和健壮性都有一些问题,如果想使用redis sentinel的话,建议使用2.8以上版本,也就是v2版本的 redis sentinel。
这里和大家一起学习了sentinel集群中的quorum和majority参数的具体配置意义,以及configuration epoch版本号配置。redis哨兵不能保证数据绝对不丢失,在主从异步复制过程数据没有及时同步,或因为网络因素导致选举新的master节点而产生脑裂等问题。所以在选用redis哨兵实现高可用的时候需要考虑这些问题,如何将风险降低到最小。
服务器时间同步(定时同步)一、Linux 时间同步1、时间同步一次:ntpdate ntp1.aliyun.com2、定时任务同步(1)crontab -e(2)按i 写入*/10 * * * * ntpdate ntp1.aliyun.com说明放入定时任务中每隔10分钟执行一次crontab -l 查看定时任务二、win定时任务时间同步1、w32tm /resync 写入resynctime.bat2、时钟internet 时间设置修改为ntp1.aliyun.com3、win任
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记。项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star。播放模式切换歌词滚动显示一、播放器模式切换功能实现 按钮样式随模式改变而改变动态绑定iconMode图标c...
本文转自:http://eyehere.net/2013/learn-opengl-3d-by-pyopengl-5/我不得不演示几个例子来加深一下之前学习的东西(时隔这么久了,有点难以为继的感觉啊)~我恨数学据说这个世界上最深沉的感情不是爱而是恨,或许一开始就亮出一个数学函数能让你有动力进行下去?from OpenGL.GL import
下面为详细操作步骤:一、设置所有访问端统一的访问地址后台>系统>系统参数设置:网站地址:这个地址一定不要加上域名,比如设置为:/(默认安装后也是没有加上域名,如果自行修改过,请把域名去掉。)附件地址:这个地址必须加域名,比如设置为:http://www.xx.com/d/file/或者 给附件目录/d/file/绑定个二级域名,然后设置为绑定的二级域名地址,如:http://file...
效果图如下NowGif.gif-> 4349FA93-F15B-4287-9162-3AA27B223A72.pngFA783124-4B81-455F-A6E6-461ACA874478.png随着直播市场的火热,市场大军都逐步进入直播市场 ,腾讯旗下的NOW直播也不例外先说说直播设计底层一 、流媒体1 - 伪流媒体1.1 扫盲
阅读目录1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD 4. 总结 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练。其实,常用的梯度下降法还具体包含有三种不同的形式,它们也各自有着不同的优缺点。 下面我们以线性回归算法来对三种梯度下降法进行比较。 一般线性回归函数的假设函数为:h θ =∑ n j=0 θ j...
contents:B. MEXor Mixup题意思路AC代码B. MEXor Mixup题意一个数组满足一个条件最小的mxa=a数组XOR值为b思路AC代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 3e5 + 5;int T;int v[N];int main(){ for (int i = 1; i < N; ++i)
错误1:System.NullReferenceException:“未将对象引用设置到对象的实例。”这个问题一开始毫无头绪,网上也没有找到有效的办法,但是第一步查询到报错有以下几种可能的情况:未完待续
本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的表示:结果为零标志ZF(Zero Flag)和溢出标志OF(Overflow Flag)。ALU通过4根控制线ALU_OP[3:0]来选择其8种功能,功能见表所示,多余的8位用于后继运算的拓展备用。 ...
两个源文件:mymain.c的内容如下:/* * linux/mykernel/mymain.c * * Kernel internal my_start_kernel * * Copyright (C) 2013 Mengning * */#include #include #include #include #include #include #in
潮点视频是一个提供优质高清、无水印的视频素材网站,站内有大量的AE模板、PR模板、实拍素材、视频背景、视频特效元素等等。菜鸟图库主要提供设计素材为主,自媒体等相关素材也很多,像商用图片、背景图、视频素材、音频素材都很齐全。主要说一下这个网站的视频素材,全部都是4K、高清质量,各种类型都有,全部都做好了分类,找起来非常方便。网站提供的全是高质量实拍视频素材,有自然、商业、航拍、建筑、科技、动物等多种类型的视频,而且所有视频都有详细的板块及标签分类,查找非常方便。
以往在项目中要用到第三方接口时会用到封装好的curl执行请求,现在有了更好的解决方案——Guzzle。下面是官方介绍:Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。发送同步或异步的请求均使用相同的接口。使用PSR-7接口来请求、...