redis集群的简单应用

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从

 

posted @ 2023-10-16 15:36  许光宗  阅读(12)  评论(0编辑  收藏  举报