1、背景
公司有个演示项目需要迁移至客户方服务器上,安排我通过docker方式部署中间件。在部署RedisCluster(3主3从)过程中遇到了一些问题,顺便记录一下。
2.问题
2.1 存储
同事反馈写入redis正常,读出来是null。登录到服务器上去看,主服务器有数据,从服务器没有。集群状态正常。2.2 None of slaves were synced
使用Redisson分布式锁时,抛出这个异常。说的是主服务器数据没有同步到从服务器。
尝试去掉密码之后,这两个问题解决。问题出在主服务器同步数据到从服务器的认证上。
3.部署脚本
docker run -d --name redis-master-1 --net host --privileged=true -v /data/redis/share/redis-master-1:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6379 --requirepass xxx
docker run -d --name redis-slave-1 --net host --privileged=true -v /data/redis/share/redis-slave-1:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6380 --requirepass xxx
docker run -d --name redis-master-2 --net host --privileged=true -v /data/redis/share/redis-master-2:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6381 --requirepass xxx
docker run -d --name redis-slave-2 --net host --privileged=true -v /data/redis/share/redis-slave-2:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6382 --requirepass xxx
docker run -d --name redis-master-3 --net host --privileged=true -v /data/redis/share/redis-master-3:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6383 --requirepass xxx
docker run -d --name redis-slave-3 --net host --privileged=true -v /data/redis/share/redis-slave-3:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6384 --requirepass xxx
redis-cli -a xxx --cluster create xxx.xxx.xxx.xxx:6379 xxx.xxx.xxx.xxx:6381 xxx.xxx.xxx.xxx:6383 xxx.xxx.xxx.xxx:6380 xxx.xxx.xxx.xxx:6382 xxx.xxx.xxx.xxx:6384 --cluster-replicas 1
4.问题解决
docker run -d --name redis-master-1 --net host --privileged=true -v /data/redis/share/redis-master-1:/data redis:7.0.11 --cluster-enabled yes --appendonly yes --port 6379 --requirepass xxx --masterauth xxx
需要加上--masterauth xxx,密码与redis密码一致。