docker安装redis7-主从模式

本文详细介绍了如何在CentOS7.9系统上使用Docker部署Redis7.0.5的主从模式,包括配置文件管理、数据挂载、端口映射及解决常见问题。

说明

系统版本:CentOS7.9

redis版本:7.0.5镜像

此模式为1主2从,主节点端口为6379,从节点端口为6380、6381以下所有的示例以redis7.0.5为例

下载镜像

docker pull redis:7.0.5

 创建挂载路径

所有节点的数据、配置文件以及日志都挂载到宿主机上,防止容器重启后导致数据丢失

# 主节点
mkdir -p /root/data/redis-master/conf
mkdir -p /root/data/redis-master/data

# 从节点1
mkdir -p /root/data/redis-slave1/conf
mkdir -p /root/data/redis-slave1/data

#从节点2
mkdir -p /root/data/redis-slave2/conf
mkdir -p /root/data/redis-slave2/data

配置主节点redis.conf文件

下载配置文件

 redis7版本的镜像中没有对应的redis.conf配置文件,需要的可以从官网安装包里面下载对应版本的redis.conf文件。下载地址:Redis下载 以下以7.0.5为例

-P: 表示将安装包下载到指定路径下

wget -P /root/software https://github.com/redis/redis/archive/refs/tags/7.0.5.tar.gz

解压缩安装包

-C: 指定压缩包解压到哪里, ./表示解压到当前文件夹下

tar -zxvf /root/software/7.0.5.tar.gz -C /root/software/

 复制redis.conf到主节点的挂载卷目录中

cp /root/software/redis-7.0.5/redis.conf /root/data/redis-master/conf/

 修改redis.conf文件

vim /root/data/redis-master/conf/redis.conf

修改以下内容

# 修改bind使redis可以外部访问,正式环境不建议设置为0.0.0.0
bind 0.0.0.0
# 保护模式,默认yes,如果不需要保护模式可以设置为no            
protected-mode yes
# 端口号,默认即可
port 6379
# 日志文件存放位置
logfile /data/redis.log
# 用守护线程的方式启动,关闭
daemonize no
# 数据存放目录
dir /data
# 密码
requirepass <your password>
# 开启AOF方式持久化 默认是no
appendonly yes
# 持久化数据文件存放的文件夹名称,不能带/
appenddirname "aof"

 配置从节点的redis.conf文件

从节点1的配置

vim /root/data/redis-slave1/conf/redis.conf

 增加以下配置内容

port 6379
replicaof <主节点ip> <主节点的port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6380

从节点2的配置

vim /root/data/redis-slave2/conf/redis.conf

增加以下内容

port 6379
replicaof <主节点ip> <主节点port>
logfile /data/redis.log
dir /data
masterauth <主节点配置的requirepass值>
# 对外声明自己的ip和端口
replica-announce-ip 192.168.66.130
replica-announce-port 6381

启动redis

启动主节点

docker run -p 6379:6379 \
--privileged=true \
-v /root/data/redis-master/data:/data \
-v /root/data/redis-master/conf:/usr/local/etc/redis \
--name redis-master \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

启动从节点1

docker run -p 6380:6379 \
--privileged=true \
-v /root/data/redis-slave1/data:/data \
-v /root/data/redis-slave1/conf:/usr/local/etc/redis \
--name redis-slave1 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

启动从节点2

docker run -p 6381:6379 \
--privileged=true \
-v /root/data/redis-slave2/data:/data \
-v /root/data/redis-slave2/conf:/usr/local/etc/redis \
--name redis-slave2 \
--restart=always \
-d redis:7.0.5 \
redis-server /usr/local/etc/redis/redis.conf

确认是否部署成功

查看主节点日志

tail -f /root/data/redis-master/data/redis.log 

查看集群信息

docker exec -it redis-master redis-cli
# auth 进行权限验证
auth <your password>
# 集群信息
info replication

 测试

主节点添加数据

docker exec -it redis-master redis-cli
set name zs
set age 18

从节点1获取数据

docker exec -it redis-slave1 redis-cli
keys *

 从节点2获取数据

docker exec -it redis-slave2 redis-cli
keys *

 部署中遇到的问题

 Error condition on socket for SYNC: Connection refused

解决方案

  • 检查从节点的配置是否正确
  • replicaof 中的配置不能写127.0.0.1

Could not connect to Redis at 127.0.0.1:6379: Connection refused

解决方案

  • 如果对外暴露的端口不是6379,使用-p指定链接的端口

docker exec -it redis-slave1 redis-cli -p 6380

结束

以上是整个部署过程,三个节点部署在了同一台宿主机上面,使用不同的端口进行区分,如果大家在部署过程中遇到问题欢迎私信或者评论。 

<think>嗯,用户想了解使用Docker安装Redis并配置主从的详细步骤。根据提供的参考资料,用户已经收集了多个相关引用文档,这些文档都涉及DockerRedis主从配置的不同方面。 从引用内容看,配置Redis主从的关键步骤包括:准备配置文件、创建数据目录、启动容器时指定主从关系。引用[1]提到需要为每个实例配置主从关系;引用[2]详细描述了创建从节点目录结构的操作;引用[3]则给出了主节点挂载目录的具体命令。这些步骤需要整合起来。 用户可能是在搭建分布式系统或学习容器化数据库部署,考虑到Redis主从配置是常见需求,ta可能希望获得可直接操作的完整流程。需要特别注意三点:一是目录权限问题,二是配置文件模板的准确性,三是主从关系的验证方法。 准备在回答中分四个主要部分:环境准备阶段强调目录创建和配置文件编写;容器启动阶段区分主从节点命令;配置验证阶段提供关键检测命令;最后补充常见问题解决方案。这样既覆盖基础操作,又预防用户实际操作时可能遇到的坑。 对于配置文件模板,需要包含`replicaof`这个关键指令(Redis 5.0+版本),并注明旧版本使用`slaveof`。考虑到用户可能使用不同Redis版本,这个细节必须说明清楚。 容器网络部分决定采用最简单的bridge模式,因为引用[3][4]都未涉及复杂网络配置。如果用户需要跨主机部署,可以后续在相关问题中展开。 验证阶段考虑设计两个检测点:一是主节点的复制状态输出,二是从节点执行写操作的预期报错。这样能形成交叉验证,比单看连接状态更可靠。 最后补充的"注意事项"里,要特别强调数据持久化目录的权限问题,这是Docker部署时最容易导致容器启动失败的陷阱,引用[2][3]都提及了目录创建操作但没有明确权限说明。 </think>以下是根据多个参考资料整理的**Docker安装Redis并配置主从的详细步骤**,结合容器化部署的最佳实践: --- ### **一、环境准备** 1. **创建配置文件目录**(主从节点分开存储) ```bash # 主节点目录 (端口6379) mkdir -p /home/docker/redis6379/{conf,data} # 从节点目录 (示例用6380/6381) mkdir -p /home/docker/redis6380/{conf,data} mkdir -p /home/docker/redis6381/{conf,data} ``` 2. **编写配置文件** - **主节点配置** (`/home/docker/redis6379/conf/redis.conf`) ```conf port 6379 daemonize no requirepass 123456 # 主节点密码(可选) masterauth 123456 # 从节点访问主节点的密码(需与requirepass一致) appendonly yes ``` - **从节点配置** (`/home/docker/redis6380/conf/redis.conf`) ```conf port 6380 daemonize no replicaof redis-master 6379 # 指向主节点(容器名或IP) masterauth 123456 # 主节点密码 requirepass 123456 # 从节点自身密码(与主节点一致) appendonly yes ``` > 📌 注:Redis 5.0+ 使用 `replicaof`,旧版用 `slaveof` [^3]。 --- ### **二、启动Redis容器** 1. **启动主节点** ```bash docker run -d --name redis-master \ -p 6379:6379 \ -v /home/docker/redis6379/conf:/usr/local/etc/redis \ -v /home/docker/redis6379/data:/data \ redis:latest \ redis-server /usr/local/etc/redis/redis.conf ``` 2. **启动从节点**(以6380为例) ```bash docker run -d --name redis-slave-6380 \ -p 6380:6380 \ -v /home/docker/redis6380/conf:/usr/local/etc/redis \ -v /home/docker/redis6380/data:/data \ --link redis-master:redis-master \ # 容器网络互通 redis:latest \ redis-server /usr/local/etc/redis/redis.conf ``` > ✅ 重复此步骤启动其他从节点(如6381)。 --- ### **三、验证主从复制** 1. **进入主节点容器** ```bash docker exec -it redis-master redis-cli -a 123456 ``` 2. **查看主节点状态** ```bash 127.0.0.1:6379> INFO replication # 输出应包含: role:master connected_slaves:2 # 显示连接的从节点数量 ``` 3. **进入从节点容器验证** ```bash docker exec -it redis-slave-6380 redis-cli -a 123456 -p 6380 127.0.0.1:6380> INFO replication # 输出应包含: role:slave master_host:redis-master # 正确指向主节点 master_port:6379 ``` --- ### **四、常见问题解决** 1. **从节点连接失败** - 检查 `masterauth` 和 `requirepass` 是否与主节点一致。 - 确认容器间网络互通(使用 `--link` 或自定义网络 `docker network create`)[^1][^3]。 2. **配置文件权限问题** 确保挂载目录权限: ```bash chmod -R 755 /home/docker/redis* ``` 3. **数据持久化失败** 检查宿主机目录映射路径是否正确,避免容器无写权限。 --- ### **注意事项** - **密码一致性**:所有节点 `requirepass` 和 `masterauth` 需相同[^3]。 - **版本兼容性**:建议使用 Redis 5.0+ 镜像避免命令差异。 - **生产建议**:使用 `Docker Compose` 或 `Redis Cluster` 实现高可用(参考引用[^4][^5])。 --- ### 相关问题 1. 如何用Docker Compose一键部署Redis主从? 2. Redis主从复制延迟过高如何排查? 3. 如何扩展为Redis Sentinel哨兵集群? 4. 容器重启后主从配置丢失怎么办? [^1]: 容器网络互通配置 [^2]: 目录结构与配置文件规范 [^3]: 主从密码验证与命令兼容性 [^4]: 集群化部署建议 [^5]: Docker Compose集成方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值