Apache kafka 在多个节点上运行kafka connect分布式模式

Apache kafka 在多个节点上运行kafka connect分布式模式,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,我正在测试kafka连接器的弹性,我想在它运行时杀死一个worker,从而杀死连接器实例。最简单的方法可能是强制分布式模式在多个节点上运行,然后只杀死该节点上的工作进程(对吗?)。如何使Kafka connect在其启动的节点之外的节点上生成工作线程?这是worker配置中定义的吗?是的,处理故障和自动重新启动工作负载正是Kafka Connect所能做的。您可以将其作为集群运行,通常每个节点一个worker。然后,每个工人运行一个或多个任务,这由Connect管理。如果某个工作进程死亡,则它正

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

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


要将工作者定义为集群内的工作者,请为他们分配相同的
group.id
。有关更多信息,请参阅。

因此,最后我所做的是:

  • 将Kafka Connect分布式模式所需的所有JAR复制到我希望在其上运行的两个节点(在HDP 2.5.3中,仅在一个节点上获得这些JAR)
  • 在这两个节点上,我运行了启动脚本,属性文件指向我的jar
  • 使用REST接口,我发布了带有任务的连接器,我可以看到一个工人拥有连接器实例,另一个工人拥有它的任务
  • 我杀死了任务工作者节点(使用
    ps-ef | grep connect
    ),并看到它在其余节点上重新启动
  • 我重置了测试并尝试关闭连接器实例节点,令我惊讶的是,连接器实例在另一个节点上重新启动

在我的弹性测试总结中,卡夫卡连接似乎像打鼹鼠;无论任务或连接器位于何处,您都可以将它们删除,它们将在其他地方重新启动。

谢谢您的回答。我知道在分布式模式下连接的预期行为,我问两件事;如何确保工人被分配到不同的节点,以及如何消除工人。如何部署工人取决于您,这是Connect安装的一部分(只需确保设置
组.id
)。它是由Kafka Connect自动分发的任务,并实际执行工作(从源拉/推到目标)。因此,根据所讨论的故障场景,要么一个工人(具有零个、一个或多个任务)死亡,要么一个任务死亡。通过终止JVM进程来模拟工人死亡。若要终止单个任务,我不确定这是否可行。很抱歉打断了老问题,但这不是负载平衡。共享工作负载(任务)应该是负载平衡-这需要更多的故障切换。我尝试实现负载平衡,但没有成功。有可能吗?有任何参考资料吗?我建议你开始一个新的问题(参考这个问题),清楚地说明你想做什么,因为你的评论并不清楚你到底想做什么。谢谢。@RobinMoffatt-给你