基于docker配置redis的主从复制
拉取redis镜像
我这里用的是3.2版本的
docker pull redis:3.2
挂载外部配置
创建redis_data,6379,6380,6381这几个目录
创建redis_config以及三个配置文件
其中主redis的redis_6379.conf:
bind *
port 6379
pidfile /var/run/redis_6379.pid
logfile "6379.log"
databases 16
dbfilename dump6379.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
requirepass 123456
redis_6380.conf
bind *
port 6379
pidfile /var/run/redis_6380.pid
logfile "6380.log"
databases 16
dbfilename dump6380.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
requirepass 123456
replicaof 192.168.31.100 6379 #这个才重要
redis_6381.conf
bind *
port 6379
pidfile /var/run/redis_6380.pid
logfile "6380.log"
databases 16
dbfilename dump6380.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
requirepass 123456
replicaof 192.168.31.100 6379 #这个才重要
主节点不需要配置replicaof
从节点配置
想要了解redis的详细配置可以看https://blog.csdn.net/weixin_43296313/article/details/120080524
拉去redis.conf文件命令:
wget -c http://download.redis.io/redis-stable/redis.conf
创建shell脚本
vim redis_cluster.sh
#!/bin/bash
sudo docker run --name redis -p 6379:6379 -d --restart=always -v /huanglei/redis_config/redis_6379.conf:/etc/redis/6379/redis.conf -v /huanglei/data/redis_data/6379:/data redis:3.2 redis-server /etc/redis/6379/redis.conf --appendonly yes --requirepass '123456' --bind 0.0.0.0 --protected-mode no
sudo docker run --name redis_6380 -p 6380:6379 -d --restart=always -v /huanglei/redis_config/redis_6380.conf:/etc/redis/6380/redis.conf -v /huanglei/data/redis_data/6380:/data redis:3.2 redis-server /etc/redis/6380/redis.conf --append only yes --requirepass '123456' --bind 0.0.0.0 --protected-mode no
sudo docker run --name redis_6381 -p 6381:6379 -d --restart=always -v /huanglei/redis_config/redis_6381.conf:/etc/redis/6381/redis.conf -v /huanglei/data/redis_data/6381:/data redis:3.2 redis-server /etc/redis/6381/redis.conf --append only yes --requirepass '123456' --bind 0.0.0.0 --protected-mode no
# --requirepass '123456' 指定redis的密码
# --name redis 给这个容器取名字
# -p 6379:6379 端口映射,前面是宿主机端口,后面是容器端口
# --restart=always 随着容器启动而启动
# redis-server --appendonly yes 在容器执行redis-server启动命令,并打开redis持久化配置
# -d:以守护(后台)模式运行容器
# -v /huanglei/redis_config/redis_6379.conf:/etc/redis/6379/redis.conf 前面是宿主机redis_6379.conf的文件路径,后面是容器内部redis.config文件路径
# redis-server /etc/redis/6379/redis.conf 指定用配置文件的方式启动redis
然后在改文件所在的目录执行脚本
./redis_cluster.sh
查看redis配置效果
docker exec -it 名称或者容器id /bin/bash
redis-cli
info replication
主节点:
俩个从节点都是一样的