需手动部署6个Redis实例(3主3从),配置集群模式、用redis-cli创建集群、验证状态、开放端口并配置systemd服务,最后测试分片与故障转移。

如果您计划在Linux环境中构建Redis集群,实现多节点分片存储与高可用性,则需手动配置多个Redis实例并启用集群模式。以下是完成该部署的具体步骤:
一、准备六个独立的Redis实例
Redis集群要求至少三个主节点和三个从节点以满足故障转移与数据分片的基本条件。每个实例需运行在不同端口,并拥有独立的数据目录与配置文件。
1、创建六个工作目录,例如:/opt/redis-cluster/7000 至 /opt/redis-cluster/7005。
2、在每个目录中复制一份 redis.conf 配置文件,并按需修改以下关键项:将 port 改为对应端口号(如7000),设置 bind 0.0.0.0,启用 cluster-enabled yes,指定 cluster-config-file nodes-7000.conf,设置 cluster-node-timeout 5000,并关闭 protected-mode no 和 daemonize yes。
3、依次启动全部六个实例,使用命令:/usr/local/bin/redis-server /opt/redis-cluster/7000/redis.conf,依此类推至7005。
二、使用redis-cli创建集群拓扑
通过 redis-cli 的 --cluster 子命令将六个运行中的节点组织成一个具有三主三从结构的集群。该操作会自动分配槽位(16384个)并建立主从关系。
1、确保系统已安装 Redis 5.0 或更高版本客户端,且 redis-cli 可执行。
2、执行集群初始化命令:redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1。
3、当提示 Can I set the above configuration? (type 'yes' to accept) 时,输入 yes 确认。
三、验证集群状态与节点信息
集群创建完成后,需确认各节点是否成功握手、槽位是否均匀分配、主从关系是否建立,以及集群整体是否处于“ok”状态。
1、连接任意一个节点,例如:redis-cli -c -p 7000。
2、执行命令:cluster info,检查 cluster_state:ok 和 cluster_known_nodes:6 是否出现。
3、执行命令:cluster nodes,确认输出中包含三行标记为 master 且有对应 slave 行的记录,且每行均显示 connected 状态。
四、配置防火墙与系统服务管理
为保障集群节点间通信稳定,需开放所有Redis实例端口及集群总线端口(即实例端口+10000),同时将实例纳入systemd服务以便统一启停与日志管理。
1、开放端口范围:7000-7005 与 17000-17005,使用命令:firewall-cmd --permanent --add-port=7000-7005/tcp 和 firewall-cmd --permanent --add-port=17000-17005/tcp,随后重载防火墙规则。
2、为每个实例编写 systemd service 文件,例如 /etc/systemd/system/redis_7000.service,内容中指定 ExecStart=/usr/local/bin/redis-server /opt/redis-cluster/7000/redis.conf,并设置 Restart=always。
3、执行 systemctl daemon-reload,然后启用并启动服务:systemctl enable redis_7000 && systemctl start redis_7000,依此类推完成全部六个服务。
五、测试数据分片与故障转移能力
通过写入带哈希标签的键值对,验证槽位分配是否生效;通过主动终止主节点进程,观察从节点是否自动升级为主节点并维持集群可用性。
1、使用集群模式客户端连接:redis-cli -c -p 7000。
2、写入多个键,例如:set {user1000}.name "Alice"、set {user2000}.name "Bob",确认返回 OK 且无MOVED重定向错误。
3、在另一终端中执行:kill -9 $(ps aux | grep 'redis.conf' | grep 7000 | awk '{print $2}'),强制停止7000节点。
4、等待约10秒后,再次执行 cluster nodes,确认原7000节点状态变为 fail,而其从节点(如7003)状态已更新为 master,且槽位已接管。










