Redis 学习四 哨兵架构

昨天学习了 Redis 简单的集群架构. 但是有一些缺点, 就是在主节点挂了后, 需要手动的配置从节点将其变为主节点. 那么今天学的这个, 就可以解决这个手动配置的过程. 也就是哨兵架构. 它是一种用于管理多个 Redis服务器的系统, 它提供了一种机制, 可以自动切换主节点. 当主节点出现故障时, 可以自动从从节点中选择一个作为新的主节点.

1. 什么是哨兵架构

哨兵架构sentinel 是一种高可用性解决方案. 当主节点出现故障时, 哨兵架构sentinel可以自动将系统切换到从节点, 从而保证系统的持续运行. 此外, 哨兵架构sentinel还可以帮助开发者监控Redis服务器的运行状态, 发送通知, 记录事件等.

哨兵架构sentinel的工作原理是通过哨兵进程来实现的.
哨兵进程是一个独立的进程, 它定期检查主节点和从节点的状态. 当主节点出现故障时,哨兵进程会从从节点中选择一个作为新的主节点, 并更新配置信息.

哨兵不提供读写服务, 主要就是为了监控 Redis 节点. 哨兵架构下的 client 端第一次从哨兵找出 Redis 主节点, 后续就直接访问 Redis 的主节点, 不会每次都通过哨兵代理访问 Redis 的主节点. 当主节点发生变化, 哨兵会第一时间感知到. 并且将新的 Redis 主节点通知给 client 端.(这里面 Redis 和 client 端一般都实现了订阅功能. 订阅哨兵 sentinel 发布的节点变动消息)


2. 哨兵架构的简单搭建

1、复制一份sentinel.conf文件
cp sentinel.conf sentinel‐26379.conf

2、将相关配置修改为如下值:
port 26379
daemonize yes
pidfile "/var/run/redis‐sentinel‐26379.pid"
logfile "26379.log"
dir "/usr/local/redis‐5.0.3/data" 

# sentinel monitor <master‐redis‐name> <master‐redis‐ip> <master‐redis‐port> <quorum> 
# quorum是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 + 1),master才算真正失效

sentinel monitor mymaster 192.168.0.60 6379 2 # mymaster这个名字随便取,客户端访问时会用到


3、启动sentinel哨兵实例 
src/redis‐sentinel sentinel‐26379.conf 


4、查看sentinel的info信息 
src/redis‐cli ‐p 26379 
127.0.0.1:26379>info 
可以看到Sentinel的info里已经识别出了redis的主从 

5、可以自己再配置两个sentinel,端口26380和26381,注意上述配置文件里的对应数字都要修改  

sentinel 集群都启动完毕后, 会将哨兵集群的元数据信息写入所有的 sentinel 的配置文件里去(追加在文件的最下面).查看如下配置文件 sentinel-26379.conf.

1 sentinel known‐replica mymaster 192.168.0.60 6380 #代表redis主节点的从节点信息 
2 sentinel known‐replica mymaster 192.168.0.60 6381 #代表redis主节点的从节点信息 
3 sentinel known‐sentinel mymaster 192.168.0.60 26380 52d0a5d70c1f90475b4fc03b6ce7c3c56935760f #代表感知到的其它哨兵节点 
4 sentinel known‐sentinel mymaster 192.168.0.60 26381 e9f530d3882f8043f76ebb8e1686438ba8bd5ca6 #代表感知到的其它哨兵节点 

Redis主节点如果挂了, 哨兵集群会重新选举出新的Redis主节点, 同时会修改所有sentinel节点配置文件 的集群元数据信息, 比如6379的Redis如果挂了, 假设选举出的新主节点是6380, 则sentinel文件里的集 群元数据信息会变成如下所示:

1 sentinel known‐replica mymaster 192.168.0.60 6379 #代表主节点的从节点信息 
2 sentinel known‐replica mymaster 192.168.0.60 6381 #代表主节点的从节点信息 
3 sentinel known‐sentinel mymaster 192.168.0.60 26380 52d0a5d70c1f90475b4fc03b6ce7c3c56935760f #代表感知到的其它哨兵节点 
4 sentinel known‐sentinel mymaster 192.168.0.60 26381 e9f530d3882f8043f76ebb8e1686438ba8bd5ca6 #代表感知到的其它哨兵节点 

同时还会修改sentinel 文件里之前配置的 mymaster对应的6379端口,改为6380

1 sentinel monitor mymaster 192.168.0.60 6380 2

3. 总结

简单的来说 Redis 的哨兵架构工作流程可以分为以下几个步骤

  • 启动
    Redis 服务器启动时, 哨兵进程也会被启动. 哨兵进程是一个独立的进程, 它负责监控 Redis 主节点和从节点的运行状态.
  • 监控
    哨兵进程定期检查主节点和从节点的状态, 它会检查服务器是否正常运行, 是否能够正常响应请求.
  • 故障检测
    如果哨兵进程检测到主节点无法正常运行, 它会将这个信息广播给其他的哨兵进程. 当大多数哨兵进程都确认主进程出现故障后, 哨兵进程会开始故障恢复流程.
  • 选择新的主节点
    哨兵进程会从从节点中选择一个作为新的主节点, 选择的标准包括节点的运行状态, 数据的更新程序等.
  • 切换主节点
    当新的主节点被选定后,哨兵进程会更新配置信息, 将所有的请求重定向到新的主节点.
  • 通知client
    哨兵进程通知应用程序主节点已经改变, 应用程序需要更新自己的配置信息,以便将请求发送到新的主节点.
哨兵架构简单示意图
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容