同一集群安装两个Kafka

  安装, 安装部署
内容纲要

概要描述


TDH 中的 Kafka 强依赖于 Zookeeper,Zookeeper 为 Kafka 提供集群的管理,不仅保存着集群的 Broker、Topic、Partition 等元数据,还负责 Broker 故障发现、Leader 选举、负载均衡等。

在一些场景中,我们可能会需要在同一套集群中安装两套kafka集群来满足数据传输需求。正常情况下,一个集群会部署至少一个 Zookeeper 来管理协调各个组件运行。如果我们要在同一集群安装两套 Kafka,可以选择依赖同一个 Zookeeper,也可以分开依赖不同的 Zookeeper,下文就两种方式分别做以说明。

详细说明

  1. 两个 kafka 分别使用不同的 zookeeper(推荐)
  2. 两个 kafka 使用同一个 zookeeper

两个 kafka 分别使用不同的 zookeeper(推荐)

这种部署方式相对简单点,也是推荐的方式,即两个 kafka 可以分别依赖对应的 Zookeeper ,这样可以避免Zookeeper 中元数据冲突的问题,也可以省去修改 Zookeeper 数据存储路径的步骤,也不会存在 Manager 页面上组件状态显示异常的问题。

需要注意的是:
如果集群节点较少,新装的 Zookeeper 和 Kafka 和之前的 Zookeeper/Kafka 在相同的节点上,需要注意端口冲突问题,首先,manager页面上需要修改服务的端口配置,除此之外,每个新装 Kafka 节点的 server.properties 中的 zookeeper.connect,也需要手动修改添加端口,如:
新装 Zookeeper2 端口为2182,需要将新装 Kafka2 的server.properties 中的 zookeeper.connect修改为:

zookeeper.connect=xl-tdh622a:2182,xl-tdh622b:2182,xl-tdh622c:2182

否则会导致新装的 Kafka 默认注册元数据到原来的Zookeeper1 中,造成元数据冲突,如 brokerid 重复等情况,导致服务无法正常启动等问题。

kafka 的 brokerid 是获取的 nodeId,如果 kafka 装在相同的节点上,肯定会出现 broekrid 相同的情况,需要避免。

两个 kafka 使用同一个 zookeeper

Kafka 在 Zookeeper 上注册的元数据信息不会以服务名分开,默认都在 Zookeeper 上的根目录下面,Kafka 在 Zookeeper 上的存储结构如图:

file

如果在只有一个 Zookeeper 的情况下,安装两个 Kafka ,那么就需要将两个 Kafka 在 zk 上的数据分开存储,例如变成 kafka1\kafka2 目录下。

Kafka 组件本身可以决定在 zk 上写的路径。在 server.properties 中也有备注说明的:

# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.

file

我们需要手动修改 server.properties (所有kafka节点的 /etc/kafka1/conf 目录下)里面的 zookeeper.connect 参数,在后面追加目录。例如:
将 Kafka1 的参数改成 localhost:2181/kafka1;
将 Kafka2 的参数改成 localhost:2181/kafka2。

如图所示:
file

需要注意的是:
这个参数在 manager 上并没有暴露,只能手动在每个节点的 server.properties 中修改,所以一旦 Kafka 配置服务后,修改的参数就会被覆盖。

PS:可以通过直接修改模板解决,模板在 manager 节点下的 /var/lib/transwarp-manager/master/content/meta/services/KAFKA/版本号/templates/server.properties.ftl****

此操作可能会引发的问题是:

manager 界面可能会显示角色为黄色,不健康。原因是 manager 的健康检查机制是用 zkCli.sh 脚本去访问 /brokers/ids ,修改后路径发生变化,健康检查访问不到,所以组件状态显示会有问题。不过不影响 Kafka 的功能使用。

可以通过修改 metainfo.yaml 模板删除这部分健康检查解决,注意此操作为非标操作,不建议,参考如下:

在 manager 节点下,修改 /var/lib/transwarp-manager/master/content/meta/services/KAFKA/版本号/metainfo.yaml 模板文件,删除其中的 – category: VITAL_SIGN_CHECK ,如图框选部分:

file

修改完后,需要保存并重启 manager 服务,然后页面上配置服务并重启 Kafka 组件生效。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。