7.5. 使用 Kafka 配置和部署 Cruise 控制
通过 Kafka 资源配置,Cluster Operator 可以在部署 Kafka 集群时部署 Cruise Control。您可以使用 Kafka 资源的 cruiseControl 属性来配置部署。为每个 Kafka 集群部署一个 Cruise Control 实例。
在 Cruise Control config 中使用 goals 配置来指定优化目标,以生成优化建议。您可以使用 brokerCapacity 更改与资源分布相关的目标的默认容量限制。如果代理在带有异构网络资源的节点上运行,您可以使用 overrides 为各个代理设置网络容量限制。
如果将空对象({})用于 cruiseControl 配置,则所有属性都使用其默认值。
先决条件
- OpenShift 集群
- 正在运行的 Cluster Operator
流程
编辑
Kafka资源的cruiseControl属性。您可以在以下示例配置中显示您可以配置的属性:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: brokerCapacity:1 inboundNetwork: 10000KB/s outboundNetwork: 10000KB/s # ... config:2 default.goals: >3 com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal, com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal, com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal # ... hard.goals: > com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal, com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal # ... cpu.balance.threshold: 1.1 metadata.max.age.ms: 300000 send.buffer.bytes: 131072 webserver.http.cors.enabled: true4 webserver.http.cors.origin: "*" webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type" # ... resources:5 requests: cpu: 1 memory: 512Mi limits: cpu: 2 memory: 2Gi logging:6 type: inline loggers: rootLogger.level: "INFO" template:7 pod: metadata: labels: label1: value1 securityContext: runAsUser: 1000001 fsGroup: 0 terminationGracePeriodSeconds: 120 readinessProbe:8 initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: initialDelaySeconds: 15 timeoutSeconds: 5 metricsConfig:9 type: jmxPrometheusExporter valueFrom: configMapKeyRef: name: cruise-control-metrics key: metrics-config.yml # ...- 1
- 2
- 3
- 4
- 为对 Cruise Control API 的只读访问 启用并配置 CORS。
- 5
- 6
- 通过 ConfigMap 直接添加(
内联)或间接(外部 )的控制日志记录器和日志级别。自定义 ConfigMap 必须放在log4j.properties键下。Cruise Control 有一个名为rootLogger.level的单个日志记录器。您可以将日志级别设置为 INFO、ERROR、WARN、TRACE、DEBUG、FATAL 或 OFF。 - 7
- 模板自定义。此处为 pod 调度了额外的安全属性。
- 8
- 状况检查,了解何时重启容器(持续)以及容器是否可以接受流量(就绪状态)。
- 9
- 启用 Prometheus 指标。在本例中,为 Prometheus JMX Exporter 配置指标(默认指标导出器)。
创建或更新资源:
oc apply -f <kafka_configuration_file>检查部署的状态:
oc get deployments -n <my_cluster_operator_namespace>输出显示了部署名称和就绪状态
NAME READY UP-TO-DATE AVAILABLE my-cluster-cruise-control 1/1 1 1my-cluster是 Kafka 集群的名称。READY显示 ready/expected 的副本数量。当AVAILABLE输出显示为1时,部署成功。
自动创建的主题
下表显示了在部署 Cruise Control 时自动创建的三个主题。这些主题需要 Cruise Control 才能正常工作,且不得删除或更改。您可以使用指定的配置选项更改主题名称。
| 自动创建的主题配置 | 默认主题名称 | 创建者 | 功能 |
|---|---|---|---|
|
|
| AMQ Streams Metrics Reporter | 将 Metrics Reporter 中的原始指标存储在每个 Kafka 代理中。 |
|
|
| Sything Control | 存储每个分区的派生指标。它们由 指标示例聚合器 创建。 |
|
|
| Sything Control | 存储用于创建 Cluster Workload Model 的指标示例。 |
要防止删除 Cruise Control 所需的记录,在自动创建的主题中禁用了日志压缩。
如果在启用了 Cruise Control 的 Kafka 集群中更改自动创建主题的名称,旧的主题不会被删除,应手动删除旧的主题。
接下来要执行的操作
配置和部署 Cruise Control 后,您可以生成优化提议。