本文详细介绍如何在Docker环境下快速搭建Redis三主三从集群。通过创建6个容器实例,配置端口映射与持久化,并使用redis-cli构建主从关系。包含完整的Docker启动命令、集群创建指令及状态验证方法,帮助开发者高效部署高可用Redis环境。
集群最终效果预览
搭建完成后,我们将获得一个包含6个节点(3个Master主节点,3个Slave从节点)的Redis集群。通过`cluster info`和`cluster nodes`命令,可以清晰看到各节点的角色分配、哈希槽分布以及主从复制状态,确保数据的高可用性和负载均衡。

环境准备与前置条件
在开始操作前,请确保您的服务器已满足以下条件:
- 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


第二步:构建集群主从关系
容器启动后,各节点之间尚未建立联系。我们需要进入其中一个节点(如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(可通过ifconfig或ip 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,否则节点间无法通信。


第三步:验证集群状态
集群构建完成后,需要验证各节点是否正常工作以及主从关系是否正确建立。
第4步:连接Redis并检查集群信息
使用redis-cli连接到任意一个节点(例如端口6381),然后执行集群查看命令。
redis-cli -p 6381
进入Redis命令行后,依次执行以下两个命令:
- 查看集群概要信息:
cluster info

关注cluster_state字段,若显示为ok,则表明集群状态健康。
- 查看节点详细列表:
cluster nodes

在cluster nodes的输出中,您可以看到每个节点的ID、角色(master或slave)、连接的IP端口以及它所属的主节点ID。确保有3个节点标记为master,另外3个节点标记为slave且分别连接到对应的master。
常见问题与调整建议
- 集群状态为FAIL:检查防火墙是否开放了6381-6386端口以及对应的集群总线端口(端口号+10000,即16381-16386)。确保
--privileged=true已设置。 - 节点无法连接:确认
redis-cli --cluster create命令中的IP地址是服务器内网IP,而非127.0.0.1或localhost。 - 数据持久化:通过
-v参数挂载了宿主机目录,重启容器后数据不会丢失。建议定期备份/data/redis/share/目录。
总结
通过以上步骤,我们成功在Docker环境中搭建了一个高可用的Redis三主三从集群。该架构不仅实现了数据的分片存储,提高了读写性能,还通过主从复制保证了数据的高可用性。在实际生产环境中,建议结合哨兵模式(Sentinel)或Keepalived进一步提升集群的故障自动转移能力。
以上就是Docker搭建Redis三主三从集群的详细内容,更多关于Docker Redis集群配置的资料请关注本站其它相关文章!











