将 Kafka MirrorMaker 与适用于 Apache Kafka 的事件中心配合使用

本教程介绍如何使用 Kafka MirrorMaker 在事件中心镜像 Kafka 中转站。

事件中心的 Kafka MirrorMaker

备注

GitHub 上提供了此示例

备注

本文包含对术语“允许列表”的引用,Microsoft 不再使用该术语。 在从软件中删除该术语后,我们会将其从本文中删除。

本教程介绍如何执行下列操作:

  • 创建事件中心命名空间
  • 克隆示例项目
  • 设置 Kafka 群集
  • 配置 Kafka MirrorMaker
  • 运行 Kafka MirrorMaker

简介

新式云缩放应用的一个主要考虑因素是能够在不中断服务的情况下更新、改进和更改基础结构。 本教程介绍事件中心和 Kafka MirrorMaker 如何通过在事件中心服务中“镜像”Kafka 输入流将现有 Kafka 管道集成到 Azure 中。

通过 Azure 事件中心 Kafka 终结点,用户可以使用 Kafka 协议(即 Kafka 客户端)连接到 Azure 事件中心。 通过对 Kafka 应用程序进行少量更改,可以连接到 Azure 事件中心并利用 Azure 生态系统的好处。 事件中心当前支持 Kafka 1.0 及更高版本。

先决条件

若要完成本教程,请确保做好以下准备:

  • 通读用于 Apache Kafka 的事件中心一文。
  • Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个试用版订阅
  • Java 开发工具包 (JDK) 1.7+
    • 在 Ubuntu 上运行 apt-get install default-jdk,以便安装 JDK。
    • 请确保设置 JAVA_HOME 环境变量,使之指向在其中安装了 JDK 的文件夹。
  • 下载安装 Maven 二进制存档
    • 在 Ubuntu 上,可以通过运行 apt-get install maven 来安装 Maven。
  • Git
    • 在 Ubuntu 上,可以通过运行 sudo apt-get install git 来安装 Git。

创建事件中心命名空间

要从事件中心服务进行发送和接收,需要使用事件中心命名空间。 有关创建命名空间和事件中心的说明,请参阅创建事件中心。 请确保复制事件中心连接字符串,以供将来使用。

克隆示例项目

获得事件中心连接字符串后,即可克隆适用于 Kafka 的 Azure 事件中心存储库并导航到 mirror-maker 子文件夹:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/mirror-maker

设置 Kafka 群集

使用 Kafka 快速入门指南设置具有所需设置的群集(或使用现有 Kafka 群集)。

配置 Kafka MirrorMaker

Kafka MirrorMaker 支持流“镜像”。 鉴于源和目标 Kafka 群集,MirrorMaker 可以确保发送到源群集的任何消息会由源和目标群集接收。 此示例演示如何使用目标事件中心镜像源 Kafka 群集。 此方案可用于从现有 Kafka 管道将数据发送到事件中心,而不会中断数据流。

有关 Kafka MirrorMaker 的更多详细信息,请参阅 Kafka 镜像/MirrorMaker 指南

若要配置 Kafka MirrorMaker,请为其提供一个 Kafka 群集作为其使用者/源,并为其提供一个事件中心作为其生成者/目标。

使用者配置

更新使用者配置文件 source-kafka.config,它可告知 MirrorMaker 源 Kafka 群集的属性。

source-kafka.config
bootstrap.servers={SOURCE.KAFKA.IP.ADDRESS1}:{SOURCE.KAFKA.PORT1},{SOURCE.KAFKA.IP.ADDRESS2}:{SOURCE.KAFKA.PORT2},etc
group.id=example-mirrormaker-group
exclude.internal.topics=true
client.id=mirror_maker_consumer

生成者配置

现在更新生成者配置文件 mirror-eventhub.config,它可要求 MirrorMaker 将重复(或“已镜像”)数据发送到事件中心服务。 具体而言,更改 bootstrap.serverssasl.jaas.config 以指向事件中心 Kafka 终结点。 事件中心服务要求安全的 (SASL) 通信,这可通过在以下配置中设置最后三个属性实现:

mirror-eventhub.config
bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=mirror_maker_producer

#Required for Event Hubs
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

重要

{YOUR.EVENTHUBS.CONNECTION.STRING} 替换为事件中心命名空间的连接字符串。 有关获取连接字符串的说明,请参阅获取事件中心连接字符串。 下面是一个配置示例:sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

运行 Kafka MirrorMaker

使用新更新的配置文件从 Kafka 根目录中运行 Kafka MirrorMaker 脚本。 请务必将配置文件复制到 Kafka 根目录,或在下面的命令中更新其路径。

bin/kafka-mirror-maker.sh --consumer.config source-kafka.config --num.streams 1 --producer.config mirror-eventhub.config --whitelist=".*"

若要验证事件是否到达事件中心,请参阅 Azure 门户中的入口统计信息,或针对事件中心运行使用者。

运行 MirrorMaker 后,发送给源 Kafka 群集的任何事件都将由 Kafka 群集和已镜像的事件中心接收。 通过使用 MirrorMaker 和事件中心 Kafka 终结点,可以将现有的 Kafka 管道迁移到托管的 Azure 事件中心服务,而无需更改现有的群集或中断任何正在进行的数据流。

示例

请参阅 GitHub 上的以下示例:

后续步骤

若要详细了解适用于 Kafka 的事件中心,请参阅以下文章: