当前位置:首页 > 问答 > 正文

Redis集群怎么搭建单数台节点,简单实用方案分享

关于Redis集群搭建单数台节点的问题,其实是一个很常见且实际的需求,很多人一开始会疑惑,为什么官方推荐至少6个节点(3主3从)?如果我只想用3台服务器,能不能搭?答案是肯定的,而且方法不止一种,这里分享两种简单实用的方案,主要参考了Redis官方文档关于创建集群的基本逻辑以及一些技术社区(如Stack Overflow、国内博客园等)里常见的实践讨论。

最标准的3主3从,但部署在3台物理机上

这是最接近官方推荐、也是生产环境中最稳妥的单数节点部署方式,它的核心思想是:我们使用的是3台物理服务器(或虚拟机),但每台服务器上会运行两个Redis实例,一个主节点实例,一个从节点实例。 这样,从集群的角度看,我们拥有了6个节点,满足了主从复制的需求;但从硬件资源的角度看,我们只用了3台机器。

具体操作步骤很简单:

  1. 准备环境:准备三台服务器,假设IP分别是 192.168.1.10, 192.168.1.11, 192.168.1.12,确保它们之间网络互通,并且防火墙开放了Redis集群总线端口(通常是客户端端口号+10000,比如6379和16379)。
  2. 安装Redis:在每台服务器上都安装相同版本的Redis(建议5.0以上,对集群支持更好)。
  3. 配置实例:在每台服务器上,准备两个Redis配置文件,一个叫 redis-6379.conf,另一个叫 redis-6380.conf,关键配置项如下:
    • port: 一个设为6379,另一个设为6380。
    • daemonize yes: 让Redis以守护进程方式运行。
    • pidfile: 为每个实例指定不同的pid文件路径,如 /var/run/redis_6379.pid
    • logfile: 为每个实例指定不同的日志文件路径。
    • dir: 为每个实例指定不同的数据目录。
    • cluster-enabled yes: 这是最关键的一步,开启集群模式。
    • cluster-config-file nodes-6379.conf: 集群自动生成的配置文件,每个实例也要不同。
    • cluster-node-timeout 15000: 节点超时时间。
    • appendonly yes: 建议开启持久化。
  4. 启动实例:在三台服务器上,分别使用两个配置文件启动Redis服务,这样你就会得到6个运行中的Redis实例。
  5. 组建集群:使用Redis自带的集群管理工具 redis-cli 来创建集群,执行一条命令即可:
    redis-cli --cluster create \
    192.168.1.10:6379 192.168.1.11:6379 192.168.1.12:6379 \
    192.168.1.10:6380 192.168.1.11:6380 192.168.1.12:6380 \
    --cluster-replicas 1

    这条命令的意思是,将前面6个实例组成一个集群,--cluster-replicas 1 表示每个主节点配1个从节点,工具会自动将6380端口的实例分配为6379端口实例的从节点,并且会尽量保证主从节点不在同一台机器上(从而避免一台机器宕机导致主从全挂)。

  6. 验证集群:用 redis-cli -c -p 6379 连接上任意一个节点,执行 cluster info 查看集群状态,执行 cluster nodes 可以看到每个节点的角色和主从关系。

这个方案的优点是高可用性有保障,任何一台机器宕机,只是掉了两个实例(一主一从),集群会自动进行故障转移,剩下的两台机器上的从节点会升级为主节点,整个集群依然可以正常提供服务,缺点是需要一台机器跑两个实例,会占用更多CPU和内存资源,但通常现代服务器资源是足够的。

非标准的3主0从,纯测试使用

这种方案非常简单粗暴,就是搭建一个只有3个主节点、没有从节点的集群,这强烈不推荐用于生产环境,因为没有任何高可用性可言,任何一台服务器宕机,这个节点上负责的那部分数据就完全无法访问了,集群会处于故障状态。

但如果仅仅是用于本地开发测试,想快速体验一下集群的分片功能,这个方法倒是很快捷。

步骤简化如下:

  1. 同样在三台服务器上安装Redis。
  2. 每台服务器只配置并启动一个Redis实例(比如都用6379端口),配置中同样要开启 cluster-enabled yes
  3. 组建集群的命令更简单:
    redis-cli --cluster create 192.168.1.10:6379 192.168.1.11:6379 192.168.1.12:6379 --cluster-yes

    因为只有3个节点,所以默认就是3主0从。--cluster-yes 是直接同意默认的分配方案,避免手动确认。

这个方案除了快和节省资源,没有其他优点,只能用于测试。

总结一下

回到“Redis集群怎么搭建单数台节点”这个问题,最实用和简单的方案就是方案一,它虽然在硬件上是3台,但在逻辑上通过一台机器部署两个实例,构成了标准的、具备高可用能力的3主3从集群,这是业界通行的做法,既满足了奇数个主节点(Redis集群采用哈希槽分配,主节点数量建议为奇数以便于选举)的集群要求,又通过主从复制实现了高可用,而方案二只是一个临时的玩具,在实际操作中,你只需要关注方案一的步骤,就能轻松搭建起一个健壮的Redis集群。

Redis集群怎么搭建单数台节点,简单实用方案分享