Docker 中快速构建 Redis Cluster 集群

Docker 中快速构建 Redis Cluster 集群

目录

  1. 前言
  2. 环境准备
  3. [构建 Redis Cluster 镜像](#构建 Redis Cluster 镜像)
    • [创建自定义 Dockerfile](#创建自定义 Dockerfile)
    • 构建镜像
  4. [启动 Redis 节点容器](#启动 Redis 节点容器)
  5. [配置 Redis Cluster 集群](#配置 Redis Cluster 集群)
  6. 总结

前言

Redis 是一个高性能的键值对数据库,常被用作缓存、消息队列等用途。Redis Cluster 集群模式提供了数据分区和高可用性,通过分布式方式存储和管理数据,实现更高的扩展性。本指南将演示如何使用 Docker 快速构建一个包含 3 个节点的 Redis Cluster 集群。

环境准备

所需软件

  • Docker:确保已安装 Docker,版本最好在 19.03.0 或以上。
  • redis-cli:用于操作 Redis 集群,可以从 Redis 官方获取。

配置网络

为了让 Docker 容器之间能够互相通信,我们需要创建一个自定义网络:

bash 复制代码
docker network create redis-cluster

这将创建一个名为 redis-cluster 的 Docker 网络。

构建 Redis Cluster 镜像

创建自定义 Dockerfile

我们需要在 Redis 镜像中添加用于配置集群的工具。创建一个目录并添加以下 Dockerfile:

Dockerfile 复制代码
# 文件:Dockerfile
FROM redis:7.0

RUN apt-get update && apt-get install -y --no-install-recommends \
    ruby-full \
    && gem install redis

COPY redis.conf /usr/local/etc/redis/redis.conf

CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

同时,在相同目录下创建 redis.conf 配置文件:

conf 复制代码
# 文件:redis.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

构建镜像

在上述 Dockerfile 文件所在的目录执行以下命令:

bash 复制代码
docker build -t redis-cluster .

这将构建一个带有集群配置的自定义 Redis 镜像 redis-cluster

启动 Redis 节点容器

启动命令

我们将使用上面创建的网络 redis-cluster 和自定义镜像 redis-cluster,分别启动 3 个 Redis 实例:

bash 复制代码
docker run -d --name redis-node1 --net redis-cluster -p 7001:6379 redis-cluster
docker run -d --name redis-node2 --net redis-cluster -p 7002:6379 redis-cluster
docker run -d --name redis-node3 --net redis-cluster -p 7003:6379 redis-cluster

此时我们已经启动了 3 个 Redis 实例,各自映射到主机的 700170027003 端口。

配置 Redis Cluster 集群

创建 Redis 集群

使用容器中的 redis-cli 工具配置 Redis Cluster 集群:

bash 复制代码
docker exec -it redis-node1 redis-cli --cluster create \
  172.18.0.2:6379 \
  172.18.0.3:6379 \
  172.18.0.4:6379 \
  --cluster-replicas 0

其中 172.18.0.X 是各个 Redis 容器的内部 IP 地址。可以使用以下命令获取 IP 地址:

bash 复制代码
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node2
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node3

验证集群状态

要验证集群是否正常工作,请使用 redis-cli 连接到其中一个节点并运行 cluster info 命令:

bash 复制代码
docker exec -it redis-node1 redis-cli -c -p 6379 cluster info

或者直接使用以下命令查看每个节点的状态:

bash 复制代码
docker exec -it redis-node1 redis-cli -c -p 6379 cluster nodes

总结

准备环境、构建自定义镜像、启动 Redis 节点到配置集群,搭建了一个 3 节点的 Redis Cluster 集群。通过集群的分布式特性,可以获得更高的性能和可扩展性。

相关推荐
千寻girling4 分钟前
记录第一次学习 Docker
学习·docker·容器
迷糊小面包2 小时前
Docker Hadopp集群版部署搭建及常规问题解疑
运维·docker·容器
烁3473 小时前
Docker
运维·docker·容器
网络中的夜鹰3 小时前
轩辕镜像一键安装Docker和Docker Compose脚本
运维·docker·容器
梦想的颜色5 小时前
从零入门:Docker在Ubuntu上的安装、使用与主流镜像仓库实战(Java/Go/MySQL/PostgreSQL/MongoDB/Nginx
java·ubuntu·docker
java知路6 小时前
centos euler离线下载docker镜像
linux·docker·centos
江湖有缘7 小时前
Docker部署HamsterBase Tasks任务管理工具
运维·docker·容器
很楠爱上7 小时前
Docker 从入门到实战:核心概念、微服务编排与环境移植完全指南
docker·微服务·容器
Qres8217 小时前
docker & WSL & Ubuntu安装记录
ubuntu·docker·容器·wsl
fengchengwu20127 小时前
Hermes Agent Docker 部署笔记 —— 接入 MiniMax
docker·hermes