在许多节点上运行 kafka 连接分布式模式



我正在测试 kafka 连接器的弹性,我想在工作线程运行时杀死它,从而杀死连接器实例。最简单的方法可能是强制分布式模式在多个节点上运行,然后终止该节点上的工作进程(对吗?如何让 Kafka 连接生成工作者,而不仅仅是在它启动的节点上?这是在工作线程配置中定义的东西吗?

是的,处理故障和自动重启工作负载正是 Kafka Connect 可以做的。您可以将其作为群集运行,通常每个节点一个工作线程。然后,每个工作线程运行一个或多个任务,这由 Connect 管理。如果工作线程死亡,则它正在运行的所有任务将以负载平衡的方式在其他可用工作线程上重新启动。有关详细信息,请查看体系结构参考。

要将工作人员定义为在群集内,请为其分配相同的group.id。有关详细信息,请参阅配置文档。

所以最后我做的是:

  • 将 Kafka Connect 分布式模式所需的所有 jar 复制到我想运行它的两个节点(在 HDP 2.5.3 中,您只能在一个节点上获取这些 jar)。
  • 在这两个节点上,我运行了启动脚本,属性文件指向我的 jar。
  • 使用 REST 接口,我发布了带有任务的连接器,我可以看到一个工作线程具有连接器实例,另一个工作线程具有其任务。
  • 我杀死了任务工作节点(使用 ps -ef | grep connect ),并看到它在剩余节点上重生。
  • 重置了测试并尝试终止连接器实例节点,令我惊讶的是,连接器实例在另一个节点上重新启动。

总结一下我的弹性测试,Kafka Connect 似乎就像在玩打鼹鼠;无论任务或连接器在哪里,你都可以杀死它们,它们只会在其他地方重生。

最新更新