linux平台docker对redis主从与哨兵集群搭建要点

本文介绍了如何在Docker环境下搭建Redis主从哨兵集群,包括启动顺序、配置文件修改、权限设置以及解决网络访问问题。强调了JedisSentinelPool需要使用容器内的IP,并提供了具体的docker run命令示例。
摘要由CSDN通过智能技术生成

1、记得启动时master要第一个启动,因为slaveof 172.17.0.2 6379,只有第一个启动的才是172.17.0.2(过期,docker run时可以指定ip)
2、对sentinel文件chmod 777
3、sentinel monitor mymaster 127.0.0.1 6379 2(注意mymaster是自定义)
4、sentinel auth-pass mymaster password
5、坑:JedisSentinelPool需要sentinel配置文件的sentinel monitor是物理ip而不是容器的ip,但sentinel在docker的bridge网络模式下,需要sentinel monitor为容器的ip,或许可以尝试其他的网络模式(172.17)
解决:将JedisSentinelPool放在tomcat容器上,该容器与sentinel和redis容器处于同一bridge即可访问

以redis_6379为例,修改的参数:
bind 0.0.0.0
protected-mode no
port 6379
daemonize no # 守护线程模式和docker run 冲突
logfile /opt/redis/redis_6379/redis_6379.log
save 3600 1
save 300 100
save 60 10000
dbfilename dump_6379.rdb
dir /opt/redis/redis_6379/
masterauth foobared # master可能成为slave连接新master需要密码
requirepass foobared

slaveof 172.18.5.11 6379 # slave节点需要,此为master的容器ip和端口

哨兵以sentinel_26379为例,修改的参数:
bind 0.0.0.0
protected-mode no
port 26379
daemonize no
logfile /opt/redis/sentinel_26379/redis-sentinel-26379.log
dir /opt/redis/sentinel_26379
sentinel monitor mymaster 172.18.5.11 6379 2 #注意此处的mymaster指定了master的名字为mymaster
sentinel auth-pass mymaster foobared
#注意不要给sentinel加密码,因为JedisSentinelPool没有合适的构造方法。
sentinel down-after-milliseconds mymaster 3000 # 当master下线多久进行master身份转移,3秒不一定合适

提前准备好redis_6379.log,因为不会自动创建

chmod 777 /opt/redis/redis_6379/redis_6379.conf /opt/redis/redis_6380/redis_6380.conf /opt/redis/redis_6381/redis_6381.conf /opt/redis/sentinel_26379/sentinel_26379.conf /opt/redis/sentinel_26380/sentinel_26380.conf /opt/redis/sentinel_26381/sentinel_26381.conf
docker run --name redis_6379 --net zoonet --ip 172.18.5.11 -p 6379:6379 -v /opt/redis/redis_6379/:/opt/redis/redis_6379/ --restart always --privileged=true -d redis redis-server /opt/redis/redis_6379/redis_6379.conf
docker run --name redis_6380 --net zoonet --ip 172.18.5.12 -p 6380:6380 -v /opt/redis/redis_6380/:/opt/redis/redis_6380/ --restart always --privileged=true -d redis redis-server /opt/redis/redis_6380/redis_6380.conf
docker run --name redis_6381 --net zoonet --ip 172.18.5.13 -p 6381:6381 -v /opt/redis/redis_6381/:/opt/redis/redis_6381/ --restart always --privileged=true -d redis redis-server /opt/redis/redis_6381/redis_6381.conf
docker run --name sentinel_26379 --net zoonet --ip 172.18.5.14 -p 26379:26379 -v /opt/redis/sentinel_26379/:/opt/redis/sentinel_26379/ --restart always --privileged=true -d redis redis-sentinel /opt/redis/sentinel_26379/sentinel_26379.conf
docker run --name sentinel_26380 --net zoonet --ip 172.18.5.15 -p 26380:26380 -v /opt/redis/sentinel_26380/:/opt/redis/sentinel_26380/ --restart always --privileged=true -d redis redis-sentinel /opt/redis/sentinel_26380/sentinel_26380.conf
docker run --name sentinel_26381 --net zoonet --ip 172.18.5.16 -p 26381:26381 -v /opt/redis/sentinel_26381/:/opt/redis/sentinel_26381/ --restart always --privileged=true -d redis redis-sentinel /opt/redis/sentinel_26381/sentinel_26381.conf

可以进入redis和sentinel容器查看主从和哨兵情况:
docker exec -it 容器id redis-cli -p 端口
info Replication(redis信息)
info sentinel(哨兵信息)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值