docker安装redis主从以及哨兵
docker安装redis主从以及哨兵
本文使用docker在四台机器上部署一主二从三哨兵的Redis主从结构。
服务器配置
- 192.168.102.128 主节点 centos7.5
- 192.168.102.130 从节点 centos7.5
- 192.168.102.131 从节点 centos7.5
- 192.168.102.132 哨兵节点(3个容器) centos7.5
Redis版本
Redis版本 6.0.1
Docker安装
主从部署
创建配置文件存放目录
下载redis.conf文件
主节点redis.conf配置
修改redis.conf文件中以下几个配置项:
- bind 0.0.0.0 或者直接注释掉bind配置
- protected-mode no(为yes时docker容器无法正常启动)
- requirepass 123456 (redis不需要密码时该项可以不设置)
- logfile "redis.log" (redis的日志文件)
- masterauth 123456 (主节点的密码,必须和主节点保持一致,最好所有的redis节点密码一致,否则故障切换时会由于密码错误导致主从不同步)
slave节点redis.conf配置
在master中的redis.conf基础上,添加一下配置:
- replicaof 192.168.102.128 6379
说明:ip地址为主节点的ip地址,端口号为主节点的redis的端口号
获取redis镜像
docker pull redis
创建容器
主节点和从节点都使用下面的命令创建容器:
查看redis状态
容器创建完成后,使用下面的命令查看redis的状态:
主节点的状态为:
从节点的状态为:
说明:
如果master_link_status的值为down,查看一下主节点的redis.conf中是否设置了需要redis密码(requirepass),以及从节点的redis.conf中的masterauth的值是否与主节点的密码一致,不一致需要改为一致后再重新启动容器,直到master_link_status的值为up为止。
验证主从是否同步
主节点进入redis后,使用set命令赋值:
$ set temp 123
子节点进入redis后,使用set命令,会出现以下提示:
(error) READONLY You can't write against a read only replica.
使用get命令获取temp的值:
$ get temp
能够正确获取到temp的值表示主从搭建成功。
哨兵Sentinel部署
哨兵节点建议为奇数个,防止出现脑裂情况,本文在同一台服务器上创建三个不同端口号的容器作为三个哨兵节点,端口分别为26379、36379、46379.
创建配置文件存放目录
下载sentinel.conf
修改sentinel.conf配置
- logfile "sentinel.log" 日志文件名称
- sentinel monitor mymaster 192.168.102.128 6379 2 对应主节点的ip地址和端口号
- sentinel auth-pass mymaster 123456 主节点的redis密码
说明:
sentinel monitor mymaster 192.168.102.128 6379 2 中mymaster为自由命名的,可以进行修改,但是在修改时,需要将配置文件中所有名字为mymaster的都改为新的名字。
最后的2表示,有2个sentinel节点认为主节点失效时,开始进行选举新的主节点。
使用相同的方式在另外两个目录下(sentinel2和sentinel3)分别下载sentinel.conf文件并且进行修改。
创建哨兵容器
端口号为26379的哨兵:
端口号为36379的哨兵:
端口号为46376的哨兵:
查看哨兵监控情况
选择一个哨兵容器进入,查看状态:
使用上述命令,可以查看哨兵的监控情况:
说明:
- name:mymaster 与配置文件中保持一致,表示监控名称
- ip:192.168.102.128 主节点的ip地址
- port:6379 主节点的redis端口号
- num-slaves: 2 表示当前主从结构中有2个从节点
- num-other-sentinels: 2 表示还存在其他2个哨兵节点
- quorum: 2 表示当2个哨兵认为主节点失效时,开始选举新的主节点
- failover-timeout: 180000 表示故障切换超时时间,单位是秒。
在容器中,还可以通过查看哨兵日志的方式查看主从节点情况:
当哨兵节点启动以后,可以在日志中查看到如下所示的日志内容:
如果未在日志文件中看到上述内容,表示哨兵启动失败,需要查找原因重新启动。
当主节点异常需要切换主节点时,可以在日志文件中看到如下内容:
上述日志表示128主节点失效,重新选举130节点为主节点,128和131节点作为130的从节点,此时,使用redis的info命令就可以看到130变成了主节点,128和131变成了从节点。
说明:
在配置主节点的redis.conf时,一定要配置上masterauth属性,否则在将主节点切换成从节点之后,由于无法验证密码会导致主从不同步的情况。
springboot集成sentinel
pom文件引入redis-stater
修改application.yml配置文件
使用
java类中注入RedisTemplate即可正常使用
__EOF__

本文链接:https://www.cnblogs.com/ybyn/p/13690826.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:编写不易,转载请注明出处
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)