2.4. Kafka MirrorMaker 集群配置
本章论述了如何在 AMQ Streams 集群中配置 Kafka MirrorMaker 部署,以便在 Kafka 集群间复制数据。
您可以使用带有 MirrorMaker 或 MirrorMaker 2.0 的 AMQ Streams。MirrorMaker 2.0 是最新版本,提供在 Kafka 集群间镜像数据更为有效的方法。
如果使用 MirrorMaker,请配置 KafkaMirrorMaker 资源。
在 Apache Kafka 3.0.0 中已弃用 Kafka MirrorMaker 1 (正如文档中的 imagesMaker),并将在 Apache Kafka 4.0.0 中删除。因此,在 AMQ Streams 中还已弃用了用于部署 Kafka MirrorMaker 1 的 KafkaMirrorMaker 自定义资源。当使用 Apache Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。作为替代方法,在 IdentityReplicationPolicy 中使用 KafkaMirrorMaker2 自定义资源。
以下步骤演示了如何配置资源:
KafkaMirrorMaker 资源的完整 schema 在 KafkaMirrorMaker 模式中描述。
2.4.1. 配置 Kafka MirrorMaker 复制链接链接已复制到粘贴板!
使用 KafkaMirrorMaker 资源的属性来配置 Kafka MirrorMaker 部署。
您可以使用 TLS 或 SASL 身份验证为制作者和使用者配置访问控制。此流程演示了在使用者和生产端使用 TLS 加密和解密的配置。
先决条件
有关运行的信息 ,请参阅 OpenShift 中的部署和升级 AMQ Streams 指南:
- 源和目标集群必须可用
流程
编辑
KafkaMirrorMaker资源的spec属性。您可以在以下示例配置中显示您可以配置的属性:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker metadata: name: my-mirror-maker spec: replicas: 31 consumer: bootstrapServers: my-source-cluster-kafka-bootstrap:90922 groupId: "my-group"3 numStreams: 24 offsetCommitInterval: 1200005 tls:6 trustedCertificates: - secretName: my-source-cluster-ca-cert certificate: ca.crt authentication:7 type: tls certificateAndKey: secretName: my-source-secret certificate: public.crt key: private.key config:8 max.poll.records: 100 receive.buffer.bytes: 32768 ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"9 ssl.enabled.protocols: "TLSv1.2" ssl.protocol: "TLSv1.2" ssl.endpoint.identification.algorithm: HTTPS10 producer: bootstrapServers: my-target-cluster-kafka-bootstrap:9092 abortOnSendFailure: false11 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 ssl.cipher.suites: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"12 ssl.enabled.protocols: "TLSv1.2" ssl.protocol: "TLSv1.2" ssl.endpoint.identification.algorithm: HTTPS13 include: "my-topic|other-topic"14 resources:15 requests: cpu: "1" memory: 2Gi limits: cpu: "2" memory: 2Gi logging:16 type: inline loggers: mirrormaker.root.logger: "INFO" readinessProbe:17 initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: initialDelaySeconds: 15 timeoutSeconds: 5 metricsConfig:18 type: jmxPrometheusExporter valueFrom: configMapKeyRef: name: my-config-map key: my-key jvmOptions:19 "-Xmx": "1g" "-Xms": "1g" image: my-org/my-image:latest20 template:21 pod: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: application operator: In values: - postgresql - mongodb topologyKey: "kubernetes.io/hostname" connectContainer:22 env: - name: JAEGER_SERVICE_NAME value: my-jaeger-service - name: JAEGER_AGENT_HOST value: jaeger-agent-name - name: JAEGER_AGENT_PORT value: "6831" tracing:23 type: jaeger- 1
- 2
- 面向消费者和生成器的 bootstrap 服务器。
- 3
- 4
- 5
- 6
- TLS 加密,使用密钥名称,其中 TLS 证书存储为消费者或制作者的 X.509 格式。如果证书存储在同一 secret 中,可以多次列出它。
- 7
- 使用 TLS 机制的用于消费者或生成者的验证(如此处所示),使用 OAuth bearer tokens, 或一个基于 SASL 的 SCRAM-SHA-256/SCRAM-SHA-512 或 PLAIN 机制。
- 8
- 9
- 使用 TLS 版本的特定 密码套件 运行外部监听程序的 SSL 属性。
- 10
- 通过设置为
HTTPS来启用主机名验证。空字符串禁用验证。 - 11
- 如果
abortOnSendFailure属性设为true,则 Kafka MirrorMaker 将退出,并且容器将因消息的发送失败而重启。 - 12
- 使用 TLS 版本的特定 密码套件 运行外部监听程序的 SSL 属性。
- 13
- 通过设置为
HTTPS来启用主机名验证。空字符串禁用验证。 - 14
- 15
- 16
- 通过 ConfigMap 直接添加(
内联)或间接(外部)的指定 日志记录器和日志级别。自定义 ConfigMap 必须放在log4j.properties或log4j2.properties键下。MirrorMaker 有一个名为mirrormaker.root.logger的单个日志记录器。您可以将日志级别设置为 INFO、ERROR、WARN、TRACE、DEBUG、FATAL 或 OFF。 - 17
- 状况检查,了解何时重启容器(持续)以及容器是否可以接受流量(就绪状态)。
- 18
- Prometheus metrics,通过引用本例中的 Prometheus JMX JMX exporter 配置的 ConfigMap 来启用。您可以启用指标,而无需进一步配置,使用对
metricsConfig.valueFrom.configMapKeyRef.key下包含空文件的 ConfigMap 的引用。 - 19
- JVM 配置选项,用于优化运行 Kafka MirrorMaker 的虚拟机(VM)性能。
- 20
- ADVANCED OPTION: 容器镜像配置,这只在特殊情况下建议。
- 21
- 模板自定义。这里调度了带有反关联性的 pod,因此不会将 pod 调度到具有相同主机名的节点。
- 22
- 还使用 Jaeger 为分布式追踪 设置环境变量。
- 23
警告将
abortOnSendFailure属性设置为false时,生产者会尝试在主题中发送下一消息。原始消息可能会丢失,因为没有尝试重新发送失败的信息。创建或更新资源:
oc apply -f <your-file>
2.4.2. Kafka MirrorMaker 集群资源列表 复制链接链接已复制到粘贴板!
以下资源由 OpenShift 集群中的 Cluster Operator 创建:
- <mirror-maker-name>-mirror-maker
- 负责创建 Kafka MirrorMaker Pod 的部署。
- <mirror-maker-name>-config
- ConfigMap,包含 Kafka MirrorMaker 的辅助配置,并被 Kafka 代理 Pod 挂载为卷。
- <mirror-maker-name>-mirror-maker
- 为 Kafka MirrorMaker worker 节点配置的 Pod Disruption Budget。