在许多节点上运行kafka connect distributed模式

时间:2017-11-08 14:57:08

标签: apache-kafka apache-kafka-connect

我对kafka连接器进行了弹性测试,并且我希望在工作人员运行时杀死它,从而终止连接器实例。最简单的方法可能是强制分布式模式在多个节点上运行,然后只杀死该节点上的工作进程(对吗?)。如何让Kafka连接spawn worker不仅仅是它所启动的节点?这是在worker config中定义的吗?

2 个答案:

答案 0 :(得分:1)

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

要将工作程序定义为在群集中,请为它们分配相同的group.id。有关详细信息,请参阅config docs

答案 1 :(得分:0)

所以我最终做的是:

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

总结一下我的弹性测试,Kafka Connect似乎就像玩傻瓜一样;你可以在任何地方杀死任务或连接器,它们只会在其他地方重生。