将数据复制到辅助群集
对于灾难恢复、高可用性以及本地和云混合等方案,Kafka 通常部署在多个环境中。 这些方案需要使用 Apache Kafka 的镜像功能将数据从一个 Kafka 实例复制到另一个。 镜像可以作为连续的进程运行,或者间接用作将数据从一个群集复制到另一个群集的方法。
不应将镜像视为实现容错的方法。 主题中项的偏移在主要群集与辅助群集之间有所不同,因此客户端不能换用这两种群集。
镜像如何工作?
镜像通过使用 MirrorMaker 工具(Apache Kafka 的一部分)来使用主要群集上主题中的记录,然后在辅助群集上创建本地副本。 MirrorMaker 使用一个或多个使用者从主要群集读取记录,使用制作者将记录写入本地辅助群集。
最有用的灾难恢复镜像设置利用不同 Azure 区域中的 Kafka 群集。 为实现此目的,群集所在的虚拟网络将对等互连到一起。
下图演示了镜像过程以及群集之间的通信流动方式:
主要和辅助群集在节点与分区数目方面可以不同,主题中的偏移也可以不同。 镜像维护用于分区的密钥值,因此会按密钥来保留记录顺序。
跨网络边界执行镜像操作
如果需要在不同网络中的 Kafka 群集之间执行镜像操作,还需要考虑以下注意事项:
- 网关:网络必须能够在 TCP/IP 级别通信。
- 服务器寻址:可以选择使用群集节点的 IP 地址或完全限定域名来寻址这些节点。
- IP 地址:如果将 Kafka 群集配置为使用 IP 地址播发,则可以使用代理节点和 Zookeeper 节点的 IP 地址继续进行镜像设置。
- 域名:如果未在 Kafka 群集上配置 IP 地址播发,则群集必须能够使用完全限定的域名 (FQDN) 相互连接。 这需要在每个网络中设置一台域名系统 (DNS) 服务器,并将其配置为向其他网络转发请求。 创建 Azure 虚拟网络时,必须指定自定义 DNS 服务器和服务器的 IP 地址,而不是使用网络提供的自动 DNS。 创建虚拟网络后,必须创建一个使用该 IP 地址的 Azure 虚拟机,并在其上安装和配置 DNS 软件。
警告
在将 HDInsight 安装到虚拟网络之前,需先创建和配置自定义 DNS 服务器。 HDInsight 不需要再进行其他配置,便可使用为虚拟网络配置的 DNS 服务器。