docker重新搭建redis集群

发布于:2025-07-22 ⋅ 阅读:(12) ⋅ 点赞:(0)

今天遇到个问题,redis全挂了导致我的项目一直在滚动日志连不上redis,所以我重新搭建redis集群来解决这个问题

首先把配置文件搞好

redis配置文件

redis-master的配置文件

bind 0.0.0.0  
protected-mode no  
port 6379  
# requirepass redis  
# # 哨兵模式主从切换时使用  
# masterauth redis

redis-slave1的配置文件

bind 0.0.0.0  
protected-mode no  
port 6380  
# requirepass redis  
# masterauth redis  
replicaof 192.168.215.100 6379

redis-slave2的配置文件

bind 0.0.0.0  
protected-mode no  
port 6381  
# requirepass redis  
# masterauth redis  
replicaof 192.168.215.100 6379

redis-sentinel的配置文件

redis-sentinel-master的配置文件

bind 0.0.0.0  
port 26379  
# mymaster 可以自定义,redis-master redis服务器地址/网络名称,6379 redis服务器端口,2 最小投票数quorum,指明当有多少个sentinel认为一个master失效时,master才算真正失效。  
sentinel monitor mymaster 192.168.215.100 6379 2  
# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。  
# sentinel auth-pass mymaster redis  
# 允许Sentinel接受主机名  
sentinel resolve-hostnames yes  
  
# Generated by CONFIG REWRITE  
latency-tracking-info-percentiles 50 99 99.9  
dir "/data"  
user default on nopass sanitize-payload ~* &* +@all  
sentinel myid 9ae9adf6d3fb6c774a4373cca34b9ebf16f6e28c  
sentinel config-epoch mymaster 0  
sentinel leader-epoch mymaster 0  
sentinel current-epoch 1  
  
sentinel known-replica mymaster 192.168.215.100 6381  
  
sentinel known-sentinel mymaster 192.168.215.100 26380 e353499b664abd69fcbdb20268e9115f11c0d9ee  <这串东西以你文件中实际的为主>
  
sentinel known-sentinel mymaster 192.168.215.100 26381 956077e3e3204c7a447fe57362ab98a7f4e0715b  
  
sentinel known-replica mymaster 192.168.215.100 6380

redis-sentinel-slave1的配置文件

bind 0.0.0.0  
port 26380  
# mymaster 可以自定义,redis-master redis服务器地址/网络名称,6379 redis服务器端口,2 最小投票数quorum,指明当有多少个sentinel认为一个master失效时,master才算真正失效。  
sentinel monitor mymaster 192.168.215.100 6379 2  
# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。  
# sentinel auth-pass mymaster redis  
# 允许Sentinel接受主机名  
sentinel resolve-hostnames yes  
  
# Generated by CONFIG REWRITE  
dir "/data"  
latency-tracking-info-percentiles 50 99 99.9  
user default on nopass ~* &* +@all  
sentinel myid e353499b664abd69fcbdb20268e9115f11c0d9ee  
sentinel config-epoch mymaster 1  
sentinel leader-epoch mymaster 1  
sentinel current-epoch 1  
  
sentinel known-replica mymaster 192.168.215.100 6381  
  
sentinel known-replica mymaster 192.168.215.100 6380  
  
sentinel known-sentinel mymaster 192.168.215.100 26381 956077e3e3204c7a447fe57362ab98a7f4e0715b  
  
sentinel known-sentinel mymaster 192.168.215.100 26379 9ae9adf6d3fb6c774a4373cca34b9ebf16f6e28c

redis-sentinel-slave2的配置文件

bind 0.0.0.0  
port 26381  
# mymaster 可以自定义,redis-master redis服务器地址/网络名称,6379 redis服务器端口,2 最小投票数quorum,指明当有多少个sentinel认为一个master失效时,master才算真正失效。  
sentinel monitor mymaster 192.168.215.100 6379 2  
# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。  
# sentinel auth-pass mymaster redis  
# 允许Sentinel接受主机名  
sentinel resolve-hostnames yes  
  
# Generated by CONFIG REWRITE  
dir "/data"  
latency-tracking-info-percentiles 50 99 99.9  
user default on nopass ~* &* +@all  
sentinel myid 956077e3e3204c7a447fe57362ab98a7f4e0715b  
sentinel config-epoch mymaster 1  
sentinel leader-epoch mymaster 1  
sentinel current-epoch 1  
  
sentinel known-replica mymaster 192.168.215.100 6380  
  
sentinel known-sentinel mymaster 192.168.215.100 26379 9ae9adf6d3fb6c774a4373cca34b9ebf16f6e28c  
  
sentinel known-sentinel mymaster 192.168.215.100 26380 e353499b664abd69fcbdb20268e9115f11c0d9ee  
  
sentinel known-replica mymaster 192.168.215.100 6381

这里的域名啥的要跟自己一致啊!这里是我自己的,要使用的话记得切换。

接下来的操作

先在docker里面先把原来的容器全部删了

docker stop <容器名称>
docker rm <容器名称>

执行这些命令,注意.conf文件的路径要跟自己一致

# 启动redis
# 启动主节点
docker run -itd --name redis-master -e TZ="Asia/Shanghai"  -v /home/fkd/redis:/etc/redis  --net host  --restart=always redis redis-server /etc/redis/redis-master.conf
# 启动从节点1
docker run -itd --name redis-slave1 -e TZ="Asia/Shanghai" --network host  -v /home/fkd/redis:/etc/redis  --restart=always redis redis-server /etc/redis/redis-slave1.conf
# 启动从节点2
docker run -itd --name redis-slave2 -e TZ="Asia/Shanghai" --network host -v /home/fkd/redis:/etc/redis  --restart=always redis redis-server /etc/redis/redis-slave2.conf

# 启动sentinel
# 启动主节点
docker run -itd --name redis-sentinel-master -e TZ="Asia/Shanghai"  --network host -v /home/fkd/redis:/etc/redis  --restart=always redis redis-sentinel /etc/redis/redis-sentinel-master.conf
# 启动从节点1
docker run -itd --name redis-sentinel-slave1 -e TZ="Asia/Shanghai"  --network host -v /home/fkd/redis:/etc/redis  --restart=always redis redis-sentinel /etc/redis/redis-sentinel-slave1.conf
# 启动从节点2
docker run -itd --name redis-sentinel-slave2 -e TZ="Asia/Shanghai" --network host -v /home/fkd/redis:/etc/redis  --restart=always redis redis-sentinel /etc/redis/redis-sentinel-slave2.conf

检查是否起来了

docker ps -a | grep redis

如果都是UP状态那就好了


网站公告

今日签到

点亮在社区的每一天
去签到