主从同步
1. 拉取redis的镜像
ubuntu@VM-0-4-ubuntu:~$ sudo docker pull redis
2. 创建网络
ubuntu@VM-0-4-ubuntu:~$ sudo docker network create --subnet=172.19.0.0/16 myNetwork
3. 创建3个redis容器服务,分别使用到6380、6381、6382端口
ubuntu@VM-0-4-ubuntu:~$ sudo docker run -dit -p 6380:6379 --net myNetwork --ip 172.19.0.3 --name master redis
ubuntu@VM-0-4-ubuntu:~$ sudo docker run -dit -p 6381:6379 --net myNetwork --ip 172.19.0.4 --name slave1 redis
ubuntu@VM-0-4-ubuntu:~$ sudo docker run -dit -p 6382:6379 --net myNetwork --ip 172.19.0.5 --name slave2 redis
4. 进入docker容器内部,查看当前的redis的角色,是主节点还是从节点
ubuntu@VM-0-4-ubuntu:~$ sudo docker exec -it master bash
root@01896f8cd5e9:/data# redis-cli
127.0.0.1:6379> info replication
看完之后可以发现目前三个都是master状态
5. 使用redis-cli命令修改slave1、slave2的主节点为172.19.0.3:6379
127.0.0.1:6379> slaveof 172.19.0.3 6379
6. 查看master是否已经拥有2个从节点
127.0.0.1:6379> info replication
Sentinel哨兵
1. 由于容器中没有vim,所以需要先下载vim编辑器
首先更新软件包
root@01896f8cd5e9:/data# apt-get update
安装vim
root@01896f8cd5e9:/data# apt-get install vim
2. 进入3台redis容器内部进行配置,在容器根目录里面创建sentinel.conf文件(三台配置的都一样)
ubuntu@VM-0-4-ubuntu:~$ sudo docker exec -it master bash
root@01896f8cd5e9:/data# cd / && touch sentinel.conf
root@01896f8cd5e9:/# vim /sentinel.conf
sentinel.conf里需要放的内容
sentinel monitor master 172.17.0.2 6379 2
3. 最后,启动Redis哨兵(三台都启动)
root@01896f8cd5e9:/data# redis-sentinel /sentinel.conf
master
slave1
slave2
4. 关掉master节点,等待 30s 其他两个slave节点会投票产生新的主节点
ubuntu@VM-0-4-ubuntu:~$ sudo docker stop master
slave1
slave2