ec2上的kafka/zookeeper示例:如何使用公共ip消费事件

y1aodyip  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(309)

我有一个Kafka集群在ec2上运行。节点具有内部IP和公共IP。我已经配置了kafka配置文件 server.properties 使用:

host.name=MY_PUBLIC_KAFKA_NODE_IP

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

./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。有没有办法修复这个配置?

xxls0lw8

xxls0lw81#

你需要设置 advertised.host.name 属性设置为客户端可解析的地址/ip,在您的示例中,该地址/ip是aws节点的公共地址/ip。
您还必须通过在aws安全组中添加客户端的ip地址来允许入站访问。
为此,请转到: Security groups >选择相应的组>转到 Inbound tab 在下方窗格中,单击 Edit > Add Rule > Custom TCP rule > TCP > 9092 >选择 My IP (如果从要用于访问kafka的客户端访问aws控制台,则手动添加ip)。

相关问题