简述
笔者之前一直用的都是Redis单机版,最近想搞一下主从复制,然后查阅了很多资料,这里记录一下配置过程。
Docker
拉取Docker的Redis镜像
docker pull redis
启动redis
docker run --name myredis -p 6379:6379 -itd --restart=always -v /etc/localtime:/etc/localtime
-v /home/mycontainers/myredis/data:/data -m 512m --net mynetwork redis:latest
参数说明:
- --name:为启动的容器指定名字
- --restart:是否随着Docker启动而启动
- -v:将宿主机的目录/挂载到容器里面,格式--》宿主机目录:容器内目录
- -m:指定内存大小
- --net: 指定Docker 网络
此时Redis启动完毕,可以正常使用,但是是单机没从节点的。
要想配置主从复制必须在Docker 命令启动时指定Redis的配置文件。
配置
通过一下命令获取Redis的配置件件
wget http://download.redis.io/redis-stable/redis.conf
获取成功后会在当前目录得到一个新的文件,如下图:
然后就可以对这个文件进行主从配置了。首先我们来配置主节点
主节点配置
copy一份Redis的配置到主节点文件夹然后修改一下配置
bind 0.0.0.0
port 6379
daemonize no
requirepass 123456
从节点配置
copy一份Redis的配置到从节点文件夹然后修改一下配置
bind 0.0.0.0
port 6380
daemonize no
replicaof 192.168.31.145 6379
masterauth 123456
requirepass 123456
文件夹结构如下所示:
此时一切准备就绪,使用docker命令指定配置文件启动Redis。
指定配置启动Redis
docker run --name myredismaster -p 6379:6379 -itd --restart=always -v /etc/localtime:/etc/localtime -v /root/redisconfmaster:/usr/local/etc/redisconfmaster -v /home/mycontainers/myredis/data:/data -m 512m --net mynetwork redis:latest redis-server /usr/local/etc/redisconfmaster/redis.conf
docker run --name myredisslaver -p 6380:6380 -itd --restart=always -v /etc/localtime:/etc/localtime -v /root/redisslaver:/usr/local/etc/redisslaver -v /home/mycontainers/myredis/data:/data -m 512m --net mynetwork redis:latest redis-server /usr/local/etc/redisslaver/redis.conf
注意: -v /root/redisconfmaster:/usr/local/etc/redisconfmaster,此处挂载是必要的,因为redis-server 指定配置文件时,会在容器内查找配置文件,如果不挂载到容器内,如论如何都不会找到该配置文件
然后通过Docker控制面板看一下:
ok,两个Redis容器成功启动。然后去测试一下是否能够主从复制。
此处在主节点新增了一个redisCopy的key,然后看一下从服务器,可以看出是没有redisCopy的,别担心,点击一下刷新就可以了。
小结
一主一从的Redis配置比较简单,主要的是replicaof 和masterauth配置。笔者这里没有配置哨兵和集群,以后会继续学习研究,也会更新相关的文章。如果笔者错误的地方请在评论区指出,谢谢!