Redis主从复制与哨兵(搭建篇)

傷城~ 2022-02-23 12:40 377阅读 0赞

SpringBoot整合 Docker Redis哨兵部署

  • 开头
  • 主从Redis部署
    • 主Redis服务器配置
    • 从服务器配置
    • 哨兵服务器配置
    • SpringBoot整合
    • 功能测试

开头

最近在项目中使用到redis哨兵,特此记录

部署环境CentOS7,Docker18.09.3,Redis:3.2

省去CentOS下安装docker和下拉Redis镜像步骤,可以参照:http://www.runoob.com/docker/docker-tutorial.html

进入正文

开始部署哨兵前需要先部署主从Redis

主从Redis部署

主Redis服务器配置

  1. Redis服务器无需额外的配置,按照项目的需求配置redis.conf即可

从服务器配置

  1. 从服务器的slaveof.conf中需要配置如下,主redisip和端口号

在这里插入图片描述在docker中启动:

docker run -p 6379:6379 —name redis01 -v /docker/redis/conf/slaveof.conf:/etc/redis/redis.conf -d redis:3.2 redis-server /etc/redis/redis.conf —appendonly yes

  1. -p 为端口号映射,前为主机端口,后为容器中端口
  2. --name redis镜像名
  3. -v 文件映射前为本地文件:后为镜像内路径
  4. -d 后台启动
  5. redis:3.2 镜像版本
  6. redis-server server模式启动
  7. /etc/redis/redis.conf 按配置文件启动
  8. --appendonly yes 开启持久化

在docker中启动成功后输入命令

docker ps

即可看见容器运行的实例
接着进入redis容器中

docker exec -it redis01 /bin/bash
进入以后执行
redis-cli
info

在这里插入图片描述这样主从服务器就搭建成功了。

哨兵服务器配置

在/docker/redis/conf(路径自定义)中输入如下命令:

vi sentinel.conf

在文件中配置,保存

port 26379
sentinel monitor mymaster 192.168.12.131 6379 1

  1. port为端口号
  2. sentinel monitor mymaster配置主服务器的ip和端口号,最后的1表示切换主服务器需要多少个哨兵投票同意,目前只配置了一台所以设置成1

执行如下docker命令创建哨兵容器

docker run -p 26379:26379 -v /docker/redis/conf/:/data —name sentinel01 -d redis:3.2 redis-sentinel sentinel.conf

创建成功后,在映射的路径下会生成一个sentinel日志文件。默认名为sentinel.log
在这里插入图片描述接着我们进入哨兵容器中

docker exec -it sentinel01 /bin/bash
redis-cli -p 26379
info

在这里插入图片描述从图中可以看出此时哨兵监控一台主redis服务器,该主服务器ip和下属的从服务器和哨兵数量。

至此哨兵就搭建完成了

SpringBoot整合

下图为单机redis配置
在这里插入图片描述加上哨兵和从服务器实现高可用只需要加上两行配置
在这里插入图片描述名称与哨兵配置中同名,node节点填写哨兵的ip和端口号,如有多个则逗号隔开。

功能测试

启动项目前,我先清空redis中的内容。

启动后主服务器中数据已经存入
在这里插入图片描述
从服务器中也同步了数据
在这里插入图片描述
此时主服务器更改数据会同步到从服务器,完成复制功能,同时从服务器时只读不可更改的,进行更改时会报出如下错误。
在这里插入图片描述现在我们停止主redis镜像,模拟服务器掉线。

docker stop redis01

此时idea控制台中已经报出redis断开连接日志
在这里插入图片描述观察日志可以发现,最后连接上了从服务器,期间的间隔为10s,正是哨兵的扫描周期(原理下一篇再介绍)。此时从服务器被哨兵升级为主服务器并拥有了写的功能。
查看哨兵的日志
在这里插入图片描述此时重新启动被停止的原主服务器,进入容器后会发现,已经降级为从服务器。

发表评论

表情:
评论列表 (有 0 条评论,377人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis主从哨兵

    1. 为什么要有哨兵机制     哨兵机制是对Redis系统的运行情况的监控,解决主从复制的缺点的。  原理:当主节点出现故障时,由Redis Sentinel自动完成故障