8.8. 配置 Kafka MirrorMaker (已弃用)
更新 KafkaMirrorMaker 自定义资源的 spec 属性,以配置 Kafka MirrorMaker 部署。
您可以使用 TLS 或 SASL 身份验证为生产者和消费者配置访问控制。此流程演示了如何在消费者和生成器端使用 TLS 加密和 mTLS 身份验证的配置。
要深入了解 Kafka MirrorMaker 集群配置选项,请参阅 AMQ Streams 自定义资源 API 参考。
Kafka MirrorMaker 1 (称为文档中的 MirrorMaker )已在 Apache Kafka 3.0.0 中弃用,并将在 Apache Kafka 4.0.0 中删除。因此,在 AMQ Streams 中还已弃用了用于部署 Kafka MirrorMaker 1 的 KafkaMirrorMaker 自定义资源。采用 Apache Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。作为替代方法,在 IdentityReplicationPolicy 中使用 KafkaMirrorMaker2 自定义资源。
KafkaMirrorMaker 自定义资源配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
metadata:
name: my-mirror-maker
spec:
replicas: 3
consumer:
bootstrapServers: my-source-cluster-kafka-bootstrap:9092
groupId: "my-group"
numStreams: 2
offsetCommitInterval: 120000
tls:
trustedCertificates:
- secretName: my-source-cluster-ca-cert
certificate: ca.crt
authentication:
type: tls
certificateAndKey:
secretName: my-source-secret
certificate: public.crt
key: private.key
config:
max.poll.records: 100
receive.buffer.bytes: 32768
producer:
bootstrapServers: my-target-cluster-kafka-bootstrap:9092
abortOnSendFailure: false
tls:
trustedCertificates:
- secretName: my-target-cluster-ca-cert
certificate: ca.crt
authentication:
type: tls
certificateAndKey:
secretName: my-target-secret
certificate: public.crt
key: private.key
config:
compression.type: gzip
batch.size: 8192
include: "my-topic|other-topic"
resources:
requests:
cpu: "1"
memory: 2Gi
limits:
cpu: "2"
memory: 2Gi
logging:
type: inline
loggers:
mirrormaker.root.logger: INFO
readinessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
livenessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: my-config-map
key: my-key
jvmOptions:
"-Xmx": "1g"
"-Xms": "1g"
image: my-org/my-image:latest
template:
pod:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: application
operator: In
values:
- postgresql
- mongodb
topologyKey: "kubernetes.io/hostname"
mirrorMakerContainer:
env:
- name: OTEL_SERVICE_NAME
value: my-otel-service
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://otlp-host:4317"
tracing:
type: opentelemetry
- 1
- 副本节点的数量。
- 2
- 用于消费者和制作者的 Bootstrap 服务器。
- 3
- 消费者的组 ID。
- 4
- 消费者流的数量。
- 5
- 偏移 auto-commit 间隔(以毫秒为单位)。
- 6
- TLS 加密,使用密钥名称,其中 TLS 证书存储为 X.509 格式,用于消费者或生成者。如果证书存储在同一 secret 中,则可以多次列出。
- 7
- 为消费者或生成者(指定为 mTLS、基于令牌的 OAuth、基于 SASL 的 SCRAM-SHA-256/SCRAM-SHA-512 或 PLAIN)进行身份验证。
- 8
- consumer 和 producer 的 Kafka 配置选项。
- 9
- 如果将
abortOnSendFailure属性设置为true,则 Kafka MirrorMaker 将退出,容器将按照消息发送失败重启。 - 10
- 从源镜像到目标 Kafka 集群包含的主题列表。
- 11
- 为保留支持的资源(当前
cpu和memory)的请求,以及指定可消耗的最大资源的限制。 - 12
- 指定日志记录器和日志级别直接(
内联)或通过 ConfigMap 间接添加(外部)。自定义 Log4j 配置必须放在 ConfigMap 中的log4j.properties或log4j2.properties键下。MirrorMaker 只有一个日志记录器,名为mirrormaker.root.logger。您可以将日志级别设置为 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 或 OFF。 - 13
- 检查检查以了解何时重启容器(存活度)以及何时容器可以接受流量(就绪度)。
- 14
- Prometheus 指标,通过引用包含在此示例中 Prometheus JMX 导出器配置的 ConfigMap 启用。您可以使用对
metricsConfig.valueFrom.configMapKeyRef.key下包含空文件的 ConfigMap 的引用来启用指标。 - 15
- JVM 配置选项,用于优化运行 Kafka MirrorMaker 的虚拟机(VM)的性能。
- 16
- ProductShortName OPTION: 容器镜像配置,仅在特殊情况下推荐使用。
- 17
- 模板自定义。此处的 pod 使用反关联性调度,因此 pod 不会调度到具有相同主机名的节点。
- 18
- 为分布式追踪设置环境变量。
- 19
- 使用 OpenTelemetry 启用分布式追踪。警告
将
abortOnSendFailure属性设置为false时,生产者会尝试在主题中发送下一个消息。原始消息可能会丢失,因为没有尝试重新发送失败的消息。