docker搭建主从集群时遇到的问题
- IP设置问题
- 查看docker network inspect bridge(如果容器用的时bridge模式的话)找到每个redis容器的ip地址
- 主节点如果在配置文件中设置了登录密码,那么此时从节点如果没有密码是连不上的
- 方法1
- slave节点的配置文件中设置 masterauth 主节点密码
- 方法2
- 在从节点中 CONFIG SET masterauth 主节点密码
- 学到的点:查看redis的log日志
- Failed trying to load the MASTER synchronization DB from disk
- 将主从节点配置文件中的
repl-diskless-load均改为 on-empty-db
docker run --name redis -p 6380:6379 -v D:\\docker-data\\redis\\redis.conf:/etc/redis/redis.conf -v D:\\docker-data\\redis:/data -itd redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes
docker run --name redis7001 -p 7001:6379 -v D:\\docker-data\\redis7001\\redis.conf:/etc/redis/redis.conf -v D:\\docker-data\\redis7001:/data -itd redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes
docker run --name redis7002 -p 7002:6379 -v D:\\docker-data\\redis7002\\redis.conf:/etc/redis/redis.conf -v D:\\docker-data\\redis7002:/data -itd redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes
docker搭建哨兵时遇到的问题
# bind 127.0.0.1
# 哨兵的端口号
port 26379
# 设定密码认证
requirepass 123456
# 配置哨兵的监控参数
# 格式:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
sentinel monitor local-master 172.17.0.2 6379 2
# 连接主节点的密码
# 格式:sentinel auth-pass <master-name> <password>
sentinel auth-pass local-master 123456
# master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
# 格式:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds local-master 5000
#定义故障切换超时时间。默认180000,单位秒,即3min。
#需要注意的是,该时间不是总的故障切换的时间,而是适用于故障切换的多个场景。
sentinel failover-timeout local-master 60000
错误
Could not rename tmp config file (Device or resource busy)
WARNING: Sentinel was not able to save the new configuration on disk!!!: Device or resource busy
- 把redis-sentinel.conf配置文件放到文件夹下面,然后映射文件夹,而不是映射文件
docker run --name redisS1 -p 7003:26379 -v D:\\docker-data\\redisSentinelOne\\conf:/etc/redis/conf -v D:\\docker-data\\redisSentinelOne:/data -itd redis:6.2.6 redis-sentinel /etc/redis/conf/redis-sentinel.conf --appendonly yes
docker run --name redisS2 -p 7004:26379 -v D:\\docker-data\\redisSentinelTwo\\conf:/etc/redis/conf -v D:\\docker-data\\redisSentinelTwo:/data -itd redis:6.2.6 redis-sentinel /etc/redis/conf/redis-sentinel.conf --appendonly yes
docker run --name redisS3 -p 7005:26379 -v D:\\docker-data\\redisSentinelThree\\conf:/etc/redis/conf -v D:\\docker-data\\redisSentinelThree:/data -itd redis:6.2.6 redis-sentinel /etc/redis/conf/redis-sentinel.conf --appendonly yes