三台服务器怎么搭建Redis集群,最少节点到底得几个才能稳妥运行
- 问答
- 2026-01-05 11:49:11
- 2
关于三台服务器搭建Redis集群以及最少节点数量的问题,核心答案是这样的:用三台服务器搭建Redis集群是官方认可且最常见的最小高可用部署方案,这个“最小”指的是在保证集群“高可用”特性(即部分节点故障时服务不中断)的前提下,所需的最少服务器数量,如果你能接受没有高可用性,纯粹为了分散数据,理论上两个节点也能组成集群,但那非常脆弱,完全谈不上“稳妥运行”,如果你追求的是“稳妥运行”,那么三台服务器是底线。
下面详细解释为什么是三台,以及具体怎么搭建。
为什么最少需要三台服务器才能稳妥?
这主要和Redis集群的“共识机制”有关,Redis集群需要大多数节点同意才能决定某个节点是否真的失效,从而触发故障转移,这个机制被称为“法定人数”(Quorum)。
-
假设只有两台服务器(A和B):我们在这两台服务器上各部署一个主节点,并给每个主节点配一个从节点,那么整个集群有四个节点(两个主节点,两个从节点),如果服务器A(包含一个主节点和一个从节点)整个宕机了,剩下的服务器B上只有一个主节点和一个从节点,集群需要判断A服务器上的主节点是否失效,但要做出这个决定,需要超过半数的节点同意,总节点数是4个,半数就是2个,剩下的节点数正好是2个,它无法形成“超过半数”(即至少3票)的绝对多数意见,集群无法确定是A节点真的挂了,还是发生了网络分区(比如A其实还活着,只是无法与B通信),为了避免“脑裂”(即出现两个都认为自己是主的集群),集群将进入故障状态,停止提供服务,这就失去了高可用的意义。
-
当有三台服务器时(A、B、C):我们通常会在每台服务器上部署一个主节点和一个从节点(注意:从节点不一定非要在同一台服务器,但为了充分利用机器,常这么部署),这样总共有6个节点,如果其中一台服务器(比如A)整个宕机,它上面的主节点和从节点都失效了,剩下的节点总数是4个(分布在B和C服务器上),总节点数是6个,半数就是3个,现在有4个存活的节点,超过了3个,它们可以形成多数派,能够可靠地判定A服务器上的节点已经失效,然后迅速发起投票,将A服务器上那个主节点对应的从节点(这个从节点在B或C服务器上)提升为新的主节点,集群继续对外提供服务,实现了高可用。
三台服务器是确保在任意一台服务器故障时,集群仍能正常运作的最小单位,这是由数学逻辑决定的,是分布式系统的基石。
三台服务器如何搭建Redis集群?
以下是基于Redis官方文档的搭建思路和关键步骤,具体命令可能会因版本略有差异,但原理不变。
-
准备工作:
- 准备三台服务器(物理机或虚拟机),假设IP地址分别为 192.168.1.10, 192.168.1.11, 192.168.1.12。
- 确保三台服务器之间的网络是连通的,并且防火墙放行了Redis集群总线端口(通常是客户端端口+10000,例如如果Redis服务端口是6379,则总线端口是16379)。
- 在每台服务器上安装相同版本的Redis,并确保Redis版本支持集群模式(3.0及以上版本)。
-
配置Redis节点:
- 在每台服务器上,至少创建两个Redis配置文件,一个给主节点用,一个给从节点用,因为一台服务器上要运行两个Redis实例(一主一从)。
- 关键配置项(在redis.conf文件中修改):
port 6379:指定一个实例的端口,比如服务器A上主节点用6379,从节点用6380。cluster-enabled yes:这是开启集群模式的开关,必须设为yes。cluster-config-file nodes-6379.conf:指定该节点的集群配置文件路径,Redis会自动维护这个文件,不要手动修改。cluster-node-timeout 15000:节点超时时间,单位毫秒,超过这个时间认为节点故障。appendonly yes:建议开启持久化。
- 分别启动三台服务器上的所有Redis实例,每个实例都是独立的,还没有形成集群。
-
组建集群:
- 使用Redis源码包中自带的
redis-cli工具,使用--cluster create命令来创建集群,你需要列出所有主节点的IP和端口。 - 命令示例(在实际操作中应在一行内输入):
redis-cli --cluster create \ 192.168.1.10:6379 \ 192.168.1.11:6379 \ 192.168.1.12:6379 \ --cluster-replicas 1 - 这个命令的意思是:创建包含三个主节点(分别在三台服务器上的6379端口)的集群,并且
--cluster-replicas 1参数表示为每个主节点分配一个从节点,工具会自动将剩下的三个节点(6380端口的实例)分配为从节点。 - 执行命令后,
redis-cli会给出一个分片方案,让你确认,输入yes后,它就开始在各个节点间分配哈希槽(Redis集群共16384个槽,数据根据键的哈希值分布在这些槽里),并建立主从关系。
- 使用Redis源码包中自带的
-
验证集群:
- 使用命令
redis-cli -c -p 6379 cluster nodes连接上任意一个节点,可以查看集群所有节点的状态和关系图,你应该能看到三个主节点都是master,且显示它们负责的哈希槽范围,另外三个节点是slave,并标明它们复制的是哪个主节点。 - 尝试读写数据,由于使用了
-c参数(代表集群模式),客户端会在不同的节点间自动重定向。
- 使用命令
总结一下
引用自Redis官方文档关于集群可靠性的描述,其核心思想就是通过多数派原则来避免脑裂,三台服务器部署六个节点(三主三从)是满足这一原则的最小且最经济的方案,它能确保在单台服务器故障时,集群仍然有超过半数的节点存活,从而能够自动完成故障转移,实现“稳妥运行”,如果你只有两台服务器,虽然能勉强搭起来,但一旦有任何一台宕机,整个集群就会不可用,风险极高,对于生产环境或要求稳妥的场景,请务必从三台服务器起步。

本文由凤伟才于2026-01-05发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/74931.html
