使用Docker部署redis主从复制详细步骤和注意事项

       

目录

一、redis主从复制容器化部署

1、拉取redis的镜像

2、创建主节点需要挂载的redis目录

3、修改redis.conf文件

(1)主节点修改

(2)修改从节点

4、运行redis容器

(1)运行主节点

(2)运行从节点

5、查看各个节点的信息

(1)主节点


         介绍:主从复制是指采取一种主从节点分担redis读写工作的模式,主节点以写为主,从节点以读为主 ,而且一个主节点可以拥有多个从节点,既能避免redis单点故障。也可以做到主从分离,满足读多写少的应用场景

一、redis主从复制容器化部署
1、拉取redis的镜像
docker pull redis
2、创建主节点需要挂载的redis目录
mkdir -p /home/docker/redis6379/conf
mkdir -p /home/docker/redis6379/data 

此时conf下什么都没有,如果你直接用数据卷挂载,就是执行以下命令,会发现什么都没有,运行redis容器不会自动添加配置文件

docker run -d \
-p 6379:6379 \
--name redis6379
--restart always \
--privileged=true \
-v /home/docker/redis6379/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis6379/data:/data \
redis \
redis-server /etc/redis/redis.conf

切换到/home/docker/redis6379/conf/redis.conf下看看,唉,啥也没有,而redis.conf是个目录

如果此时想要用配置文件可以去官网复制一份原始的配置文件下来,自己稍微改改就能拿来用

redis官网:Docs (redis.io)

redis配置文件入口:Redis configuration | Docs

手动在/home/docker/redis6379/conf/下建立redis.conf文件,复制对应配置文件内容到redis.conf的文件里

vim /home/docker/redis6379/conf/redis.conf
3、修改redis.conf文件
(1)主节点修改
  • 查看ip地址
docker inspect containerid 容器编号

这个是要在容器建立以后才能查看,所以可以先随便建立容器看看容器使用的是那个ip,修改配置文件后重启就行,这么做是为了避免使用到那些被占用的ip

也可以使用ifconfig -a查看主机ip,直接使用主机ip来修改下面的bind字段.

  • 在redis的主节点的配置文件redis.conf上配置文件中修改bind字段

这个主节点的ip地址使用刚刚查到的主机ip地址,或者随便某个可以使用的地址都行

bind 127.0.0.1 后面加上主节点ip地址,修改为 bind 127.0.0.1 172.17.0.2

如果不修改,那么其他ip的主机运行redis-cli进行访问就会被拒绝,只有本机能够进行访问,修改后就可以使用 172.17.0.2的ip,运行redisc.cli命令进行访问,比如

 docker exec -it redis6379 redis-cli -h 172.17.0.2

这个命令下面才会用到,这里只是说明bind为什要修改。

  • 之后在修改以下参数
# 指定服务端口 不要直接添加port 6379这段代码,原本的配置文件里有这个参数,重复添加会报错
port 6379
# 关闭保护模式,允许远程连接
protected-mode no

主节点到这里就修改完了

(2)修改从节点
  • 创建从节点需要挂载的目录
mkdir -p /home/docker/redis6380/conf
mkdir -p /home/docker/redis6380/data 
  • 像主节点那样在/home/docker/redis6380/conf的目录下添加从官网复制过来的原始的redis.conf文件内容
vim /home/docker/redis6380/conf/redis.conf
  • 修改从节点配置文件
# 服务端口 默认6379
port 6380
# 关闭保护模式,允许远程连接
protected-mode no
#添加主节点的ip和端口
slaveof 172.17.0.2

从节点到这里就修改完了,很简单吧

4、运行redis容器
(1)运行主节点
docker run -d \
-p 6379:6379 \
--name redis6379 \
--restart always \
--privileged=true \
-v /home/docker/redis6379/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis6379/data:/data \
redis \
redis-server /etc/redis/redis.conf

--restart always 表示开机自启 ,如果你的在上面的修改redis.conf里的ip配置的不对,那么容器启动后容器的status就会变成restarting

如何解决这个问题捏,只要找到一个可以使用的ip地址就行了,其实在一开始就提到了

使用ifconfig -a查看主机地址,inet后面的就是了

那么现在知道了主机地址,直接使用主机地址就行了。能不能使用ping一下就行了

ping 172.17.0.1 
(2)运行从节点
docker run -d \
-p 6380:6380 \
--name redis6380 \
--restart always \
--privileged=true \
-v /home/docker/redis6380/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis6380/data:/data \
redis \
redis-server /etc/redis/redis.conf
5、查看各个节点的信息
(1)主节点
  • 连接主节点
 docker exec -it redis6379 redis-cli -p 6379 -h 172.17.0.2


  • 查看主节点信息
info replication


  • 使用主节点随便添加一个变量
set yin guog

(2)从节点
  • 连接从节点
 docker exec -it redis6380 redis-cli -p 6380
  • 使用从节点随便添加一个变量
set yin guog


报错了,很正常,redis的从节点是负责读的,默认情况下只能读不能写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值