1、创建集群
# 创建redis示例
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
进入一台容器内操作,随便哪一台都可以
docker exec -it 80 bash
构建主从操作
#--cluster-replicas 1 表示为每一个master 创建一个slave
redis-cli --cluster create 172.26.120.85:6381 172.26.120.85:6382 172.26.120.85:6383 172.26.120.85:6384 172.26.120.85:6385 172.26.120.85:6386 --cluster-replicas 1
以上哈希槽已经分配完毕
选一台容器进入查看集群信息
此时集群的创建就算完成了,6太实例,三主三从,哈希槽也分配完毕
注意:此时应之前常规的方法写入会有问题
原因是因为现在用的是集群的方式,且已经分配好哈希槽,此时k1经过哈希计算后他的id是12706,但是node1节点的槽位只到5460
所以此时应该以集群的方式进行操作
redis-cli -p 6381 -c
查看集群信息
redis-cli --cluster check 172.26.120.85:6381
2、主从容错切换迁移
# 手动关闭节点2也就是6382这个容器 docker stop redis-node-2
# 之前6382是master 其对应的slave是6384
由下图可见,6382挂掉了,此时6384变成master了
#开启node2 docker start redis-node-2 由图可见6382变成slave,说明恢复后其并不会变成master
3、主从扩容
新增主机
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387 docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
# 1、将6387作为master节点加入集群 6381作为领路人 redis-cli --cluster add-node 172.26.120.85:6387 172.26.120.85:6381 # 重新分配槽位
redis-cli --cluster reshard 172.26.120.85:6381
# 将6388 分配给6387做slave
redis-cli --cluster add-node 172.26.120.85:6388 172.26.120.85:6387 --cluster-slave --cluster-master-id c7066a8cf23831b4e03281fe07207d310c882b4e
通过下图我们发现并不是从0重新分配,而是每一家匀一点给它
4、主从缩容# 1、先清除从节点6388
redis-cli --cluster del-node 172.26.120.85:6388 ff97b51215b702685454347c536cd5356f0d03ab # 2、重新分配槽位 redis-cli --cluster reshard 172.26.120.85:6381 # 3、再删除6387
redis-cli --cluster del-node 172.26.120.85:6387 c7066a8cf23831b4e03281fe07207d310c882b4e
# 4、恢复3主3从
恢复3主3从
标签:node,--,redis,cluster,集群,应用,yes,data From: https://www.cnblogs.com/xuguangzong/p/17767460.html