- 用docker启动三个redis容器
docker run --name redis-6379 -p 6379:6379 -d redis:3.2 redis-server docker run --name redis-6380 -p 6380:6379 -d redis:3.2 redis-server docker run --name redis-6381 -p 6381:6379 -d redis:3.2 redis-server
- 配置reids集群
docker inspect containerid(容器ID)
2、三个redis的内网ipredis-6379:172.17.0.3:6379 redis-6380:172.17.0.4:6379 redis-6381:172.17.0.5:6379
- 进入docker容器内部,查看当前redis角色(主master还是从slave)命令:info replication)
127.0.0.1:6379> info replication Replication role:master connected_slaves:0 master_replid:a44f60e68f4d128750c2d09a00c9d4a1b6b643d1 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
- 当前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.3:6379
[root@localhost ~]# docker exec -it redis-6381 redis-cli 127.0.0.1:6379> slaveof 172.17.0.3 6379 OK
- 再次查看主机info,已经有两个从机了(.4 和 .5)
1、对主机写操作set key 1,丛机也能读到。主机挂掉之后,从机仍然是从机,依旧能读。当主机恢复之后,就能读到新的
2、如果是使用的命令行,配置的主从,从机挂掉了后重启,立马变成主机。当重新配了主机后,立马能读到主机的数据。发生全量复制
3、当主机挂掉之后,可以使用slaveof no one(手动)
哨兵模式(主动)
主机挂了之后,会发生心跳检测,默认三分钟后,哨兵会随机挑选从机变成主机
如果此时主机回来了,也只能变成从机