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哨兵集群部署教程—从零开始(一主二从三哨兵)_第1张图片

二、修改配置文件

这里以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 <masterip> <masterport>
# 旧版:# slaveof <masterip> <masterport>
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 

分别进入三个哨兵结点的bin目录,启动哨兵服务

./redis-sentinel ../sentinel.conf 

都启动成功即可,如下图

四、测试哨兵集群

测试内容:
①主节点修改或者添加内容,2个从节点同步查询
②从节点,修改或者添加,提示只读
③停止主节点,等待从节点切换主节点(可观察日志)
(其中一个从节点在3个哨兵节点进行投票后,升级成主节点,另外一个从节点成为新主节点的从节点【哨兵监控生效】)
④再停止当前的主节点,等待最后的从节点升级成主节点
(投票升级成主节点【哨兵监控生效】)
⑤只有三个节点全部停止redis服务停止,否则一直可提供服务

1、主可读写,从只可读

在云服务中添加安全组规则,开放8974、8975、8976、26374、26375、26376端口
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第2张图片

使用AnotherRedisDesktopManager可视化软件新建三个连接,分别代表一个主结点和两个从结点
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第3张图片
主结点可以成功添加字段
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第4张图片
从结点不可以添加字段,但可以查询到主结点添加的字段
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第5张图片

2、哨兵结点监控,实现高可用

查看端口并杀掉主节点端口(8974)

# 查看端口
ps -ef | grep redis

# 杀掉指定端口
kill -9 xxxx

Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第6张图片
我们会发现,从节点(8975、8976)会出现连接不上主节点(8974)的提示
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第7张图片
等待10几秒,观看哨兵状态,发现哨兵们已经投票完成,8976端口票数最多,成为主节点
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第8张图片
从节点(8975)重新连接主节点(8976)
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第9张图片
测试主节点(8976)能否添加字段,发现可以添加
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第10张图片
重新启动8974端口服务,发现8974端口将8976端口视为主节点,8974成为从节点
Redis哨兵集群部署教程—从零开始(一主二从三哨兵)_第11张图片

你可能感兴趣的:(Redis,redis,数据库)