跳到主要内容
版本:2.8.8

模拟 Kafka 故障

本文介绍如何通过 Chaos Mesh 的 PhysicalMachineChaos,在物理机上对 Kafka 注入故障。

前置条件​

版本说明

使用本文介绍的 Kafka 故障功能,需要部署 Chaos Mesh 2.8.8 或更高版本,并在目标物理机上运行 Chaosd v1.6.0 或更高版本。

部署步骤和目标机器的配置方法请参考模拟物理机故障。

配置​

将 spec.action 设置为 kafka-fill、kafka-flood 或 kafka-io,并将故障参数填写在同名配置块中。例如,kafka-io 的参数应填写在 spec.kafka-io 中。

三种行为都需要指定 Kafka broker 的 host 和 port,以及要注入故障的 topic。port 必须大于 0。如果 broker 需要认证,还需同时设置 username、password 和 authMechanism。支持的认证机制为 sasl/plain、sasl/scram-sha-256 和 sasl/scram-sha-512。 设置 username 时必须同时设置 authMechanism。

除上述连接参数外,各行为还需要以下配置。

行为其他必需配置
kafka-fillmessageSize 指定每条消息的字节数,且必须大于 0。maxBytes 也必须大于 0。还需指定重新加载 Kafka 配置的 reloadCommand,以及 Chaosd 所在机器上已存在的 broker 配置文件 configFile。
kafka-floodmessageSize 指定每条消息的字节数,且必须大于 0。threads 指定工作线程数,也必须大于 0。
kafka-ioconfigFile 必须指向 Chaosd 所在机器上已存在的 broker 配置文件。nonReadable 和 nonWritable 中至少有一个必须为 true。

示例​

以下示例通过 kafka-io 移除目标 topic 分区目录和日志文件的写权限。使用前,请将 selector.physicalMachines 中的命名空间和 PhysicalMachine 名称,以及 broker 地址、认证信息和配置文件路径替换为实际值。

apiVersion: chaos-mesh.org/v1alpha1
kind: PhysicalMachineChaos
metadata:
name: physical-kafka-io
namespace: chaos-mesh
spec:
action: kafka-io
mode: one
selector:
physicalMachines:
default:
- kafka-host
kafka-io:
topic: test-topic
host: 192.168.0.20
port: 9092
username: chaos-user
password: replace-with-password
authMechanism: sasl/plain
configFile: /opt/kafka/config/server.properties
nonWritable: true
duration: '30s'