Linux安装redis-哨兵模式部署

萨瓦迪卡10个月前 (09-02)redis5970


哨兵部署:在master节点出现故障后,哨兵进程会自动将master下线,自动将子节点提升为主节点。完成故障转移,实现高可用性。

91226c7b-0f7a-4f6e-9165-038db56113b9.png

这个架构图里面,我们部署了3个哨兵节点组成了一个哨兵集群。它们在启动的时候会进行哨兵选举,选举出一个领导者,在出现故障转移的时候,由领导者进行主导,而触发故障转移需要大部分的哨兵节点都认为主节点发生了故障。这个状态我们称为客观下线。与之对应的是主观下线:也就是单个哨兵发现主节点出现故障,会去询问其他的节点,确认当前主节点是否已经出现故障,当其他哨兵确认主节点出现了故障,并且数量超过了大多数。这时就会从主观下线转为客观下线,一旦确认客观下线就会触发故障转移。由领导者主导,将主节点进行下线操作。然后在从节点里选一个晋升为主机点。然后告知客户端,新的主节点在什么位置,实现无缝切换。旧的主节点恢复后会重新加入到整个集群中,只是角色变成了从节点。

3.1. 哨兵模式部署

整体架构:这个结构是基于主从部署的基础上,新增你了3个哨兵节点,每个哨兵节点都是监控 同一个主节点129的状态.


d4a5aad5-25da-4365-8569-46e50d144e53.png


3 个机器都需要修改 sentinel.conf 配置(vim sentinel.conf),配置完成之后先从主节点开始启动哨兵。
protected-mode no #6⾏,关闭保护模式
daemonize yes  #15⾏,指定sentinel为后台启动
logfile /opt/software/redis/redis-stable/sentinel.log #34⾏,指定⽇志存放路径
dir /opt/software/redis #73⾏,指定数据库存放路径
sentinel monitor mymaster 192.168.75.129 6379 2#93⾏,修改 指定该哨兵节点监控20.0.0.20:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:⾄少需要2个哨兵节点同意,才能判定主节点故障并进⾏故障转移
sentinel down-after-milliseconds mymaster 30000 #134⾏,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000 #234⾏,故障节点的最⼤超时时间为180000(180秒)

将三个服务都启动redis-server redis.conf后,可以用redis-cli info replication查看下当前主从架构的状态。

b5e1a4ca-2598-46dd-b181-cd856acec4dd.png

    • 操作

    • 然后启动哨兵(主节点操作):redis-sentinel sentinel.conf

    • 查看哨兵(主节点操作):   redis-cli -p 26379 info sentinel

测试:将129主节点下线:redis-cli shutdown,然后查看当前的sentinel.log日志: cat sentinel.log。
节点查看状态:redis-cli info replication。发现131的节点已变成了主节点。

0be9eff4-7ba9-49e7-8c4c-83130f738b0a.png


也可以到129上,日志文件查看下变化。cat redis.conf     cat sentinel.conf


本文原创,转载必追究版权。

分享给朋友:

相关文章

Oracle 数据库cmd命令备份

 //导出exp wsbspt/wsbspt@192.168.1.101/wsbs file=D:/wsbspt.dmp log=D:/wsbspt.txt//导入imp &nbs...

js动态加载复选框checkbox(XML串)

 首先,使用JS动态产生Checkbox可以采用如下类似的语句:代码如下:var checkBox=document.createElement("input");che...

揭秘!如何用一句话找到你的一万微友

 玩微商一年半的时间了,现在的微商如火如荼,很多刚进入微商行业的伙伴都在烦恼一个问题,那就是粉丝、粉丝,我最近调查了身边30多个微友,有25个竟然都是好友问题,有的竟然给我说主动加了50多个...

get/post方式调用http接口

get/post方式调用http接口

 1. 项目环境如下:myeclipse8.5 、tomcat5.0/weblogic、xp、JDK:开发1.5,编译1.4为了方便,在原来的web项目UpDown中新建了一个httpcal...

坑爹的ShowModalDialog 后台传值解决方案

 今天遇到需要ShowModalDialog打开页面,通过acceptanceIds 参数值后台过滤出相应结果前台  var url = "loadAccept...

freeMarker Jfinal 获取session里的值

问题:freeMaker session取值的常用格式都试过 session["xxx"],session.xxx 直接xxx 都取不出来?????解决:JFinal与Struts...

评论列表

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。