使用 Docker Compose 部署 Redis 单机版与集群

使用 Docker Compose 部署 Redis 单机版与集群

Redis 是一个开源的、高性能的内存数据库,常用于缓存、消息队列等场景。它不仅支持丰富的数据结构,而且性能卓越,成为了分布式系统的重要组件之一。在日常开发和生产环境中,使用 Docker 容器化 Redis 部署是非常常见的实践。本文将详细介绍如何使用 Docker Compose 分别部署 Redis 单机版和 Redis 集群。

一、前置准备

在开始之前,确保你的系统已经安装了以下工具:

  1. Docker:用于容器化应用的工具,可以从 Docker 官网下载并安装。
  2. Docker Compose:Docker Compose 是 Docker 官方提供的,用于定义和运行多个容器应用的工具,允许我们通过编写一个 docker-compose.yml 文件来同时启动多个服务。

在命令行中通过以下命令检查 Docker 和 Docker Compose 是否已安装:

docker --version

输出docker版本信息

docker-compose --version

输出docker compose版本信息。

如果上面命令正确输出版本信息,即说明安装成功。

二、使用 Docker Compose 部署 Redis 单机版

2.1 创建项目目录

首先,我们需要创建一个用于存放 Redis 配置文件和 docker-compose.yml 文件的项目目录。

mkdir redis-single && cd redis-single

2.2 编写 docker-compose.yml

接下来,在项目目录中创建一个 docker-compose.yml 文件,内容如下:

version: '3'
services:
  redis:
    image: redis:latest
    container_name: redis-single
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    command: ["redis-server", "--appendonly", "yes"]
volumes:
  redis-data:
    driver: local

解释:

  • version: '3':Docker Compose 文件的版本号,3 是一个常见的版本,支持绝大多数功能。
  • services:定义服务,在这里我们定义了一个 Redis 服务。
  • redis:服务名称,代表 Redis 容器。
  • image:指定镜像,这里我们使用 Redis 官方镜像的最新版本 redis:latest
  • container_name:容器名称,将 Redis 容器命名为 redis-single
  • ports:映射端口,将本地的 6379 端口映射到容器内的 6379 端口,Redis 默认运行在 6379 端口上。
  • volumes:指定数据卷,将 Redis 数据持久化存储到本地,以防止数据因容器重启或删除而丢失。
  • command:启动命令,这里我们指定 redis-server 启动,并启用 AOF(Append-Only File)持久化机制。

2.3 启动 Redis 容器

在项目目录中,运行以下命令启动 Redis 容器:

docker-compose up -d

参数解释:

  • -d:表示后台运行容器。

运行该命令后,Docker 将会根据 docker-compose.yml 文件拉取 Redis 镜像并启动服务。

2.4 验证 Redis 单机版

  1. 查看正在运行的 Redis 容器:
docker ps

如果一切顺利,你应该能看到 redis-single 容器正在运行。

  1. 使用 redis-cli 连接 Redis 实例:
docker exec -it redis-single redis-cli

在 Redis CLI 中,输入以下命令来验证 Redis 是否正常工作:

ping

输出应为 PONG,表明 Redis 正常运行。

2.5 停止和删除 Redis 容器

如果你想停止并删除 Redis 容器,可以使用以下命令:

docker-compose down

该命令将停止并删除所有由 docker-compose.yml 文件创建的容器及网络。

三、使用 Docker Compose 部署 Redis 集群

Redis 集群是一种分布式 Redis 架构,允许将数据分片分布到多个节点上,以实现高可用性和可扩展性。Redis 集群至少需要 6 个节点,其中 3 个是主节点,3 个是从节点。接下来,我们将演示如何使用 Docker Compose 部署 Redis 集群。

3.1 创建项目目录

为 Redis 集群创建一个新的项目目录:

mkdir redis-cluster && cd redis-cluster

3.2 创建 Redis 集群配置文件

我们需要为每个 Redis 实例创建独立的配置文件。首先,创建一个 config 目录来存放这些文件:

mkdir config

然后为每个节点创建配置文件,以下是 redis-cluster-node.conf 的模板配置:

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

将此配置文件复制为 6 份,命名为 node-7000.confnode-7001.conf,以此类推,直到 node-7005.conf。这 6 个配置文件将分别用于 6 个 Redis 节点。

3.3 编写 docker-compose.yml

redis-cluster 目录下创建 docker-compose.yml 文件,内容如下:

version: '3'
services:
  redis-node-1:
    image: redis:latest
    container_name: redis-node-1
    ports:
      - "7000:6379"
    volumes:
      - ./config/node-7000.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  redis-node-2:
    image: redis:latest
    container_name: redis-node-2
    ports:
      - "7001:6379"
    volumes:
      - ./config/node-7001.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  redis-node-3:
    image: redis:latest
    container_name: redis-node-3
    ports:
      - "7002:6379"
    volumes:
      - ./config/node-7002.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  redis-node-4:
    image: redis:latest
    container_name: redis-node-4
    ports:
      - "7003:6379"
    volumes:
      - ./config/node-7003.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  redis-node-5:
    image: redis:latest
    container_name: redis-node-5
    ports:
      - "7004:6379"
    volumes:
      - ./config/node-7004.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  redis-node-6:
    image: redis:latest
    container_name: redis-node-6
    ports:
      - "7005:6379"
    volumes:
      - ./config/node-7005.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]

解释:

  • 我们创建了 6 个 Redis 容器,分别监听 7000 到 7005 端口。
  • 每个容器都挂载了对应的配置文件,使用 redis-server 命令启动。

3.4 启动 Redis 集群

redis-cluster 目录中,执行以下命令启动集群:

docker-compose up -d

3.5 配置 Redis 集群

Redis 容器启动后,我们还需要手动配置 Redis 集群。首先,通过一个容器执行 redis-cli 命令来配置集群:

docker exec -it redis-node-1 redis-cli --cluster create \
  127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \
  127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
  --cluster-replicas 1

解释:

  • --cluster create:命令用于创建 Redis 集群。
  • 127.0.0.1:7000 127.0.0.1:7001 ...:列出集群中的所有节点。
  • --cluster-replicas 1:指定每个主节点有一个从节点。

执行该命令后,Redis 会自动将 7000、7001、7002 配置为主节点,而 7003、7004、7005 配置为对应的从节点。

3.6 验证 Redis 集群

你可以通过以下命令查看集群的状态:

docker exec -it redis-node-1 redis-cli -c -p 7000 cluster info

还可以连接到 Redis 节点并通过以下命令查看集群的节点信息:

docker exec -it redis-node-1 redis-cli -c -p 7000 cluster nodes

四、总结

本文详细介绍了如何使用 Docker Compose 部署 Redis 单机版和集群版。在开发环境中,使用 Docker Compose 能够快速部署和管理 Redis 服务,而在生产环境中,可以通过类似的配置实现更复杂的集群管理。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇