Redis 集群模式最少需要 3 台主节点,但为了实现高可用和故障自动转移,生产环境强烈建议至少部署 6 台节点(3 主 3 从)。这是由 Redis Cluster 的架构设计决定的,核心原因如下:
- 数据分片机制:Redis 集群将全部数据划分为 16384 个哈希槽,每个主节点负责一部分槽位。若只有 2 个主节点,当其中一个宕机时,其负责的槽位将无法被访问,导致整个集群不可用。而 3 个主节点可确保即使一个节点失效,其余两个仍能覆盖所有槽位,维持服务运行。
- 故障转移依赖从节点:当一个主节点发生故障时,集群会自动从其对应的从节点中选举一个新的主节点接管服务。如果没有从节点,该主节点负责的槽位将永久丢失,集群进入“fail”状态。因此,每个主节点必须配备至少一个从节点,才能保障高可用。
- 多数派投票机制:Redis 集群采用 Gossip 协议进行节点间通信和故障检测。当一个节点被判定为“疑似下线”时,需要超过半数的节点投票确认其为“客观下线”,才会触发故障转移。若只有 2 个节点,无法形成多数派,系统将无法完成故障判定与恢复。
所以准备6个节点的redis,因为我有很多旧的安卓机,可以一台一个节点,充分学习redis的集群模式。
准备工作:每台安卓设备运行内存不能太小,也不能让可用运行内存太小。
我现在的安卓设备分别是:vivo y93(3+64)、vivo x7(4+64)、荣耀8x(6+128)、小米8(6+64)、realme x7 pro(8+256),树莓派5(8+256);
每台设备都要设置redis的配置文件,关键配置如下:
# 绑定IP,这是公开访问
bind 0.0.0.0
# 这个是保护模式,关闭就可以,生产环境需要使用密码访问。
protected-mode no
# 进程守护模式,最后生成一个redis.pid文件记录进程号,同时也会转到后台
daemonize yes
# 这个尽量小于可用内存,防止过大被杀死
maxmemory 1500m
# 这个是内存满了对于旧的key的处理,下面是删除时间最早的key
maxmemory-policy allkeys-lru
# 这个是集群开机
cluster-enabled yes
# 这个是集群的配置文件,有redis自己维护
cluster-config-file nodes-6379.conf
# 这个是集群节点通信超时时间
cluster-node-timeout 5000
# redis密码
requirepass foobared比如6个节点的设备IP如下
| 设备 | IP |
|---|---|
| vivo y93 | 192.168.10.101 |
| vivo x7 | 192.168.10.102 |
| 荣耀8x | 192.168.10.103 |
| 小米8 | 192.168.10.104 |
| realme x7 pro | 192.168.10.105 |
| 树莓派5 | 192.168.10.106 |
每台redis的配置都要配置,然后启动redis,/path/to/redis.conf是配置文件路径;
redis-server /path/to/redis.conf启动后,任意一个redis设备。
redis-cli --cluster create 192.168.10.101:6379 192.168.10.102:6379 192.168.10.103:6379 192.168.10.104:6379 192.168.10.105:6379 192.168.10.106:6379 --cluster-replicas 1
评论 (0)