redis部署模式-哨兵模式

        Redis Sentinel是一个分布式架构,包含若干个Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当发现节点不可达时,会对节点做下线标识。

       每个sentinel节点其实就是一个redis实例,与主从节点不同的是sentinel节点作用是用于监控redis数据节点的,而sentinel节点集合则表示监控一组主从redis实例多个sentinel监控节点的集合,比如有主节点master和从节点slave-1、slave-2,为了监控这三个主从节点,这里配置N个sentinel节点sentinel-1,sentinel-2,...,sentinel-N。如下图是sentinel监控主从节点的示例图:

       哨兵模式的提出基于下面两个考虑:

       一方面由于主从模式启动了多个redis实例,并且每个实例都使用不同的ip(如果在不同的机器上)和端口号,根据前面所述,因为每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的redis地址,因而需要手动更改客户端连接配置重新连接。

       另一方面主从模式下,如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,因而需要人工进行故障转移(failover)工作。

      为了解决这两个问题,在2.8版本之后redis正式提供了sentinel(哨兵)架构。

        下面通过部署一个Redis Sentinel实例来了解整体框架,角色分配及IP、端口信息如下

        3个Sentinel节点的部署方法是相同的(端口不同)。在redis安装目录下有个默认的sentinel配置文件sentinel.conf,分别复制为3各文件26379.conf、26380.conf和26381.conf,修改26279.conf配置为

// Sentinel节点的端口

port 26379 

dir /var/redis/data/

logfile "26379.log"

 

// 当前Sentinel节点监控 127.0.0.1:6379 这个主节点

// 2代表判断主节点失败至少需要2Sentinel节点节点同意

// mymaster是主节点的别名

sentinel monitor mymaster 127.0.0.1 6379 2

 

//每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒且没有回复,则判定不可达

sentinel down-after-milliseconds mymaster 30000

 

//Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1

sentinel parallel-syncs mymaster 1

 

//故障转移超时时间为180000毫秒

sentinel failover-timeout mymaster 180000

        对于端口为26380和26381的sentinel,其配置和上述类似,只需要把相应的端口号修改为对应的端口号即可。参数中sentinel monitor mymaster 127.0.0.1 6379 2这里的端口号6379是不用更改的,因为sentinel是通过检测主节点的状态来得知当前主节点的从节点有哪些的,因而设置为主节点的端口号即可。配置完成后我们首先启动三个主从节点,然后分别使用三个配置文件使用如下命令启用sentinel:

[root@localhost ~]#/usr/local/redis-2.6.14/src/redis-sentinel   /usr/local/redis-2.6.14/26379.conf

[root@localhost ~]#/usr/local/redis-2.6.14/src/redis-sentinel  /usr/local/redis-2.6.14/26380.conf

[root@localhost ~]#/usr/local/redis-2.6.14/src/redis-sentinel  /usr/local/redis-2.6.14/26381.conf

        看下监控结点的工作状态

[root@localhost redis-2.6.14]# ./src/redis-cli -h127.0.0.1 -p 26379 

redis 127.0.0.1:26379>

redis 127.0.0.1:26379>

# Sentinel

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

redis 127.0.0.1:26379>

            最后一行,name=mymaster,说明主节点名称叫做mymastr;slaves=2,说明主节点有2个从节点;sentinels=3说明启动了3个哨兵结点。

        现在模拟主结点故障,手动kill掉6379端口进程。当主节点下线时长超过配置的下线时长30000秒,Redis Sentinel执行故障转移操作。

        此时,我们查看一下Sentinel节点监控的主节点信息:

redis 127.0.0.1:26379> sentinel masters

1)  1)"name"

    2)"mymaster"

    3)"ip"

    4)"127.0.0.1"

    5)"port"

    6)"6381"

    7)"runid"

    8)"74cc6983cee3e6574b72f47f9119662e7ec5d332"

    9)"flags"

   10)"master"

        从上面看,6381结点现在成为主结点。再看一下Sentinel节点监控的从节点信息:

redis 127.0.0.1:26379> sentinel slaves mymaster

1)  1)"name"

    2)"127.0.0.1:6379"

    3)"ip"

    4)"127.0.0.1"

    5)"port"

    6)"6379"

    7)"runid"

    8)""

    9)"flags"

   10)"s_down,slave,disconnected,demote" //端口6379的原主节点已经断开了连接

….

2)  1)"name"

    2)"127.0.0.1:6380"

    3)"ip"

    4)"127.0.0.1"

    5)"port"

    6)"6380"

    7)"runid"

    8)"aea10a0389fade1b2ab262f0c5cbf8d889b086f2"

    9)"flags"

   10)"slave"       //本来的从节点,还是从节点的role

……

同样从节点只能读、不能写及删除,否则报:(error) READONLY You can't write against a read only slave.)。

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

推荐阅读更多精彩内容