在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时,只允许本地服务端连接,导致不同机子(或虚拟机)的主从机无法连接。