Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)

前言 本文是以之前写的Redis从零搭建这篇文章基础下完成得哨兵集群部署,最好可以先去看一下Redis从零搭建这篇文章,以免遇到问题
一主二从三哨兵:
①主可读写
②从只可读不可写
③哨兵节点监控集群状态,进行自动切换,实现高可用
一、提前准备 在opt目录下创建cluster-sentinel目录

mkdir cluster-sentinel

复制三份opt目录下的redis-5.0.14文件夹到cluster-sentinel目录下并依次命名为redis-5.0.14-8974、redis-5.0.14-8975、redis-5.0.14-8976(8974为主,8975和8976为从)
# 复制上一级目录下的redis-5.0.14文件夹到本目录 cp -r ../redis-5.0.14 .

# 重命名redis-5.0.14为redis-5.0.14-8974 mv redis-5.0.14 redis-5.0.14-8974

操作完以后,目录结构为
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

二、修改配置文件 这里以redis-5.0.14-8974目录为例,其他两个目录得修改方法与之相同。
(注意8974为主结点,8975、8976为从结点)
进入redis-5.0.14-8974目录,编辑redis.conf配置文件
vi redis.conf

修改的地方如下
#端口 xxxx为8974\8975\8976 port xxxx# 主从复制 公网ip和主结点端口(8974) # 注意:主结点目录不用添加这条代码,否则会出现不断复制自身的情况,从结点目录需要添加这条代码 # replicaof # 旧版:# slaveof replicaof 公网ip 8974# 主节点密码 masterauth xxx

修改完毕后退出,继续编辑sentinel.conf配置文件
vi sentinel.conf

修改的地方如下
#设置哨兵端口号 26374/26375/26376 port xxxxx# 初始主节点ip和端口,2代表大于等于2票即可成为主节点 sentinel monitor mymaster 实际ip 8974 2# 主节点密码 sentinel auth-pass mymaster xxx

三、启动redis服务和哨兵服务 复制六个连接,一个代表主节点(8974),两个代表从节点(8975、8976),三个代表哨兵节点(26374、26375、26376)
分别进入主节点和从节点的bin目录,启动redis服务
./redis-server ../redis.conf

【Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)】分别进入三个哨兵结点的bin目录,启动哨兵服务
./redis-sentinel ../sentinel.conf

都启动成功即可,如下图

四、测试哨兵集群 测试内容:
①主节点修改或者添加内容,2个从节点同步查询
②从节点,修改或者添加,提示只读
③停止主节点,等待从节点切换主节点(可观察日志)
(其中一个从节点在3个哨兵节点进行投票后,升级成主节点,另外一个从节点成为新主节点的从节点【哨兵监控生效】)
④再停止当前的主节点,等待最后的从节点升级成主节点
(投票升级成主节点【哨兵监控生效】)
⑤只有三个节点全部停止redis服务停止,否则一直可提供服务
1、主可读写,从只可读
在云服务中添加安全组规则,开放8974、8975、8976、26374、26375、26376端口
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

使用AnotherRedisDesktopManager可视化软件新建三个连接,分别代表一个主结点和两个从结点
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

主结点可以成功添加字段
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

从结点不可以添加字段,但可以查询到主结点添加的字段
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

2、哨兵结点监控,实现高可用
查看端口并杀掉主节点端口(8974)
# 查看端口 ps -ef | grep redis# 杀掉指定端口 kill -9 xxxx

Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

我们会发现,从节点(8975、8976)会出现连接不上主节点(8974)的提示
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

等待10几秒,观看哨兵状态,发现哨兵们已经投票完成,8976端口票数最多,成为主节点
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

从节点(8975)重新连接主节点(8976)
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

测试主节点(8976)能否添加字段,发现可以添加
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

重新启动8974端口服务,发现8974端口将8976端口视为主节点,8974成为从节点
Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
文章图片

    推荐阅读