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

Redis集群主机怎么快速搭建,配置步骤和注意点全解析

(参考来源:Redis官方文档、主流云服务商最佳实践指南、以及常见的运维经验总结)

快速搭建的核心思路

Redis集群的目标是实现数据分片和高可用,一个正常运行的集群至少需要3个主节点(Master)和3个从节点(Slave),总共6个Redis实例,这是为了保证在部分节点故障时,集群能通过投票机制自动进行故障转移,防止“脑裂”现象(即网络分区导致出现两个都认为自己是主的集群),你可以将这6个实例部署在3台、4台、5台或6台物理机/虚拟机上,但为了高可用,建议至少部署在3台不同的机器上,避免主从节点在同一台机器。

配置步骤(以6个实例,3台机器为例)

假设我们有3台机器,IP分别为 192.168.1.10, 192.168.1.11, 192.168.1.12,计划在每台机器上部署2个Redis实例,一个作为主节点,一个作为从节点,但主从关系是交叉的,确保一个主节点的从节点在另一台机器上。

步骤1:在所有机器上安装Redis 确保三台机器上都安装了相同版本的Redis(建议5.0或以上版本,旧版本配置更复杂),可以通过系统包管理器(如yum, apt)或编译源码安装。

步骤2:准备每个实例的配置文件 在每台机器上,为要启动的两个Redis实例分别创建配置文件和数据目录,在192.168.1.10上:

  • 创建目录:mkdir -p /etc/redis/cluster /var/lib/redis/7000 /var/lib/redis/7001
  • 创建第一个实例的配置文件 /etc/redis/cluster/7000.conf核心如下:
    port 7000
    daemonize yes
    pidfile /var/run/redis_7000.pid
    logfile /var/log/redis/7000.log
    dir /var/lib/redis/7000
    cluster-enabled yes
    cluster-config-file nodes-7000.conf
    cluster-node-timeout 15000
    appendonly yes
    bind 0.0.0.0  # 允许所有IP连接,生产环境应绑定内网IP
    protected-mode no # 关闭保护模式,允许外部连接(生产环境需配合防火墙)
  • 创建第二个实例的配置文件 /etc/redis/cluster/7001.conf,只需将上面配置中的所有 7000 改为 7001 即可。
  • 在另外两台机器(192.168.1.11和192.168.1.12)上重复此操作,也创建端口为7002/7003、7004/7005的配置。

步骤3:启动所有Redis实例 在三台机器上,分别启动刚刚配置的Redis实例。

# 在192.168.1.10上
redis-server /etc/redis/cluster/7000.conf
redis-server /etc/redis/cluster/7001.conf
# 在192.168.1.11上
redis-server /etc/redis/cluster/7002.conf
redis-server /etc/redis/cluster/7003.conf
# 在192.168.1.12上
redis-server /etc/redis/cluster/7004.conf
redis-server /etc/redis/cluster/7005.conf

使用 ps -ef | grep redis 检查进程是否正常启动。

步骤4:组建集群 这是最关键的一步,使用Redis自带的redis-cli工具,任意选择一台机器执行创建集群的命令,这个命令会自动分配主从关系和哈希槽(数据分片)。

redis-cli --cluster create \
  192.168.1.10:7000 \
  192.168.1.11:7002 \
  192.168.1.12:7004 \
  192.168.1.10:7001 \
  192.168.1.11:7003 \
  192.168.1.12:7005 \
  --cluster-replicas 1
  • --cluster-replicas 1 表示每个主节点带1个从节点。
  • 命令执行后,工具会给出一个分配方案,检查无误后输入 yes 确认,集群会自动开始分配16384个哈希槽到三个主节点上,并建立主从复制关系。

步骤5:验证集群状态 使用以下命令连接任意一个节点并检查集群状态:

redis-cli -h 192.168.1.10 -p 7000 cluster nodes

这条命令会列出集群所有节点的信息,包括ID、角色(master/slave)、状态、以及它负责的哈希槽范围,确认所有节点都是connected状态,并且槽分配正确。 可以尝试设置和读取一个key来测试:redis-cli -h 192.168.1.10 -p 7000 -c-c 参数表示以集群模式连接,会自动重定向到正确的节点)。

关键注意点全解析

  1. 防火墙和网络安全:这是最容易出问题的地方,必须确保所有集群节点之间双向的“客户端端口”(如7000-7005)和“集群总线端口”(客户端端口+10000,如17000-17005)是相通的,防火墙规则一定要开放这两个端口范围。bind配置和protected-mode配置要与网络环境匹配,生产环境强烈建议绑定内网IP并配置防火墙白名单。

  2. 节点数量:不要尝试搭建只有2个主节点的集群,这无法正常工作,最小高可用集群就是3主3从。

  3. 系统参数调整:对于Linux系统,可能需要调整内核参数,如增加net.core.somaxconn(连接队列长度)和禁用透明大页(Transparent Huge Pages),因为THP可能会导致Redis延迟增高,可以通过echo never > /sys/kernel/mm/transparent_hugepage/enabled命令禁用。

  4. 数据持久化:配置中开启了appendonly yes(AOF持久化),这比RDB更安全,确保数据目录有足够的磁盘空间,并监控磁盘使用情况。

  5. 密码认证:如果要求安全认证,需要在所有实例的配置文件中添加requirepass yourpasswordmasterauth yourpassword,并且密码必须一致,否则,节点间无法通信,在创建集群的命令中也要加入-a yourpassword参数。

  6. 客户端使用:应用程序连接Redis集群时,必须使用支持集群协议的客户端库(如JedisCluster for Java, redis-py-cluster for Python),客户端库会帮你处理重定向,你只需要连接一个或多个入口节点即可。

  7. 备份与监控:即使有了集群,定期备份数据仍然是必要的,需要建立监控,关注节点的内存使用率、连接数、键数量、网络流量以及集群本身的状态(是否完整、是否有节点失败)。

  8. 扩缩容:搭建好之后,如果需要增加或减少节点,不能直接修改配置重启,必须使用redis-cli --cluster add-node等命令进行在线操作,并重新分配哈希槽,这是一个相对复杂的操作,需要提前规划。

通过以上步骤和注意点,你应该可以相对快速且稳健地搭建起一个Redis集群,搭建只是第一步,后续的运维、监控和问题排查同样重要。

Redis集群主机怎么快速搭建,配置步骤和注意点全解析