我在本地“启动”Docker容器(独立于Kafka节点容器)以分布模式启动Kafka连接器。连接器按预期工作,但是当我杀死启动容器时,连接器停止工作。我预计它会继续工作,因为我相信它是在另一个容器中的Kafka节点上的一名工作人员上进行注册和运行的。我的设置更详细如下:为什么当我创建节点时,Kafka分布式连接器会死亡?
目前我通过Docker容器在本地运行所有内容。我有:
- 动物管理员节点(3.4.9)
- 卡夫卡节点(Apache的,0.10.1.0)
- A '推出' 节点。
启动节点下载相应的Kafka版本并解压缩它的内容。然后它建立连接器源,设置类路径以包括必要的JAR,然后执行该连接器为这样:
connect-distributed.sh config/connect-distributed.properties
分布式属性文件设置分组ID,各种主题名称,模式和转换器以及还有引导程序服务器(指向上面的Kafka节点(2))。
该命令似乎正常执行,并且restful连接器http服务已成功启动。然后,我可以将POST请求发送到http://example:8083/connectors,为连接器任务提供配置。该命令完成后没有错误,并且连接器已成功启动。我可以从Kafka节点(2)中的主题中消费,并且看到指示连接器正在工作并通过发送数据的输出。
当我杀死启动节点(3)时,我预计连接器会继续运行,因为我已将它注册到Kafka集群,尽管它是一个集群。连接器不会继续运行,似乎与启动节点一起死亡。连接器是否应该由群集中的工作人员管理?我是否需要更改连接器的启动方式,或者我误解了某些内容?
感谢您的回答。所以这意味着我的Kafka节点配置的一部分应该启动连接器,如果我想要一个工作进程在我的Kafka集群中的每个节点上运行至少一个连接器任务?第二个问题:如果连接器出于某种原因失败,我需要监视连接器状态主题,该主题将在必要的节点上自动重启它。 – LaserJesus
工作人员自动分配任务,只要您至少启动一个连接器并拥有足够的任务,所有工作人员都将主动处理数据。对于监控,是的,您可以监控状态主题并采取适当的措施重新启动(* if *有意义;这可能是其他系统的问题,只有通过重新启动任务才能解决)。 –
再次感谢您的帮助。因此,如果我的Kafka集群中有三个节点,我应该在每个节点上启动连接器,让工作人员在每个节点上为该连接器运行任务,以确保如果单个节点出现故障,将会有连接器在工作站上运行其他节点?即在一个节点上启动连接器不会自动导致连接器及其各自的工作人员在其他节点上启动? – LaserJesus