首页 文章

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

提问于
浏览
1

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

2 回答

  • 0

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

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

  • 1

    所以我最终做的是:

    • 将Kafka Connect分布式模式所需的所有 jar 复制到我想要运行的两个节点上(在HDP 2.5.3中,您只能在一个节点上获得这些 jar ) .

    • 在两个节点上,我运行了启动脚本,其属性文件指向我的jar .

    • 使用REST接口我发布了一个带有任务的连接器,我可以看到一个 Worker 有连接器实例而另一个有任务 .

    • 我杀死了任务工作者节点(使用 ps -ef | grep connect ),并看到它已在剩余节点上重新生成 .

    • 我重置测试并尝试终止连接器实例节点,令我惊讶的是,连接器实例在另一个节点上重新启动 .

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

相关问题