Loading

Docker 搭建Redis主从复制

本文基于Redis最新的版本,Redis6.X,某些Redis配置可能与前面的版本不一致

创建Docker网络

因为两个容器间需要进行通信,所以创建一个网络redis网络来方便通信

docker network create --subnet 192.169.0.0/16 --gateway 192.169.0.1 redis-net

创建容器

创建master容器

docker run -itd --name redis-master -p 6379:6379 --net redis-net --ip 192.169.0.2 redis

创建slave容器

docker run -itd --name redis-slave1 -p 6380:6379 --net redis-net --ip 192.169.0.3 redis redis-server --slaveof 192.169.0.2 6379

docker run -itd --name redis-slave2 -p 6381:6379 --net redis-net --ip 192.169.0.4 redis redis-server --slaveof 192.169.0.2 6379

测试

docker exec -it redis-master redis-cli info replication可以看到如下的信息,说明我们已经搭建成功了

image

分别进入master容器和slave容器的redis-cli,测试数据能否同步

docker exec -it redis-master redis-clidocker exec -it redis-slave1 redis-cli

master 存
image

slave 取
image

说明OK了

但是我们如果在slave里存数据的话就不可以了
image

因为默认的主从模式就是读写分离的,我们还需要在配置文件中进行配置,但是由于我们已经创建了容器,不方便修改,所以下面我们用另一种方式搭建,上面的这种方式应该是最简单的

配置文件搭建

保留上面的redis-master容器(PS:按道理master容器也应该用配置文件来配置,但是master需要配置的较少,所以这里就不演示了,道理都是一样的)
创建一个redis-slave.conf,然后写入如下内容

port 6379
replicaof 192.169.0.2 6379
replica-read-only no

“replica-read-only no”的配置,指定该服务器可读可写

创建容器

docker run -itd --name redis-slave1 -v /home/program/redis/redis-slave.conf:/usr/local/etc/redis/redis.conf -p 6380:6379 --net redis-net --ip 192.169.0.3 redis redis-server /usr/local/etc/redis/redis.conf

docker run -itd --name redis-slave2 -v /home/program/redis/redis-slave.conf:/usr/local/etc/redis/redis.conf -p 6381:6379 --net redis-net --ip 192.169.0.4 redis redis-server /usr/local/etc/redis/redis.conf

命令很简单,就是一个简单的挂载

测试发现成功,以后需要修改配置就可以直接修改宿主机上的配置文件

image

posted @ 2021-07-19 10:14  Xianhao  阅读(289)  评论(0编辑  收藏  举报