使用Docker模拟redis 主从模式+哨兵模式

一、Docker模拟redis主从模式

//下载redis镜像
docker pull redis
//开启master容器
docker run -it --name master -d -p 30000:6379 redis /bin/bash
//拷贝redis.conf
docker cp redis.conf master:/data/redis.conf
//开启slave容器
docker run -it --name slave -v -d -p 30001:6379 redis /bin/bash
//拷贝redis.conf
docker cp redis.conf slave:/data/redis.conf
//查看master容器的ip (这是我的容器ip,"IPAddress": "172.17.0.2")
docker inspect master
//进入master容器
docker attach master
//更新apt-get,安装vim
apt-get update
apt install vim
//修改/data/redis.conf
vim /data/redis.conf

将master容器的redis.conf中bind 127.0.0.1 注释掉
如果master的redis不设置密码就将protected-mode yes 的yes改为no,如果设置密码slave redis连接时把密码加上
修改 daemonize yes

//启动master redis
redis-server /data/redis.conf
//进入slave容器
docker attach slave
//更新apt-get,安装vim
apt-get update
apt install vim
//修改/data/redis.conf
vim /data/redis.conf

在redis.conf中添加slaveof 172.17.0.2 6379
修改 daemonize yes

//启动slave redis
redis-server /data/redis.conf
//查看slave信息
docker exec -it slave redis-cli
info replication

使用Docker模拟redis 主从模式+哨兵模式

//查看master信息
docker exec -it master redis-cli
info replication

使用Docker模拟redis 主从模式+哨兵模式
到这里redis主从模式就搭建好了

二、搭建reids哨兵模式

新建一个redis容器slave1跟上述slave方法一样,作为master的从数据库
新建sentinel.conf文件

//sentinel.conf
sentinel monitor master 172.17.0.2 6379 2
sentinel down-after-milliseconds master 60000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1
//保留一个daemonize no 观察结果
daemonize yes

将sentinel.conf文件拷贝到三个容器中

//进入容器,启动三个哨兵
redis-sentinel sentinel.conf
//模拟master redis 宕机
docker stop master

在master redis宕机后,哨兵会自动切换master redis
使用Docker模拟redis 主从模式+哨兵模式

从图中可以看到master的ip和端口号从172.17.0.2 6379切换到了172.17.0.3 6379
到这里redis哨兵模式搭建完成