没事自己搞虚拟机在docker里面部署了主从复制模式,直接show code:
虚拟机1 作为master
# 拉取redis镜像
docker pull redis
#创建redis-0容器 作为master
docker run -d -p 6379:6379 --name redis-0 --network host <images-id> redis-server --requirepass <password>
# --name redis-0 指定redis容器名称为redis-0
# --network host 指定容器的ip为本机ip(该虚拟机) 而不是docker分配虚拟ip
# --requirepass <password> 指定redis密码,这里我设置的是 123456
#进入容器查看是否创建成功:
docker exec -it redis-0 redis-cli -a 123456
#成功进入,表明创建成功
接着是虚拟机2 作为slave
创建的步骤一样命令一样 只是这里为了区分,容器的名称我们设置为redis-1
docker run -d -p 6379:6379 --name redis-1 --network host <images-id> redis-server --requirepass <password>
#同样进入容器中查看
docker exec -it redis-1 redis-cli -a 123456
#接着我们需要将redis-1 指定为redis-0的slave,redis里面有个slaveof host port 命令
#顾名思义,即 host port 的从redis
#通过 ip addr 查看redis-0 所在虚拟机地址为192.168.137.128
slaveof 192.168.137.128 6379
#接着配置master登录密码 config set masterauth <master-password>,上面我们设置了密码为123456
config set masterauth 123456
接着使用info 查看是否设置成功
如下:查看Replication部分
#role 角色:slave
master_host 主redis地址:192.168.137.128
master_port 主redis端口:6379
#到这里一切正常,但是下面却是:
master_link_status:down
#表明连接到master时是失败的,前面的配置是正常的,所以应该是两台虚拟机之间网络不通导致
# 关闭防火墙
systemctl stop firewalld
#永久关闭防火墙
systemctl stop firewalld
#重启一下redis-0
docker restart redis-1
重启之后发现连接已经正常:
我们再看一下redis-0的信息:一切正常
接着我们在redis-0中set一下数据,看一下是否自动备份了到redis-1中:
随后我们去redis-1 中取数据:
这时 redis-0 中的数据已经自动同步到了redis-1中,redis简单的主从模式配置成功。
如果要增加slave-redis,设置方式与redis-1一样。