8.5. 精简控制配置
Kafka.spec.cruiseControl 中的 config 属性包含作为键的配置选项,其值为以下 JSON 类型之一:
- 字符串
- 数字
- 布尔值
除了由 AMQ Streams 直接管理的选项外,您还可以指定并配置 Cruise Control 文档 的"配置"一节中列出的所有选项。特别是,您无法 修改与 此处 提及的其中一个键相等或开头的键的配置选项。
如果指定了 restricted 选项,则忽略它们,并在 Cluster Operator 日志文件中输出警告信息。所有支持的选项都传递给 Cruise Control。
Cruise Control 配置示例
apiVersion: kafka.strimzi.io/v1beta2
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
# ...
跨操作系统资源共享配置
通过跨操作资源共享(CORS),您可以指定访问 REST API 的允许方法和原始 URL。
默认情况下,Cruise Control REST API 禁用 CORS。启用后,只允许对 Kafka 集群状态进行只读访问的 GET 请求。这意味着外部应用以与 AMQ Streams 组件不同的来源运行,无法向 Cruise Control API 发出 POST 请求。但是,这些应用程序可能会发出 GET 请求 来访问 Kafka 集群的只读信息,如当前集群负载或最新的优化建议。
为 Cruise Control 启用 CORS
您可以在 Kafka.spec.cruiseControl.config 中启用并配置 CORS。
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
config:
webserver.http.cors.enabled: true
webserver.http.cors.origin: "*"
webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
# ...如需更多信息,请参阅 Cruise Control Wiki 中的 REST API。
容量配置
整合控制使用 容量限制 来确定资源分布的优化目标是否受到破坏。这种类型的四个目标:
-
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/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
disk: 100Gi
cpuUtilization: 100
inboundNetwork: 10000KiB/s
outboundNetwork: 10000KiB/s
# ...
其它资源
如需更多信息,请参阅 第 13.2.52 节 “BrokerCapacity schema 参考”。
日志记录配置
精简控制具有自己的可配置日志记录器:
-
rootLogger.level
整合控制使用 Apache log4j 2 日志记录器实施。
使用 logging 属性来配置日志记录器和日志记录器级别。
您可以通过直接(内线)指定日志记录器和级别来设置日志级别,或使用自定义(外部)ConfigMap。如果使用 ConfigMap,则将 logging.valueFrom.configMapKeyRef.name 属性设置为包含外部日志记录配置的 ConfigMap 的名称。在 ConfigMap 中,日志配置使用 log4j.properties 进行 描述。logging.valueFrom.configMapKeyRef.name 和 logging.valueFrom.configMapKeyRef.key 属性均是必需的。在运行 Cluster Operator 时,会使用自定义资源创建使用指定准确日志配置的 ConfigMap,然后在每次协调后重新创建。如果没有指定自定义 ConfigMap,则会使用默认日志设置。如果没有设置特定的日志记录器值,则会继承该日志记录器的上一级日志记录器设置。此处我们会看到 内联 和外部 记录示例。
内联日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: inline
loggers:
rootLogger.level: "INFO"
# ...
外部日志记录
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: cruise-control-log4j.properties
# ...