在Docker中进行Redis主从配置

〇、环境准备

  1.两台装好Docker的计算机(或两个虚拟机)

    我这里是在VMware中运行的两个Centos7系统

    我们把CentOS-64-0作为主机(Master),CentOS-64-1作为从机(Slave)

    

  2.安装redis

    在docker中安装redis(只把redis pull下来,不要进一步配置)

    

一、在docker中使用外部 redis的配置文件

  1.配置文件redis.conf

    首先在你的两台宿主机上编写好redis配置文件,即redis.conf

    可以从redis官网下载配置文件模板 在Centos7系统中,使用以下命令,下载到本地:

    wget http://download.redis.io/redis-stable/redis.conf -O <文件名>

    

  2.配置参数

    主机(Master)修改下载下来的redis.conf,主要修改参数如下:

#bind 127.0.0.1        #如果bind选项为空的话,则允许所有来自于可用网络接口的连接
protected-mode no      #保护模式,若为yes,只允许本地客户端连接
appendonly yes         #开启后,Redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的数据读入内存里

    从机(Slave)修改下载下来的redis.conff,主要修改参数如下:

#bind 127.0.0.1
protected-mode no
appendonly yes

# replicaof <master ip> <master port>
replicaof 192.168.22.130 6379 #Redis主机(Master)IP 端口

二、在docker中创建redis容器,并以外部文件启动

  1.主从机器同样启动:

# docker redis 以配置文件运行:
#docker run -p <容器端口>:<主机端口> --name <容器名> -v <本地配置文件映射容器配置文件> -v <本地文件夹挂载到容器文件夹> -d(表示以守护进程方式启动容器) <启动redis服务并制定配置文件(容器中的路径)>
docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/usr/local/redis.conf -v /usr/local/docker/data:/usr/local/data -d redis redis-server /usr/local/redis.conf

  2.进入redis

  确保docker以及redis容器都启动之后,使用docker exec -it <redis容器名> redis-cli命令进入redis

  

   3.测试

    在主机存入一个key:

      

    在从机获取:

      

三、注意

  1.replicaof 和 slaveof

    在redis5.x的主从配置中,从机配置要配置 replicaof 参数。而早期版本,要配置的是slaveof参数。

  2.已有redis容器

    得先删除该容器,待配置好外部redis.conf后,重新创建。

  3.daemonize参数

    在docker中,redis.conf文件中的daemonize参数要设置为no(默认是no)。

    daemonize=yes的意思为后台运行redis,但这会导致容器跑不起来。

  4.protected-mode

    设置为yes时,只允许本地服务端连接,导致不同机子(或虚拟机)的主从机无法连接。

原文地址:https://www.cnblogs.com/Drajun/p/12339788.html