位置:首页 > 其他编程语言 > Docker搭建Redis三主三从集群完整步骤

Docker搭建Redis三主三从集群完整步骤

时间:2026-08-31  |  作者:怪兽小助手  |  阅读:0

本文详细介绍如何在Docker环境下快速搭建Redis三主三从集群。通过创建6个容器实例,配置端口映射与持久化,并使用redis-cli构建主从关系。包含完整的Docker启动命令、集群创建指令及状态验证方法,帮助开发者高效部署高可用Redis环境。

集群最终效果预览

搭建完成后,我们将获得一个包含6个节点(3个Master主节点,3个Slave从节点)的Redis集群。通过`cluster info`和`cluster nodes`命令,可以清晰看到各节点的角色分配、哈希槽分布以及主从复制状态,确保数据的高可用性和负载均衡。

Redis集群节点状态查看结果,显示6个节点的ID、角色(master/slave)及连接的从节点信息
集群搭建完成后的节点状态查看结果,显示6个节点的ID、角色及连接的从节点信息

环境准备与前置条件

在开始操作前,请确保您的服务器已满足以下条件:

  • Docker环境:已安装并运行Docker服务。
  • Redis镜像:拉取`redis:6.0.8`或更高稳定版本镜像。
  • 网络配置:服务器防火墙已关闭或已开放相关端口(6381-6386及集群总线端口16381-16386)。
  • IP地址:记录服务器的真实内网IP(例如`192.168.111.147`),用于集群节点通信。

第一步:启动Docker服务并创建容器实例

首先,确保Docker后台服务正常运行,然后批量创建6个Redis容器实例。这6个实例将分别对应集群中的3个主节点和3个从节点。

第1步:启动Docker后台服务

执行以下命令启动Docker服务:

systemctl start docker

第2步:创建6个Redis容器实例

使用`docker run`命令创建容器。关键参数说明如下:

  • --name:指定容器名称,如redis.node-1
  • --net host:使用宿主机网络模式,简化端口映射。
  • --privileged=true:赋予容器root权限,确保集群总线通信正常。
  • -v /data/redis/share/redis-node-X:/data:挂载宿主机目录到容器,实现数据持久化。
  • redis:6.0.8:指定使用的Redis镜像版本。
  • --cluster-enabled yes:开启Redis集群模式。
  • --appendonly yes:开启AOF持久化,防止数据丢失。
  • --port XXXX:指定容器内Redis服务的端口号(6381-6386)。

依次执行以下命令创建6个容器:

# 创建节点1(端口6381)
docker run -d --name redis.node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381

# 创建节点2(端口6382)
docker run -d --name redis.node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382

# 创建节点3(端口6383)
docker run -d --name redis.node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383

# 创建节点4(端口6384)
docker run -d --name redis.node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384

# 创建节点5(端口6385)
docker run -d --name redis.node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385

# 创建节点6(端口6386)
docker run -d --name redis.node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
Docker容器创建命令执行界面,显示6个redis.node容器的启动状态
Docker容器创建命令执行界面,显示6个redis.node容器的启动状态
Docker ps命令查看结果,确认6个Redis容器正在运行
Docker ps命令查看结果,确认6个Redis容器正在运行

第二步:构建集群主从关系

容器启动后,各节点之间尚未建立联系。我们需要进入其中一个节点(如redis.node-1),使用redis-cli工具将它们组合成一个集群。

第3步:进入容器并构建集群

首先,通过docker exec命令进入redis.node-1容器内部:

docker exec -it redis.node-1 /bin/bash

在容器内部,执行redis-cli --cluster create命令来构建集群。请注意替换命令中的IP地址为您服务器的真实IP(可通过ifconfigip addr查看,例如ens33网卡IP)。

redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1

参数详解:

  • --cluster-replicas 1:指定每个主节点对应1个从节点。由于我们有6个节点,这将自动分配3个主节点和3个从节点,形成“三主三从”架构。
  • IP地址:必须替换为您服务器的真实内网IP,否则节点间无法通信。
Redis集群创建命令执行界面,显示节点分配和主从关系配置过程
Redis集群创建命令执行界面,显示节点分配和主从关系配置过程
集群创建确认界面,显示Yes/No确认提示及最终分配结果
集群创建确认界面,显示Yes/No确认提示及最终分配结果

第三步:验证集群状态

集群构建完成后,需要验证各节点是否正常工作以及主从关系是否正确建立。

第4步:连接Redis并检查集群信息

使用redis-cli连接到任意一个节点(例如端口6381),然后执行集群查看命令。

redis-cli -p 6381

进入Redis命令行后,依次执行以下两个命令:

  1. 查看集群概要信息cluster info
cluster info命令输出结果,显示cluster_state:ok及节点数量统计
cluster info命令输出结果,显示cluster_state:ok及节点数量统计

关注cluster_state字段,若显示为ok,则表明集群状态健康。

  1. 查看节点详细列表cluster nodes
cluster nodes命令输出结果,详细列出6个节点的ID、角色、IP端口及主从关系
cluster nodes命令输出结果,详细列出6个节点的ID、角色、IP端口及主从关系

cluster nodes的输出中,您可以看到每个节点的ID、角色(masterslave)、连接的IP端口以及它所属的主节点ID。确保有3个节点标记为master,另外3个节点标记为slave且分别连接到对应的master。

常见问题与调整建议

  • 集群状态为FAIL:检查防火墙是否开放了6381-6386端口以及对应的集群总线端口(端口号+10000,即16381-16386)。确保--privileged=true已设置。
  • 节点无法连接:确认redis-cli --cluster create命令中的IP地址是服务器内网IP,而非127.0.0.1localhost
  • 数据持久化:通过-v参数挂载了宿主机目录,重启容器后数据不会丢失。建议定期备份/data/redis/share/目录。

总结

通过以上步骤,我们成功在Docker环境中搭建了一个高可用的Redis三主三从集群。该架构不仅实现了数据的分片存储,提高了读写性能,还通过主从复制保证了数据的高可用性。在实际生产环境中,建议结合哨兵模式(Sentinel)或Keepalived进一步提升集群的故障自动转移能力。

以上就是Docker搭建Redis三主三从集群的详细内容,更多关于Docker Redis集群配置的资料请关注本站其它相关文章!

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多