使用ECS和外部Zookeeper的AWS上的NiFi群集

时间:2019-02-21 15:14:27

标签: amazon-web-services docker apache-zookeeper apache-nifi amazon-ecs

我正在尝试使用带有外部Zookeeper的ECS在AWS上设置NiFi群集。

已使用3个EC2实例为Zookeeper创建了ECS集群,并正在运行zookeeper集成。当我在SolrCloud和本地NiFi上进行测试时,此外部Zookeeper运行正常。基于https://www.nifi.rocks/apache-nifi-docker-compose-cluster
建立了本地NiFi集群 现在,我已确保NiFi集群与在AWS上运行的外部Zookeeper正常运行,我为NiFi创建了另一个带有2个EC2实例的ECS集群。我确实确保为NiFi群集正确设置了所有变量。 https://github.com/apache/nifi/tree/master/nifi-docker/dockerhub

中给出的所有环境变量列表中的所有检查

尽管NiFi在两个EC2实例上均已启动,并且它们使用我的外部Zookeeper,但2个NiFi作为两个独立的群集运行,每个群集一个节点。理想情况下,我希望它们在一个群集中作为2个节点运行。

我确实比较了本地NiFi集群和AWS集群的nifi.properties,它们看起来都不错。

我在这里错过了一些明显的步骤吗?

例外是

WARN [main] o.a.nifi.controller.StandardFlowService Failed to connect to cluster due to: org.apache.nifi.cluster.protocol.ProtocolException: Failed to create socket to due to: java.net.UnknownHostException

Attempted to determine the node's information but failed to retrieve its information due to org.apache.nifi.cluster.protocol.ProtocolException: Failed to create socket due to: java.net.UnknownHostException

1 个答案:

答案 0 :(得分:0)

WARN [main] o.a.nifi.controller.StandardFlowService Failed to connect to cluster due to: org.apache.nifi.cluster.protocol.ProtocolException: Failed to create socket to due to: java.net.UnknownHostException

Attempted to determine the node's information but failed to retrieve its information due to org.apache.nifi.cluster.protocol.ProtocolException: Failed to create socket due to: java.net.UnknownHostException

因此,我在ECS“任务定义”中为“网络模式”使用了“默认”。默认的网络模式是“网桥”。因此,zookeeper正在将docker容器名称注册为主机名称,该主机名称未得到正确解析,因此出现“ java.net.UnknownHostException”异常。基本上,它是在寻找名称为容器名称的主机,并最终查找UnknownhostException。

解决方法是将网络模式用作“主机”,它将EC2实例的实际主机名作为主机名而不是容器名。这解决了我的问题。