导读:本期聚焦于小伙伴创作的《使用Docker快速搭建Redis主从复制的完整步骤》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《使用Docker快速搭建Redis主从复制的完整步骤》有用,将其分享出去将是对创作者最好的鼓励。

使用Docker快速搭建Redis主从复制的完整步骤

使用Docker快速搭建Redis主从复制的完整步骤

Redis主从复制可以实现数据的备份和读写分离,提升系统的可用性和并发处理能力。使用Docker可以省去繁琐的环境配置,快速搭建Redis主从架构。本文将详细介绍如何通过Docker和Docker Compose搭建一个一主二从的Redis集群。

1. 创建目录结构

首先在宿主机上创建存放配置文件和数据的目录,以便于持久化和修改配置。

mkdir -p /opt/redis-master-slave/{master,slave1,slave2}

2. 编写主节点配置文件

/opt/redis-master-slave/master/ 目录下创建 redis.conf 文件,写入以下基础配置:

bind 0.0.0.0
protected-mode no
port 6379
appendonly yes

3. 编写从节点配置文件

分别在 /opt/redis-master-slave/slave1//opt/redis-master-slave/slave2/ 目录下创建 redis.conf 文件,写入以下配置。从节点需要开启只读模式:

bind 0.0.0.0
protected-mode no
port 6379
appendonly yes
slave-read-only yes

4. 编写Docker Compose编排文件

/opt/redis-master-slave/ 目录下创建 docker-compose.yml 文件。我们将定义一个主节点和两个从节点,并通过Docker内部网络使从节点连接到主节点。从节点启动时通过 --replicaof 参数指定主节点的服务名。

version: '3.8'
services:
  redis-master:
    image: redis:7.0
    container_name: redis-master
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./master/data:/data
      - ./master/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf

  redis-slave1:
    image: redis:7.0
    container_name: redis-slave1
    restart: always
    ports:
      - "6380:6379"
    volumes:
      - ./slave1/data:/data
      - ./slave1/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf --replicaof redis-master 6379
    depends_on:
      - redis-master

  redis-slave2:
    image: redis:7.0
    container_name: redis-slave2
    restart: always
    ports:
      - "6381:6379"
    volumes:
      - ./slave2/data:/data
      - ./slave2/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf --replicaof redis-master 6379
    depends_on:
      - redis-master

5. 启动服务

/opt/redis-master-slave/ 目录下执行以下命令启动Redis主从集群:

docker-compose up -d

等待镜像拉取并启动完成,可以通过 docker ps 命令查看三个Redis容器是否正常运行。

6. 验证主从复制

验证主从同步是否生效,首先进入主节点写入一条测试数据:

docker exec -it redis-master redis-cli
127.0.0.1:6379> SET testkey "hello redis"
OK

接着进入其中一个从节点,尝试读取该数据,并测试只读权限:

docker exec -it redis-slave1 redis-cli
127.0.0.1:6379> GET testkey
"hello redis"
127.0.0.1:6379> SET testkey "new value"
(error) READONLY You can't write against a read only replica.

最后,可以在主节点查看复制状态,确认已连接的从节点数量:

docker exec -it redis-master redis-cli
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
...

注意事项

1. 上述配置关闭了保护模式(protected-mode no)并绑定了0.0.0.0,仅适用于内网测试环境。生产环境请务必配置密码认证(requirepass和masterauth)并限制绑定IP。

2. 如果需要外网访问该集群,请在宿主机防火墙开放6379、6380、6381端口。

3. 主从复制仅解决了数据备份和读分离的问题,若需实现高可用自动故障转移,需要在此基础上部署Redis Sentinel(哨兵模式)。

Docker ComposeRedis主从复制读写分离数据备份Docker网络

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。