3.防止路由失效加参数-c并新增一个key试试
先退出redis:
quit
加上-c参数后进入:
redis-cli -p 6381 -c
这下就重定向存入了,没有报错了。
4.查看集群信息 --cluster check
quit
redis-cli --cluster check 192.168.172.131:6381
5.容错切换迁移
如果主机停了,从机就要上位。在本案例中,如果6381号主机停机了,那6384号从机就要上位成为了新的master。(每次案例下面挂的从机以实际情况为准,具体是几号机器就是几号,不见得和我的一样,主从分配情况以实际情况为准)
先停掉6381号机:
docker stop redis-node-1
进入6382号机,其他号机也可以:
docker exec -it redis-node-2 /bin/bash
进入容器:
redis-cli -p 6382 -c
查看主从结构:
cluster nodes
还原之前的3主3从,考虑如果6381会来了,那么他们之间的主从状态怎么样?
先启动6381
docker start redis-node-1
再停6485
docker stop redis-node-5
查看集群状态:
redis-cli --cluster check 192.168.172.131:6381
6.主从扩容
假如现在3主3从不够用了,我们准备拓展到4主4从,加入6387和6388一主一从。这里涉及到槽位的变更等。
新建6387和6388两个节点
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
进入6387容器内部:
docker exec -it redis-node-7 /bin/bash
将新增的6387节点作为master节点加入原集群:
将新增的6387作为master节点加入集群:
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
redis-cli --cluster add-node 192.168.172.131:6387 192.168.172.131:6381
第1次检测集群情况:
redis-cli --cluster check 192.168.172.131:6381
重新分派槽号,命令:redis-cli --cluster reshard IP地址:端口号
:
redis-cli --cluster reshard 192.168.172.131:6381
第2次检测集群情况:
redis-cli --cluster check 192.168.172.131:6381
会发现并不是平均分配槽号,而是从其他主机里面分了过去。重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387。
将6388节点加入集群
命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
redis-cli --cluster add-node 192.168.172.131:6388 192.168.172.131:6387 --cluster-slave --cluster-master-id 70d2db3b04f505cbd9689977a46ac4a04b1ce2ad
第3次查看集群情况:
redis-cli --cluster check 192.168.172.131:6381
7.主从缩容
目的:6387和6388下线
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID
将6388删除,从集群中将4号从节点6388删除:
redis-cli --cluster del-node 192.168.172.131:6388 1a7731d953e8bf82867d731b753e8c978739f1be
检查一下发现,6388被删除了,只剩下7台机器了。
redis-cli --cluster check 192.168.172.131:6381
将6387的槽号清空,重新分配,本例将清出来的槽号给6384节点:
redis-cli --cluster reshard 192.168.172.131:6381
查看集群状态,6387号没有槽点了:
redis-cli --cluster check 192.168.172.131:6381
将6387节点删除:
命令:redis-cli --cluster del-node ip:端口 6387节点ID
redis-cli --cluster del-node 192.168.172.131:6387 70d2db3b04f505cbd9689977a46ac4a04b1ce2ad
看集群状态,6387号没了,又变成了3主3从:
redis-cli --cluster check 192.168.172.131:6381