场景
Redis、RabbitMQ、Kafka 在现代微服务架构中承担着缓存、消息队列和流处理的核心角色。一旦这些中间件出现可靠性问题,可能导致服务中断、数据丢失或延迟飙升。
常见症状
- Redis:响应超时、主从切换频繁、内存使用率超过 80%、持久化失败
- RabbitMQ:队列堆积、消费者连接断开、节点磁盘告警、镜像队列同步异常
- Kafka:ISR 收缩、leader 选举频繁、生产或消费延迟增加、Broker 宕机
诊断步骤
Redis
- 检查 Redis 慢日志:
SLOWLOG GET 10 - 查看内存使用:
INFO memory - 检查持久化:
INFO persistence确认 RDB/AOF 是否成功 - 观察集群状态:
CLUSTER INFO(集群模式)
RabbitMQ
- 查看队列状态:
rabbitmqctl list_queues name messages consumers - 检查节点健康:
rabbitmqctl cluster_status - 监控磁盘和内存:
rabbitmq-diagnostics check_port_connectivity - 检查日志:
/var/log/rabbitmq/
Kafka
- 描述 topic 分区:
kafka-topics --describe --bootstrap-server localhost:9092 --topic my-topic - 查看消费者组偏移:
kafka-consumer-groups --bootstrap-server localhost:9092 --group my-group --describe - 检查 broker 日志:
/var/log/kafka/server.log - 使用 JMX 监控:通过 Prometheus + JVM exporter
修复命令与操作
Redis
- 内存耗尽:
CONFIG SET maxmemory 4gb并配置驱逐策略allkeys-lru - 主从不同步:重新连接
SLAVEOF <master-ip> <master-port> - 持久化失败:检查磁盘空间,调整 RDB 保存策略
SAVE 900 1
RabbitMQ
- 队列堆积:增加消费者,或重启消费者应用
- 节点宕机:重启节点,确保 Erlang cookie 一致
- 镜像队列同步:
rabbitmqctl sync_queue <queue-name>
Kafka
- ISR 收缩:增加
min.insync.replicas或修复损坏的副本 - Leader 选举异常:调整
unclean.leader.election.enable=false - 延迟:调整
fetch.max.bytes或增加分区数
风险控制
在执行修改前,务必备份配置文件和持久化数据。对于 Redis,使用 BGSAVE 后复制 dump.rdb;对于 RabbitMQ,导出配置:rabbitmqadmin export foo.json;对于 Kafka,备份 config/server.properties 和日志目录。
回滚策略
- Redis:恢复 dump.rdb 并重启,或切换回旧配置
- RabbitMQ:恢复配置文件并重启节点,或从备份重建队列
- Kafka:恢复 server.properties 并重启 broker,使用 Kafka 自带的
kafka-replay-log-producer从备份回放
验证流程
- Redis:执行
PING,检查INFO中的连接数和延迟 - RabbitMQ:发布测试消息并消费,观察队列长度
- Kafka:生产并消费一条消息,检查偏移量和延迟
何时提交 OpsGlobal 工单
当您遇到以下情况时,请立即提交工单: - 中间件完全不可用且无法自行恢复 - 数据丢失超过容忍范围 - 集群脑裂无法修复 - 需要专家协助进行容量规划或架构优化
OpsGlobal 的 SRE 团队 7×24 小时待命,提供远程支持和自动化工具,确保您的中间件集群稳定运行。
适用场景
适合正在处理 NoSQL、Redis, RabbitMQ, Kafka, 中间件可靠性 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文详细介绍了在生产环境中保障 Redis、RabbitMQ 和 Kafka 中间件可靠性的方法,包括常见故障场景、症状、诊断步骤、修复命令、风险控制、回滚策略和验证流程,并指导何时需要向 OpsGlobal 提交工单。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。