一、单机连接与集群连接模式

#单机模式下连接redis
root@docker_server:/data# redis-cli -p 6381
127.0.0.1:6381> set key word
(error) MOVED 12539 10.10.10.12:6383            #可以看到数据是要分配到12539这个槽位,并且节点为6383。由于当前时单机连接所以不支持,需要加参数 -c 使用集群的方式进行连接

#集群模式连接redis
127.0.0.1:6381> set key word
-> Redirected to slot [12539] located at 10.10.10.12:6383           #写入数据会自动写入到对应的槽位中
OK
10.10.10.12:6383>

查看集群信息

redis-cli --cluster check 10.10.10.12:6381

基于Docker的Redis集群配置(2)——主从容错切换测试_docker

二、主从切换测试

(1)停止redis-1容器,查看对应的从容器是否变为master
docker stop redis-1

基于Docker的Redis集群配置(2)——主从容错切换测试_docker_02

(2)当停止redis-1时,对应的从容器redis-6自动切换为master设备
docker exec -it redis-2
redis-cli -p 6382 -c
cluster nodes

基于Docker的Redis集群配置(2)——主从容错切换测试_redis_03

(3)在redis-2中查看之前存储的数据能否被正常读取

基于Docker的Redis集群配置(2)——主从容错切换测试_docker_04

(4)恢复redis-1查看是否会恢复master身份
#恢复redis-1
docker start redis-1
#查看集群节点
cluster nodes

如图所示,不会把master身份交还给redis-1,如果需要redis-1恢复master身份需要先将redis-6停止再重新运行。

基于Docker的Redis集群配置(2)——主从容错切换测试_docker_05

#恢复redis-1的master身份
docker stop redis-6
cluster nodes

基于Docker的Redis集群配置(2)——主从容错切换测试_docker_06