8.5. 精简控制配置
Kafka.spec.cruiseControl
中的 config
属性包含作为键的配置选项,其值为以下 JSON 类型之一:
- 字符串
- 数字
- 布尔值
类似于 JSON 或 YAML 的字符串需要用显式引号括起。
除了由 AMQ Streams 直接管理的选项外,您还可以指定并配置 Cruise Control 文档 的"配置"一节中列出的所有选项。特别是,您无法 修改与 此处 提及的其中一个键相等或开头的键的配置选项。
如果指定了 restricted 选项,则忽略它们,并在 Cluster Operator 日志文件中输出警告信息。所有支持的选项都传递给 Cruise Control。
Cruise Control 配置示例
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... config: default.goals: > com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal, com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal cpu.balance.threshold: 1.1 metadata.max.age.ms: 300000 send.buffer.bytes: 131072 # ...
容量配置
整合控制使用 容量限制 来确定资源分布的优化目标是否受到破坏。这种类型的四个目标:
-
DiskUsageDistributionGoal
- 磁盘使用率分布 -
CpuUsageDistributionGoal -
CPU 使用率分布 -
NetworkInboundUsageDistributionGoal -
网络入站利用率分布 -
NetworkOutboundUsageDistributionGoal -
网络出站利用率分布
您可以在 Kafka. spec.cruiseControl
代理资源指定容量限值。它们默认是启用的,您可以更改其默认值。可以使用标准 OpenShift 字节单元(K、M、G 和 T)或其双字节(双倍的幂等)等效项(Ki、Mi、Gi 和 Ti)来为以下代理资源设置容量限制:
中的 brokerCapacity
属性中为 Kafka
-
磁盘
- 每个代理的磁盘存储(默认:100000Mi) -
cpuUtilization
- CPU 使用率作为百分比(默认:100) -
Inbound
Network
- 入站网络吞吐量以每秒字节单位为单位(默认值:10000KiB/s) -
出站网络
- 出站网络吞吐量以每秒字节单位为单位(默认值:10000KiB/s)
因为 AMQ Streams Kafka 代理是同构的,所以 Cruise Control 会为其监控的每个代理应用相同的容量限制。
使用 Bbyte 单元的 Cruise Control 代理功能配置示例
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... brokerCapacity: disk: 100Gi cpuUtilization: 100 inboundNetwork: 10000KiB/s outboundNetwork: 10000KiB/s # ...
其他资源
如需更多信息,请参阅 第 B.72 节 “BrokerCapacity
schema 参考”。
日志记录配置
精简控制具有自己的可配置日志记录器:
-
cruisecontrol.root.logger
整合控制使用 Apache log4j
日志记录器实施。
使用 logging
属性来配置日志记录器和日志记录器级别。
您可以通过直接(内线)指定日志记录器和级别来设置日志级别,或使用自定义(外部)ConfigMap。如果使用 ConfigMap,则将 logging.name
属性设置为包含外部日志配置的 ConfigMap 的名称。在 ConfigMap 中,日志配置使用 log4j.properties 进行
描述。
此处我们会看到 内联
和外部
记录示例。
内联日志记录
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka # ... spec: cruiseControl: # ... logging: type: inline loggers: cruisecontrol.root.logger: "INFO" # ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka # ... spec: cruiseControl: # ... logging: type: external name: customConfigMap # ...