Docker-Compose部署Redis(v7.2)主从模式
环境
- docker desktop for windows 4.23.0
- redis 7.2
一、前提准备
1. redis配置文件
因为Redis 7.2 docker
镜像里面没有配置文件,所以需要去redis
官网下载一个复制里面的redis.conf
博主这里用的是7.2.3
版本的redis.conf
,这个文件就在解压后第一层文件夹里。
2. 下载redis镜像
1 | docker pull redis:7.2 |
3. 文件夹结构
如下建立cluster
文件夹,并复制出三份conf
文件到如图位置。
二、docker-compose
docker-compose
文件具体内容如下。
1 | version: '3.8' |
需要注意以下几点
- 这里自定义了
bridge
子网并限定了范围,如果该范围已经被使用,请更换。 - 这里没有对
data
进行-v
挂载,如果要挂载,请注意宿主机对应文件夹权限问题。
三、主从配置
1.主节点配置文件
主节点对应的配置文件是master/redis.conf
,需要做以下修改
bind
将bind 127.0.0.1 -::1
修改为bind 0.0.0.0
,监听来自任意网络接口的连接。protected-mode
将protected-mode
设置为no
,关闭保护模式,接收远程连接。masterauth
将masterauth
设置为1009
,这是从节点连接到主节点的认证密码,你可以指定为其他的。requirepass
将requirepass
设置为1009
,这是客户端连接到本节点的认证密码,你可以指定为其他的。
2.从节点配置文件
把上面主节点的配置文件复制粘贴,然后继续做以下更改,就可以作为从节点配置文件了
- replicaof
旧版本添加一行replicaof redis-master 6379
,表示本节点为从节点,并且主节点ip
为redis-master
,端口为6379
。这里你也可以把ip
填成172.30.1.2
,因为在docker-compose
中我们为各节点分配了固定的ip
,以及端口是6379
而不是映射的700x
,这些都是docker
的知识,这里不再赘述。
redis在5.0引入了replica的概念来替换slave,所以后续的新版本推荐使用replicaof,即便slaveof目前仍然支持。
四、运行
配置好三个节点的配置文件后,用以下命令运行整个服务
1 | docker-compose -p redis-cluster up -d |
查看主节点日志,可以看到主节点向172.30.1.3
和172.30.1.4
两个从节点同步数据,并且连接正常,以及一系列success。
1 | 2024-01-05 15:12:59 1:M 05 Jan 2024 07:12:59.008 * Opening AOF incr file appendonly.aof.1.incr.aof on server start |
接着看看从节点日志,可以看到Connecting to MASTER redis-master:6379
,向主节点连接并申请同步数据,以及一系列success。
1 | 2024-01-05 15:13:01 1:S 05 Jan 2024 07:13:01.166 * Connecting to MASTER redis-master:6379 |
五、测试
用你喜欢的docker
容器连接工具或者redis
连接工具来连接主节点redis
服务,只要能进入redis-cli
就行。这里以docker容器连接为例。
- 主节点设置一个字段并查看从节点信息
1 | root@ac1ecfc4e3a5:/data# redis-cli |
- 从节点获取
1 | root@a3016db388e3:/data# redis-cli |
测试成功。