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 集群。通过集群的分布式特性,可以获得更高的性能和可扩展性。

相关推荐
卧室小白12 小时前
docker容器
运维·docker·容器
Benszen12 小时前
Docker容器化解决方案
运维·docker·容器
仙柒41514 小时前
Namespace
运维·docker·容器
pigs201815 小时前
Docker容器中Kingbase数据库授权到期更换解决方案
数据库·docker·容器
m0_7510186615 小时前
docker 安装 nginx
vue.js·nginx·docker
人工智能培训16 小时前
AI人工智能未来发展趋势
人工智能·深度学习·机器学习·docker·容器
成为你的宁宁16 小时前
【基于 Docker-compose 部署 Prometheus 监控系统实战教程 】
docker·容器·prometheus
梦梦代码精16 小时前
LikeShop按摩到家系统:2026年本地生活创业新风口,上门服务O2O源码私有化部署实战
大数据·docker·小程序·uni-app·生活·高并发·开源软件
xiaogg367817 小时前
k8s 部署yaml文件和Dockerfile文件配置
java·docker·kubernetes
日取其半万世不竭18 小时前
Docker 网络模式详解:bridge、host、overlay 和 macvlan
网络·docker·容器