Redis: Sentinel 2

当前最新的稳定版叫做Sentinel 2,即“哨兵二代目”,必须使用Redis 2.82.6版本中的为Sentinel 1(哨兵一代目),有很多bug,已经被废弃。

功能

Redis Sentinel提供一下功能:

  • 监控节点状态
  • 提供监控api,用于提醒用户
  • 自主发起故障转移,当master不可用时,将slave切换为master
  • 哨兵作为配置提供方,客户端通过哨兵获取到服务端信息

启动

启动哨兵服务器有一下两条命令:
redis-sentinel /path/to/sentinel.confredis-server /path/to/sentinel.conf --sentinel
要注意的时,sentinel启动的时候必须要提供配置文件。默认监听26379

配置

常用最下配置:

配置
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
  • sentinel monitor
    哨兵可以监控多个master,不同的master需要不同的命名。
    quorum为判定master不可靠的阀值:当超过quorum数量的sentinel认为master不可靠,master的状态会变成ODOWN(objectively down)
  • sentinel down-after-millisenconds
    服务器不可靠的判断依据,当sentinel ping master超过milliseconds没有reply,认定其不可靠,将master状态设置为SDOWN(subjectively down),当超过上面设定的quorum认为masterSDOWN时,master状态改为ODOWN,所有sentinel会授权一个sentinel执行failover操作。
  • sentinel failover-timeout
    默认3分钟
    这个配置有四个作用:(自行翻译)
  1. The time needed to re-start a failover after a previous failover was already tried against the same master by a given Sentinel, is two times the failover timeout.
  2. The time needed for a slave replicating to a wrong master according to a Sentinel current configuration, to be forced to replicate with the right master, is exactly the failover timeout (counting since the moment a Sentinel detected the misconfiguration).
  3. The time needed to cancel a failover that is already in progress but did not produced any configuration change (SLAVEOF NO ONE yet not acknowledged by the promoted slave).
  4. The maximum time a failover in progress waits for all the slaves to be reconfigured as slaves of the new master. However even after this time the slaves will be reconfigured by the Sentinels anyway, but not with the exact parallel-syncs progression as specified.
  • sentinel parallel-syncs
    故障转移成功后,马上将切到新的masterslave数量。

Quorum

quorum字面翻译是“法定人数”,不是很喜欢,这里就还是用e文。执行故障转移需要一下几个步骤:

  1. master的状态为ODOWN
  2. 一个哨兵获取到授权执行故障转移操作
    quorum代表的数量主要体现在第1个步骤中,当有``个哨兵判断masterSDOWN时,master就被判断为ODOWN状态。如图:
`ODOWN`判断

假设上图中sentinel_1打算执行故障转移操作,就必须获取所有sentinel的授权,在判断master_1ODOWN时,sentinel_1sentinel_2的结论是一致的,所以只需向余下的哨兵们获取授权即可,即sentinel_3

当一个哨兵对给定master执行故障转移操作时,其他哨兵并没有放弃对该master执行故障转移的权利(好爱抢功劳),它们只是暂时放弃,当时间超过配置的failover-timeout时,其他哨兵们就会尝试对给定的master进行故障转移操作,直至成功。

哨兵们的配置

哨兵们master们正常运行的时候,每个哨兵都维护着相同的配置,各个节点会相互交换自己的配置版本号,一旦运行中有较新的版本出现,就会使用使用新的配置代替老的配置。在故障转移的过程,一旦一个哨兵获取到执行故障转移的授权,会立马生成新的版本号,一旦故障转移成功,会通过master们slaver们发布新的配置文件,其他哨兵就会不得不使用最新的配置文件。正如上面说的,如果超过failover-timeout还没有成功的话,又有一个哨兵会去执行故障转移操作,会生成与前者不同的配置版本(功劳不能被抢嘛)。

配置传播

执行故障转移的过程中,对将要上任的slaverslaver of no one(备胎转正),其他slaver发送slaver of(新爸爸),只要执行哨兵收到了ACK,就算这个过程还在进行,故障转移也算做成功,该哨兵会发布新的配置。
哨兵们传播配置文件主要依赖redis的消息订阅功能,官方叫gossip,就是八卦了,哨兵们都是老死不想往来的,都是通过“小道消息”获取彼此间的信息,从上文看,还特别爱赶潮流。哨兵会和所有的master(正宫)和slaver(备胎)宣布自己的配置版本信息(好像自己有一手资料似得),同时也会打听其他哨兵手上的情报,以防自己落伍了。

配置通过__sentinel__:hello通道广播

配置传播

八卦知天下

哨兵最开始不知道其他哨兵的存在,在他去嫖master的时候,顺便在master那里安插一个盯梢的,负责打听各路消息,保证自己掌握一手资料,和其他哨兵的情报。同时哨兵又爱吹牛,稍微一点新变化就爱吹嘘,所以情报也被其他哨兵打听走。master作为店里的头牌,加上日理万机的本事,所以生意基本上它一个人做,除非客人一定要找实习生(slaver)。傲娇的master通常会和哨兵们讲起自己的身价,比如有多人觊觎自己的位置.etc。作为嫖客的哨兵,一旦知道master服务不行了,就会发起选秀,就会去找替补slaver,当然哨兵们都是争相做主办方的,这样第一个睡嘛~嫖客无情~

哨兵每隔2秒发布它的个人信息,包括ipportrunid
哨兵通过__sentinel__:hello获取到其他哨兵的情报,将它们加入到自己的盯梢薄里
哨兵发布的消息包含所有的master配置信息,一旦哨兵发现自己的情报落后与其他哨兵,就马上会更新到最新情报
哨兵发现其他哨兵的存在,回去查找自己的情报薄,看看这个哨兵有没有存在

情报保存

哨兵视情报为生命,所以不管甚么时候,一旦获取到新的情报,就立马刻在自家的碑文上(写到硬盘),做传世之用。

备胎转正的条件

master的候选者参照几下几点:

  1. master失去链接的时间
  2. 级别
  3. master学习到的功力(原文:replication offset processed)
  4. Run ID

如果和master失恋的时间超过: (down-after-milliseconds * 10) + milliseconds_since_master_is_in_SDOWN_state,则无法当选为候选人.
master的考察项:
1. 优先级越高越优先(redis.conf中的slave-priority数值越小,不能小于0,等于0,则宣布一辈子做备胎)
2. 相同优先级就考察从master学到的本事,越多越好
3. 当优先级相同,本事一样,那就看名字了,哨兵认为Run Id越小越好

指令

哨兵的通信协议和的redis-server实例相同,可以通过redis-cli -h -p来访问,支持一下命令:

  • PING
  • SENTINEL masters 获取该哨兵已有的master信息
  • SENTINEL master 获取指定master情报
  • SENTINEL slaves 获取指定masterslaver情报
  • SENTINEL get-master-addr-by-name 获取指定masteripport
  • SENTINEL reset 重置所有命名符合patternmaster
  • SENTINEL failover 强制对一个无法链接的master执行故障转移操作

运行时的配置指令

  • SENTINEL MONITOR 新增监控的master,不能使用hostname代替真实的ip
  • SENTINEL REMOVE 不再监控指定master
  • `SENTINEL SET

哨兵的添加与删除

依赖八卦体系,添加哨兵很简单,只要监控master就可以被大家发现。删除哨兵则需要一下步骤:

  1. 杀死该哨兵进程
  2. 发送SENTINEL RESET *给其他哨兵
  3. 检查所有哨兵,发送指令SENTINEL master给所有哨兵来查看活跃的哨兵数量

参考文献

  1. 官方文档
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容