Deployment EC2上的Kafka/Zookeeper实例:如何使用公共IP消费事件

Deployment EC2上的Kafka/Zookeeper实例:如何使用公共IP消费事件,deployment,amazon-ec2,apache-kafka,apache-zookeeper,Deployment,Amazon Ec2,Apache Kafka,Apache Zookeeper,我有一个卡夫卡集群在EC2上运行。这些节点具有内部IP和公共IP。我已将kafka配置文件server.properties配置为: host.name=MY_PUBLIC_KAFKA_NODE_IP 我正在寻找一种配置,在这种配置中,开发人员机器可以直接使用kafka事件,而不知道kafka节点的内部/公共IP。只有zookeeper节点的公共IP向开发人员公开。使用此配置,当开发人员计算机运行时: ./bin/kafka-console-consumer.sh --zookeeper MY

我有一个卡夫卡集群在EC2上运行。这些节点具有内部IP和公共IP。我已将kafka配置文件
server.properties
配置为:

host.name=MY_PUBLIC_KAFKA_NODE_IP
我正在寻找一种配置,在这种配置中,开发人员机器可以直接使用kafka事件,而不知道kafka节点的内部/公共IP。只有zookeeper节点的公共IP向开发人员公开。使用此配置,当开发人员计算机运行时:

./bin/kafka-console-consumer.sh --zookeeper MY_PUBLIC_ZOOKEEPER_IP:2181 --topic test --from-beginning
我发现以下错误:

[2016-01-18 19:00:57,388] WARN Fetching topic metadata with correlation id 61 for topics [Set(test)] from broker [id:1,host:ip-172-31-1-91.us-west-2.compute.internal,port:9092] failed (kafka.client.ClientUtils$)
java.nio.channels.ClosedChannelException
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:100)
    at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73)
    at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:72)
    at kafka.producer.SyncProducer.send(SyncProducer.scala:113)
    at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:58)
    at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:93)
    at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)

该错误表明代理列表包含kafka节点的内部IP。有办法修复此配置吗?

您需要将
播发的.host.name
属性设置为可由客户端解析的地址/IP,在您的情况下,该地址/IP是AWS节点的公共地址/IP

您还必须通过在AWS安全组中添加客户端的IP地址来允许入站访问。

要执行此操作,请转到:
安全组
>选择相应的组>转到下部窗格中的
入站选项卡
,单击
编辑
添加规则
自定义TCP规则
TCP
9092
选择
我的IP
(如果从将用于访问Kafka的客户端访问AWS控制台,则手动添加IP)。

您需要将
adverted.host.name
属性设置为客户端可解析的地址/IP,即AWS节点的公共地址/IP

您还必须通过在AWS安全组中添加客户端的IP地址来允许入站访问。
要执行此操作,请转到:
安全组
>选择相应的组>转到下部窗格中的
入站选项卡
,单击
编辑
添加规则
自定义TCP规则
TCP
9092
选择
我的IP
(如果从用于访问Kafka的客户端访问AWS控制台,则手动添加IP)