无法从本地计算机向部署在AWS EC2上的Confluent Kafka生成事件

时间:2018-09-20 17:39:10

标签: amazon-ec2 apache-kafka

我正在尝试从外部客户端(我的笔记本电脑)连接到我在ec2计算机上运行的Kafka群集中的代理。当我尝试从本地计算机连接时,出现以下错误:

$ ./kafka-console-producer --broker-list AWS.PRIV.ATE.IP:9092 --topic test
>hi
>[2018-09-20 13:28:53,952] ERROR Error when sending message to topic test with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0: 1519 ms has passed since batch creation plus linger time

存在这个主题是因为如果我(从本地计算机)运行

$ ./kafka-topics --list --zookeeper AWS.PRIV.ATE.IP:2181
__confluent.support.metrics
__consumer_offsets
_schemas
connect-configs
connect-offsets
connect-status
test

集群配置来自Confluent的AWS快速入门模板:https://github.com/aws-quickstart/quickstart-confluent-kafka/blob/master/templates/confluent-kafka.template,并且我正在运行开源版本。

这三个代理ec2实例对我的本地计算机可见,我通过停止Kafka代理,在端口9092上启动简单的HTTP服务器并使用服务器的内部IP地址成功curl对该服务器进行了验证, ec2实例。

如果我ssh进入一个代理实例之一,则可以成功地在整个集群中产生和使用消息。我对模板提供的即用型配置所做的唯一更新是在每台计算机上的listeners=PLAINTEXT://ec2-AWS-PUB-LIC-IP.compute-1.amazonaws.com:9092中更改server.properties,然后重新启动kafka服务器。

如有必要,我可以提供更多的配置或调试信息。相信这个问题与IP地址的可发现性/可见性有关,但我不确定是什么。

1 个答案:

答案 0 :(得分:0)

您还需要设置eof

有关详细信息,请参见https://rmoff.net/2018/08/02/kafka-listeners-explained/