哨兵模式是redis高可用的一种解决方案。
哨兵必须用三个实例取保证自己的高可用,但是哨兵+主从模式是不能保证消息不丢失的。
为什么用三个来保证呢?
假设现在有两个服务器,第一台有redis主节点M1,和哨兵S1,第二台有redis从节点S2,哨兵S2。
如果M1宕机,S1和S2中只要有1个哨兵认为master宕机就可以还行切换,此时哨兵大多数(我理解的大多数的过半)还在运行,那么S1,S2能通过选举,拿出来一个哨兵进行故障转移。
如果第一个服务器整个宕机,M1,S1都已经死掉了,此时S2发现M1宕机,但是哨兵只有一个了,不满足大多数的机器存活,无法选举,就没有办法来执行故障转移。虽然另外一台机器还有一个R1,但是故障转移不会执行。
经典的是三节点的哨兵集群
如果M1所在机器宕机了,那么三个哨兵还剩下2个,S2和S3可以一致认为master宕机,然后选举出一个来执行故障转移。
同时3个哨兵的大多数是2,所以还剩下的2个哨兵运行着,就可以允许执行故障转移。
接下来谈一谈怎么做哨兵
首先我们需要搭建个一主两从的redis,单个节点的redis安装链接如下
redis安装包下载地址Redis
我们可以将单个redis安装三次(6381为主机,6380,6379为从机),然后修改配置文件
1.配置redis.conf文件中的端口号分别为6379,6380,6381,
2.daemonize均为yes
3.6380和6379 均添加slaveof 127.0.0.1 6379 (我是在一台服务器上安装的,若不是一台服务器,ip换为redis主机ip)
分别使用https://www.jb51.net/article/src/redis-server https://www.jb51.net/article/myredis/redis.conf 命令启动redis。
启动后使用https://www.jb51.net/article/src/redis-cli -p 6379 -h 127.0.0.1 连接redis的客户端 (ip和端口换成自己的)
再执行info Replication,即可看到主从状态
三台状态如下
主从就搭建好了。
接下来配置哨兵
将刚刚的文件redis-6379 复制三份,分别重命名为sentinel-26379,sentinel-26380,sentinel-26381
然后分别修改三个文件的配置文件sentinel.conf
port 26379
#守护进程,后台启动
daemonize yes
#监测redis集群的主机
sentinel monitor mymaster 127.0.0.1 6381 1
修改完毕之后使用https://www.jb51.net/article/src/sentinel-server https://www.jb51.net/article/sentinel.conf启动,成功后,
使用https://www.jb51.net/article/src/resic-cli -p 26379 命令连接sentinel(其他两个也可以使用这个连接),成功后,使用info命令,可以看到监听的redis集群状态
到此这篇关于redis哨兵模式详解的文章就介绍到这了,更多相关redis哨兵模式详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!