Kafka/Zookeeper EC2 上的实例:如何使用 public IP 消费事件
Kafka/Zookeeper instance on EC2: How to consume events using public IPs
我在 EC2 上有一个 Kafka 集群 运行。节点具有内部 IP 和 public IP。我已经配置了 kafka 配置文件 server.properties
:
host.name=MY_PUBLIC_KAFKA_NODE_IP
我正在寻找一种配置,其中开发机器可以直接使用与 internal/public kafka 节点的 IP 无关的 kafka 事件。只有 zookeeper 节点的 public 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(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。有没有办法修复此配置?
您需要将 advertised.host.name
属性 设置为可由客户端解析的 address/IP,在您的情况下是 AWS 节点的 public address/IP.
您还必须在您的 AWS 安全组中添加您的客户端 IP 地址以允许入站访问。
为此,请转到:Security groups
> select 相应的组 > 转到下方窗格中的 Inbound tab
> 单击 Edit
> Add Rule
> Custom TCP rule
> TCP
> 9092
> select My IP
(如果从将要用于访问 Kafka 的客户端访问 AWS 控制台,否则手动添加 IP)。
我在 EC2 上有一个 Kafka 集群 运行。节点具有内部 IP 和 public IP。我已经配置了 kafka 配置文件 server.properties
:
host.name=MY_PUBLIC_KAFKA_NODE_IP
我正在寻找一种配置,其中开发机器可以直接使用与 internal/public kafka 节点的 IP 无关的 kafka 事件。只有 zookeeper 节点的 public 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(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。有没有办法修复此配置?
您需要将 advertised.host.name
属性 设置为可由客户端解析的 address/IP,在您的情况下是 AWS 节点的 public address/IP.
您还必须在您的 AWS 安全组中添加您的客户端 IP 地址以允许入站访问。
为此,请转到:Security groups
> select 相应的组 > 转到下方窗格中的 Inbound tab
> 单击 Edit
> Add Rule
> Custom TCP rule
> TCP
> 9092
> select My IP
(如果从将要用于访问 Kafka 的客户端访问 AWS 控制台,否则手动添加 IP)。