Redis Sentinel(哨兵)部署

Redis-sentinel是Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。在一般的分布式中心节点数据库中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性。

一、Redis Sentinel规划

IP 端口号 角色
192.168.1.51 7000 Redis Master
192.168.1.52 7000 Redis Master
192.168.1.53 7000 Redis Master
192.168.1.51 27000 Sentinel
192.168.1.52 27000 Sentinel
192.168.1.53 27000 Sentinel

一个一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统足够稳健。此时,不仅哨兵会同时监控主数据库和从数据库,哨兵之间也会相互监控。在这里,建议大家哨兵至少部署3个,并且使用奇数个哨兵。

二、RedisSentinel部署

1、安装Redis

在3台服务器上分别安装Redis。需要注意的是,如果要给Redis设置密码,需要在3个Redis的配置文件中设置相同的密码。

requirepass"Redis-Password"

2、设置主从复制

在2个SlaveRedis的配置文件中声明所从属的主数据库。

 slaveof192.168.1.51 7000

这里需要注意一点,如果主数据库设置了密码,需要所有Redis的配置文件中设置masterauth"Redis-Password",包括主数据库。Sentinel可以切换主从数据库,主数据库可能会变成从数据库,因此也需要设置主数据库密码。

3、配置Sentinel.config

  • 创建配置文件
    创建一个sentinel目录,新建sentinel.conf文件(Redis提供了该文件的模版)。配置文件内容如下:
##sentinel实例之间的通讯端口

daemonize yes

port 27000

#redis-master

sentinel monitor redis-master 192.168.1.51 7000 2

sentinel down-after-milliseconds redis-master 5000

sentinel failover-timeout redis-master 900000

sentinel parallel-syncs redis-master 2

sentinel auth-pass redis-master 123456

logfile "/data/bd/redis/sentinel/sentinel.log"
  • 配置项说明:

1)daemonize yes

– 以后台进程模式运行

2)port 27000

– 哨兵的端口号,该端口号默认为26379。

3)logfile"/data/bd/redis/sentinel/sentinel.log"

– log文件所在地

4)sentinel monitor redis-master 192.168.1.517000 2

– redis-master是主数据的别名,考虑到故障恢复后主数据库的地址和端口号会发生变化,哨兵提供了命令可以通过别名获取主数据库的地址和端口号。

– 192.168.1.51 7000为初次配置时主数据库的地址和端口号,当主数据库发生变化时,哨兵会自动更新这个配置,不需要我们去关心。

–2,该参数用来表示执行故障恢复操作前至少需要几个哨兵节点同意,一般设置为N/2+1(N为哨兵总数)。

5)sentinel down-after-milliseconds redis-master 1000

– 如果master在多少秒内无反应哨兵会开始进行master-slave间的切换,使用“选举”机制

6)sentinel failover-timeout redis-master 5000

– 如果在多少秒内没有把宕掉的那台master恢复,那哨兵认为这是一次真正的宕机,而排除该宕掉的master作为节点选取时可用的node然后等待一定的设定值的毫秒数后再来探测该节点是否恢复,如果恢复就把它作为一台slave加入哨兵监测节点群并在下一次切换时为他分配一个“选取号”。

4、Sentinel运行

  • 启动Redis和Sentinel
    配置完Redis和Sentinel之后,按顺序启动各个角色。启动顺序如下:
    Master->Slave->Sentinel,要确保按照这个顺序依次启动。
    Sentinel的启动命令和Redis类似,终端输入:
redis-sentinel /data/bd/redis/sentinel/sentinel.conf

启动成功后可以通过redis客户端工具查看当前Sentinel的信息,终端输入:

redis-cli -p 27000-h 192.168.1.51 INFO Sentinel
# Sentinel

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

master0:name=redis-master,status=ok,address=192.168.1.51:7000,slaves=2,sentinels=3
  • 查看sentinel日志
    日志路径在配置文件中设置,终端输入:
tail -f/data/bd/redis/sentinel/sentinel.log
3273:X 08 Apr 10:44:14.733 # Sentinel runid is 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1

3273:X 08 Apr 10:44:14.733 # +monitor master redis-master 192.168.1.51 7000 quorum 2

3273:X 08 Apr 10:44:14.735 * +slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:44:14.744 * +slave slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:48:12.733 * +sentinel sentinel 192.168.1.52:27000 192.168.1.52:27000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:48:20.533 * +sentinel sentinel 192.168.1.53:27000 192.168.1.53:27000 @ redis-master 192.168.1.51 7000

+slave和+sentinel分别代表成功发现了从数据库和其他Sentinel。

  • 查看sentinel.conf
    重新打开sentinel.conf文件,发现sentinel自动生成了一些信息,记录了监控过程中的状态变化。
##sentinel实例之间的通讯端口

daemonize yes

port 27000

#redis-master

sentinel monitor redis-master 192.168.1.51 7000 2

sentinel down-after-milliseconds redis-master 5000

sentinel failover-timeout redis-master 900000

sentinel parallel-syncs redis-master 2

sentinel auth-pass redis-master 123456

logfile "/data/bd/redis/sentinel/sentinel.log"

# Generated by CONFIG REWRITE

dir "/soft/sentinel"

sentinel config-epoch redis-master 0

sentinel leader-epoch redis-master 0

sentinel known-slave redis-master 192.168.1.52 7000

sentinel known-slave redis-master 192.168.1.53 7000

sentinel known-sentinel redis-master 192.168.1.52 27000 ef356da8dadb6a16268d25611942ecf001d5cb2e

sentinel known-sentinel redis-master 192.168.1.53 27000 188fa69f695fd17639ce1ee38592e894d8a14331

sentinel current-epoch 0                         

三、Sentinel验证

按照之前的步骤我们已经配置好了3台Redisnode和Sentinel集群,Redis主数据库为192.168.1.51:7000。

1、模拟主数据库故障

这里直接关闭主数据库,终端输入:

redis-cli -p 7000 shutdown

经过一段时间后,我们可以看到sentinel.log文件中增加了以下内容:

3273:X 08 Apr 10:58:08.330 # +sdown master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.385 # +odown master redis-master 192.168.1.73 7000 #quorum 2/2

3273:X 08 Apr 10:58:08.385 # +new-epoch 1

3273:X 08 Apr 10:58:08.385 # +try-failover master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.388 # +vote-for-leader 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.392 # 192.168.1.52:27000 voted for 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.393 # 192.168.1.53:27000 voted for 725b3bc06f18e8db913a44bbbdbc23a3be54c4d1 1

3273:X 08 Apr 10:58:08.489 # +elected-leader master redis-master 192.168.1.51 7001

3273:X 08 Apr 10:58:08.489 # +failover-state-select-slave master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.580 # +selected-slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.580 * +failover-state-send-slaveof-noone slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:08.633 * +failover-state-wait-promotion slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.561 # +promoted-slave slave 192.168.1.52:7000 192.168.1.52 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.561 # +failover-state-reconf-slaves master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:09.612 * +slave-reconf-sent slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.517 # -odown master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.576 * +slave-reconf-inprog slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.576 * +slave-reconf-done slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.643 # +failover-end master redis-master 192.168.1.51 7000

3273:X 08 Apr 10:58:10.643 # +switch-master redis-master 192.168.1.51 7000 192.168.1.52 7000

3273:X 08 Apr 10:58:10.643 * +slave slave 192.168.1.53:7000 192.168.1.53 7000 @ redis-master 192.168.1.52 7000

3273:X 08 Apr 10:58:10.643 * +slave slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

3273:X 08 Apr 10:58:15.654 # +sdown slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

+sdown 表示哨兵主观认为数据库下线
+odown 表示哨兵客观认为数据库下线
+try-failover 表示哨兵开始进行故障恢复
+failover-end 表示哨兵完成故障修复,其中包括了领头哨兵的选举、备选从数据库的选择等等较为复杂的过程
+switch-master表示主数据库从51服务器迁移到52服务器
+slave列出了新的主数据库的2个从数据库,而哨兵并没有彻底清除51服务器的实力信息,这是因为停止的实例有可能会在将来恢复,哨兵会让其重新加入进来

2、恢复故障数据库

重新启动192.168.1.51上的Redis数据库,查看sentinel.log文件,日志中增加了以下的内容:

3273:X 08 Apr 11:19:44.847 # -sdown slave 192.168.1.51:7000 192.168.1.51 7000 @ redis-master 192.168.1.52 7000

-sdown 哨兵将下线的Redis实例重新加入,并且作为新的主数据库的从数据库存在

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

推荐阅读更多精彩内容

  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,030评论 1 51
  • 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-s...
    神秘者007阅读 748评论 0 3
  • 在朝向你的每一片海里 我带着所有希冀漂流 看太阳每天升落 做个客死他海的人 就是个诗意的抉择 我不想回去 身体充斥...
    鹿春丶阅读 262评论 2 3
  • 社会心理学家将他们的想法与发现构建成理论。一个好理论将会从一长串事实中提炼出许多简短的预测原则。我们可以利用这些例...
    Johnny_Su阅读 887评论 0 0
  • 一路走来从牙牙学语的自己到只会加减法的小学迷再到蓝色初中校服的我们再到后来的发育成熟的高中学姐再到现在博览...
    暖心99阅读 92评论 0 0