前言 本文是以之前写的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-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端口
文章图片
使用AnotherRedisDesktopManager可视化软件新建三个连接,分别代表一个主结点和两个从结点
文章图片
主结点可以成功添加字段
文章图片
从结点不可以添加字段,但可以查询到主结点添加的字段
文章图片
2、哨兵结点监控,实现高可用
查看端口并杀掉主节点端口(8974)
# 查看端口
ps -ef | grep redis# 杀掉指定端口
kill -9 xxxx
文章图片
我们会发现,从节点(8975、8976)会出现连接不上主节点(8974)的提示
文章图片
等待10几秒,观看哨兵状态,发现哨兵们已经投票完成,8976端口票数最多,成为主节点
文章图片
从节点(8975)重新连接主节点(8976)
文章图片
测试主节点(8976)能否添加字段,发现可以添加
文章图片
重新启动8974端口服务,发现8974端口将8976端口视为主节点,8974成为从节点
文章图片
推荐阅读
- redis|Redis集群之哨兵模式
- mysql|MySQL 高级(进阶) SQL 语句 (一)
- 小笔记|MySQL造成更新死锁及插入死锁的几种常见原因
- #|2.6_6 Jedis (java操作Redis)
- mysql|MYSQL的JDBC编程
- mysql|JDBC 数据库编程
- mysql|mysql索引和事务
- 笔记|MySQL(JDBC编程)
- mysql|初始JDBC 编程