tencent cloud

智能顾问

产品动态
产品简介
产品概述
功能介绍
产品优势
应用场景
客户案例
购买指南
快速入门
使用智能顾问进行混沌演练
操作指南
智能顾问-云架构操作指南
智能顾问-云巡检操作指南
智能顾问-混沌演练操作指南
智能顾问-数字资产操作指南
权限管理
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Task APIs
Cloud Architecture Console APIs
Data Types
Error Codes
常见问题
智能顾问常见问题
智能顾问-云巡检常见问题
智能顾问-云架构常见问题
智能顾问-混沌演练常见问题
相关协议
Tencent Cloud Smart Advisor Service Level Agreement
PRIVACY POLICY MODULE CHAOTIC FAULT GENERATOR
DATA PRIVACY AND SECURITY AGREEMENT MODULE CHAOTIC FAULT GENERATOR
联系我们

CKafka Broker 宕机

PDF
聚焦模式
字号
最后更新时间: 2025-11-20 15:58:57

背景

现如今,Kafka 作为一个高性能、高可靠性、分布式的消息队列系统,广泛地被应用于大规模互联网服务中,如 Tencent、Facebook、LinkedIn、Netflix、Airbnb 等知名公司。然而,在大规模的分布式系统中,服务的不可预测性、复杂性和耦合性经常会导致一些不可预测的故障事件。当 Kafka Broker 节点宕机时,可能会出现以下故障:
数据丢失:如果正在写入宕机的 broker 的消息,则可能会导致数据丢失。在此期间,生产者可能无法将消息写入分区并将其复制到其他副本,因此可能会导致消息丢失。
可用性降低:宕机的 broker 不再处理请求,这可能会导致生产者和消费者的请求超时。如果有多个 broker 节点宕机,集群的可用性会进一步降低。
延迟增加:宕机的 broker 不再处理请求,这可能会导致生产者和消费者请求的延迟增加。当请求超时并重新发送时,它们可能需要等待其他节点回复,从而导致更长的延迟。
不均衡的领导者选举:如果宕机的 broker 是分区的领导者,则需要进行领导者选举。如果宕机的 broker 重新启动,并且在它退出之前的备份没有被删除,则可能会导致不均衡的领导者选举。
副本同步延迟:如果宕机的 broker 是一个或多个副本的复制者,则可能会导致副本同步延迟。如果这种延迟很大,可能会导致生产者和消费者读取或写入过时的数据。

腾讯云消息队列 CKafka(Cloud Kafka)

腾讯云消息队列 CKafka(Cloud Kafka)是基于开源 Apache Kafka 消息队列引擎,提供高吞吐性能、高可扩展性的消息队列服务。消息队列 CKafka 目前已经兼容 Apache Kafka 0.9、0.10、1.1、2.4、2.8、3.2 版本接口,在性能、扩展性、业务安全保障、运维等方面具有超强优势,让您在享受低成本、超强功能的同时,免除繁琐运维工作。腾讯云 CKafka 具有高可靠性、高可用性、高性能等特性,保证用户的数据安全。

故障原理

故障效果:CKafka 实例的某个或某个可用区 Broker 宕机离线。实例会出现未同步副本。
CKafka Broker 宕机逻辑:Broker 宕机之后(并不会自动拉起新的 broker 节点),会在集群中的其他 broker 节点中选出新的 topic-partition leader 副本,挂掉一台 broker,那么这台机器上的副本就不可用, 会导致 topic 少了一个副本, 并不会 “恢复到用户预期的副本数量”。对 CKafka 而言,只要有一个副本可用,就可以正常生产消费。故障恢复之后,原 Broker 上的副本会从其他 Broker 节点复制进而恢复。
CKafka Broker 节点宕机用户侧风险:故障之后,leader 副本切换通常是秒级的,在此期间,用户也许会收到重试警告,由于切换非常迅速,通常不会发生消息丢失(极小概率:消息写到 page cache,由异步线程刷盘,若在 page cache 数据没有刷盘的同时, follower 并未同步到 leader 副本的消息的情况下,会出现部分消息丢失)
故障示例图:一个 CKafka 实例(4个 Broker 节点部署在两个可用区),将 Broker A 宕机之后,离线,CKafka 实例会将位于 Broker C 上的 Partition 0 的副本选为新的 Leader 副本,对外提供消息服务。



注意事项

实例类型:该动作只对实例类型为 CKafka 专业版实例开放故障注入能力。
实例状态:进行演练的实例需要存在有效数据(需要存在 Topic)。
请勿短时间内频繁演练:频繁演练会导致实例健康状态数据不足,不足以判断是否是非演练造成,会拒绝演练请求,演练失败,若出现演练失败,请间隔15分钟之后重试。
防止演练导致实例生产消费流量过载:Broker宕机故障演练时,除宕机的Broker外,其他Broker的带宽使用率不能超过80%

演练准备

准备一台可供演练的 CKafka 专业版实例,并且具有一定的有效数据。文档采用一个跨 AZ 部署的容灾实例(共4个 Broker)作为演示。

步骤一:创建演练

1. 登录 智能顾问 > 混沌演练 控制台。
2. 在左侧导航栏选择演练管理页面,单击新建演练。
3. 单击跳过,新建空白演练
4. 填写完基本信息后,进入演练对象配置,对象类型选择云资源下的 CKafka,单击添加实例。单击添加实例后,会列出目标地域下所有的 CKafka 实例信息,可以根据实例 ID、VPC-ID、 子网 ID 以及标签筛选符合要求的实例。
5. 选择目标实例后,单击立即添加,即可添加演练动作。
6. 演练动作选择 Broker 宕机(专业版),然后单击下一步
7. 设置动作参数。文档选择指定可用区宕机模式,选择注入目标可用区,单击确认
注意:
该故障动作支持以下2种注入方式:
1. 随机单 Broker 宕机:会在 CKafka 实例所有的 Broker 节点中随机选择一个节点注入故障。
2. 随机可用区宕机(容灾实例):该注入方式仅支持容灾实例,会从 CKafka 实例可用区中随机选择一个可用区注入故障,故障后,选中可用区的所有 Broker 宕机离线。若使用非容灾实例进行演练时,将不会注入故障,注入会失败。
3. 指定可用区宕机(容灾实例):在指定可用区注入时,只有存在指定可用区的实例故障才会注入成功,不存在指定可用区的实例注入将会失败,若需要对多个实例指定可用区注入故障,建议拆分为多个动作组执行。
8. 单击下一步,进入全局配置,全局配置请参见 快速入门
9. 确认无误后,单击提交。
10. 可单击跳转演练详情开始演练。

步骤二:执行演练

1. 观察演练前实例监控数据,这里可以重点关注 Broker 存活率指标以及未同步副本数2个监控指标。可前往 CKafka 控制台 查看。
注意:
CKafka 控制台 监控会有一定的延迟时间,可待故障注入成功之后观察到数据变化。其中 Broker 存活率每5分钟采集一个点。
2. 由于演练为手动推进,所以需要手动执行故障动作。可单击动作卡片中的执行按钮启动故障注入。启动故障注入,等待故障注入成功。
3. 故障注入成功,可以单击动作卡片,查看执行详情。可发现故障已注入成功。此时,可前往 CKafka 控制台 观察数据变化。
观察 Broker 存活率指标,发现到 Broker 存活率下降。说明存在一台 Broker 宕机。
同时观察未同步副本数指标,存在未同步的副本。
4. 执行恢复,单击执行恢复动作。
5. 待恢复成功之后,继续观察指标。
Broker 存活率指标恢复到100%。
未同步副本数,恢复到0。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈