我正在尝试从外部客户机(我的笔记本电脑)连接到我在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服务器并成功地验证了这一点 curl
使用ec2示例的内部ip地址初始化服务器。
如果我 ssh
在其中一个代理示例中,我可以跨集群成功地生成和使用消息。我对模板提供的开箱即用配置所做的唯一更新是更改 listeners=PLAINTEXT://ec2-AWS-PUB-LIC-IP.compute-1.amazonaws.com:9092
在 server.properties
然后重启Kafka服务器。
我可以提供更多的配置或调试信息,如果需要的话。相信这个问题是关于ip地址可发现性/可见性的,但我不完全确定是什么。
1条答案
按热度按时间2cmtqfgy1#
你需要设置
advertised.listeners
我也是。看到了吗https://rmoff.net/2018/08/02/kafka-listeners-explained/ 详情。