Redis集群配置有哪些要点
导读:Redis集群配置要点 一、基础配置参数 Redis集群的核心配置需在redis.conf中完成,关键参数包括: cluster-enabled yes:启用集群模式,节点以集群身份启动; cluster-config-file node...
Redis集群配置要点
一、基础配置参数
Redis集群的核心配置需在redis.conf
中完成,关键参数包括:
cluster-enabled yes
:启用集群模式,节点以集群身份启动;cluster-config-file nodes-< port> .conf
:集群配置文件路径(自动生成与维护),记录节点ID、槽位分配等信息,节点重启后自动读取;cluster-node-timeout 15000
:节点失联判定时间(毫秒),超过该时间未收到心跳则认为节点故障,影响故障转移速度(生产环境建议设为15-30秒);appendonly yes
:开启AOF持久化,确保数据落盘,避免节点重启后数据丢失;protected-mode no
:关闭保护模式(需配合密码),允许远程节点访问(集群节点间需互通);requirepass
与masterauth
:设置集群密码(所有节点密码一致),requirepass
用于客户端认证,masterauth
用于从节点连接主节点时的认证。
二、集群拓扑与规模
- 最小集群要求:官方建议至少3个主节点+3个从节点(共6节点),确保多数节点可用(故障转移需多数投票),避免脑裂;
- 节点分布:主从节点需部署在不同物理机器或可用区,防止单点硬件故障影响多个节点;
- 网状拓扑:节点间全连接(每个节点与其他所有节点直接通信),通过集群总线(
cluster-port=客户端端口+10000
)交换心跳、槽位变更等信息,保证信息快速传播。
三、槽位管理配置
Redis Cluster采用虚拟槽分区(0-16383共16384个槽),槽是数据分片与迁移的基本单位:
- 槽分配:需将所有槽分配给主节点(如3主节点时,每个主节点分配5461或5462个槽),可通过
redis-cli --cluster create
自动分配,或手动用CLUSTER ADDSLOTS
命令分配; - 槽均衡:通过
CLUSTER REBALANCE
命令调整槽分布,使各主节点负载均衡(如新增节点时迁移部分槽到新节点); - 跨槽操作:默认不支持跨槽多键操作(如
MSET
、事务),需通过HashTag(如{ user:1000} .name
与{ user:1000} .age
使用相同HashTag,强制映射到同一槽)解决。
四、高可用配置
- 从节点设置:每个主节点需至少1个从节点(
--cluster-replicas 1
),从节点通过异步复制同步主节点数据; - 故障转移参数:
cluster-replica-validity-factor 10
:从节点与主节点断链时间超过cluster-node-timeout×factor
时,才允许故障转移(避免误判);cluster-migration-barrier 1
:主节点至少保留1个从节点时,多余从节点才能迁移至无从节点的主节点(防止单主节点故障后无从节点可用);
- 读可用性:
cluster-allow-reads-when-down no
(默认),节点无法连接多数主节点或存在未覆盖槽时,停止接收所有请求(保证数据一致性);若设为yes
,允许从节点处理读请求(提升读性能,但可能读到旧数据)。
五、网络与安全配置
- 端口开放:需开放两个端口:
- 客户端端口(如6379):用于服务客户端请求;
- 集群总线端口(如16379):用于节点间通信(Gossip协议、心跳、槽位变更),确保节点间网络互通;
- 密码认证:所有节点设置相同
requirepass
(客户端连接需认证),masterauth
(从节点连接主节点需认证),防止未授权访问; - 持久化策略:建议开启AOF(
appendfsync everysec
,平衡性能与数据安全)+ RDB(save 900 1
,快速恢复),避免数据丢失。
六、性能优化配置
- 内存管理:设置
maxmemory
(如maxmemory 8GB
,预留操作系统与进程内存),选择合适淘汰策略(如volatile-lru
优先淘汰易变数据,allkeys-lfu
全局淘汰低频数据); - 内存碎片:开启
activedefrag yes
,设置active-defrag-threshold-lower 10
(内存碎片率超过10%时触发整理),减少碎片占用; - 网络优化:调整
tcp-keepalive 60
(保持长连接,避免频繁建连),tcp-backlog 511
(增加连接队列容量,应对高并发); - 批量操作:使用
Pipeline
(打包多个命令,减少RTT)或Lua脚本
(原子性执行复杂操作,如计数器+条件判断),提升吞吐量。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Redis集群配置有哪些要点
本文地址: https://pptw.com/jishu/722392.html