1. 环境准备
- 确保你有至少 3 台机器(物理机或虚拟机),每台机器上安装了 Redis。
- 每个节点需要开放以下端口:
- Redis 默认端口:6379
- 集群通信端口:默认为 16379
- 确保防火墙允许这些端口的通信。
2. 配置 Redis 节点
在每台机器上,编辑 Redis 的配置文件 redis.conf
,添加或修改以下内容:
基础配置
# 指定绑定的 IP 地址(默认为 127.0.0.1,集群模式下需要改为实际 IP)
bind <节点的实际 IP>
# 设置 Redis 端口(默认是 6379)
port 6379
# 开启集群模式
cluster-enabled yes
# 集群通信的端口(默认为 16379,不要与其他服务冲突)
cluster-config-file nodes.conf
# 集群节点超时时间(单位:毫秒,默认是 15000)
cluster-node-timeout 15000
# 设置密码(可选,但生产环境中建议启用)
requirepass <your-password>
主从复制配置
为了高可用性,集群中的每个主节点需要有从节点。在配置文件中添加以下内容:
# 开启持久化(确保数据不丢失)
save 900 1
save 300 100
save 60 10000
# 启用 AOF 持久化(更高安全性,但性能稍低)
appendonly yes
3. 启动 Redis 节点
在每台机器上启动 Redis:
redis-server redis.conf
4. 初始化集群
使用 redis-cli
初始化集群。以下是一个示例命令,假设你有 6 个节点(3 主 + 3 从),每个主节点的 IP 和端口分别是:
redis-cli --cluster create \
<IP1:6379> <IP2:6379> <IP3:6379> \
<IP4:6379> <IP5:6379> <IP6:6379> \
--cluster-replicas 1
<IP1:6379>
等是各个节点的地址。--cluster-replicas 1
表示每个主节点对应一个从节点。
执行命令后,会提示你确认是否继续。输入 yes
即可完成初始化。
5. 验证集群状态
在任意一个节点上执行以下命令,查看集群的运行状态:
redis-cli --cluster check <IP:6379>
正常情况下,输出应显示集群健康且所有节点在线。
6. 测试集群
连接集群
使用 redis-cli
连接集群:
redis-cli -c -h <任意节点的 IP> -p 6379
-c
表示开启集群模式。-h
和-p
指定连接的节点。
分布式存储测试
在 redis-cli
中执行以下命令:
SET key1 value1
GET key1
观察日志输出,确认数据是否正确分布到各个节点上。
7. 高可用性与故障转移
Redis 集群支持自动故障转移。如果一个主节点宕机,系统会自动将其中一个从节点提升为主节点,并重新分配数据。
测试故障转移
- 在
redis-cli
中执行以下命令,查看当前的集群拓扑:CLUSTER NODES
- 停止一个主节点(例如,直接关闭 Redis 服务)。
- 再次执行
CLUSTER NODES
,观察是否有从节点被提升为主节点。
8. 扩展集群
如果需要添加新的节点,可以使用以下命令:
redis-cli --cluster add-node <新节点的 IP:6379> <任意现有节点的 IP:6379>
然后,手动迁移数据到新节点以平衡负载。
9. 注意事项
- 网络延迟:集群中的节点需要低延迟、高带宽的网络环境。
- 备份与恢复:
- 定期备份
dump.rdb
文件(持久化文件)。 - 如果节点故障,可以从备份中恢复数据。
- 定期备份
- 监控工具:
- 使用 Redis 自带的监控工具(如
redis-stat
)或第三方工具(如 Prometheus + Grafana)监控集群状态。
- 使用 Redis 自带的监控工具(如
总结
通过以上步骤,你可以成功部署一个高可用、可扩展的 Redis 集群。在实际生产环境中,建议使用更完善的管理和监控工具,并定期维护和优化集群性能。