【发布时间】:2018-04-21 07:48:07
【问题描述】:
我正在测试一个 kafka 连接器的弹性,我想在它运行时杀死一个工人,从而杀死连接器实例。最简单的方法可能是强制分布式模式在多个节点上运行,然后杀死该节点上的工作进程(对吗?)。如何让 Kafka 不仅在它启动的节点上连接 spawn 工作人员?这是在工作人员配置中定义的吗?
【问题讨论】:
标签: apache-kafka apache-kafka-connect
我正在测试一个 kafka 连接器的弹性,我想在它运行时杀死一个工人,从而杀死连接器实例。最简单的方法可能是强制分布式模式在多个节点上运行,然后杀死该节点上的工作进程(对吗?)。如何让 Kafka 不仅在它启动的节点上连接 spawn 工作人员?这是在工作人员配置中定义的吗?
【问题讨论】:
标签: apache-kafka apache-kafka-connect
所以最后我做的是:
ps -ef | grep connect),并看到它已在剩余节点上重生。 总结我的弹性测试,Kafka Connect 似乎就像打地鼠一样;你可以在任何地方杀死任务或连接器,它们只会在其他地方重生。
【讨论】:
是的,处理故障和自动重启工作负载正是 Kafka Connect 可以做的。您将它作为一个集群运行,通常每个节点一个工作人员。然后每个工作人员运行一个或多个任务,这由 Connect 管理。如果一个工作人员死亡,它正在运行的所有任务都会以负载平衡的方式在其他可用工作人员上重新启动。查看architecture reference 了解更多信息。
要将工作人员定义为集群内,请为它们分配相同的group.id。请参阅config docs 了解更多信息。
【讨论】:
group.id)。 task 由 Kafka Connect 自动分发,并实际执行工作(从源拉取/推送到目标)。因此,根据所讨论的故障场景,一个工人(零个、一个或多个任务)死亡,或者一个任务。通过杀死 JVM 进程来模拟一个工人死亡。要杀死单个任务,我不确定这是否可能。