我配置了一个带有3个代理的kafka集群,每个代理使用3个zookeers。下面的图展示了我的集群的图形表示。
在同一网络中使用主机的生产者和消费者测试 192.168.0.10
通过 kafka-console-producer
以及 kafka-console-consumer
命令。
基于这种背景,当我试图通过 kafka-console-producer.sh --broker-list DYNAMIC_DNS_ADDR:30192,DYNAMIC_DNS_ADDR:30292,DYNAMIC_DNS_ADDR:30392 --topic twitter_tweets
通过互联网,我发现以下错误:
[2018-12-10 09:59:20772]向主题推特发送消息时出错,按键为空,值:16字节,有错误:(org.apache.kafka.clients.producer.internals.errorloggingcallback)org.apache.kafka.common.errors.timeoutexception:twitter的1条记录过期\u tweets-1:自批创建加上延迟时间[2018-12-10 09:59:22,273]无法建立到节点1的warn[producer clientid=console producer]连接。代理可能不可用(org.apache.kafka.clients.networkclient)
使用以下属性配置代理侦听器:
listeners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9443
advertised.listeners=PLAINTEXT://192.168.0.241:9092,SSL://192.168.0.241:9443
显然,每个代理的ip地址都发生了变化 advertised.listeners
财产。我正在使用 CentOS 6.10
以及 Kafka 2.0.1
对于那个设置。telnet测试成功了。另一个转发到kafka rest代理端口的是通过internet工作并列出所有主题。
1条答案
按热度按时间y4ekin9u1#
看到了吗https://rmoff.net/2018/08/02/kafka-listeners-explained/
您需要两个侦听器一个响应并公布内部地址,一个用于外部地址。
关键是您的客户机连接到的侦听器将返回该侦听器的主机地址和端口。
目前,你正在欺骗你的外部一个到你的内部一个,你的外部流量因此击中了内部侦听器。
您需要这样的东西(改变
aws_internal_listener
根据经纪人的要求):然后你的港口货运代理
DYNAMIC_DNS_ADDR
应将连接重定向到aws节点上的29092。关键是,外部连接不应该在主机上与内部侦听器匹配的侦听器端口(播发内部侦听器)结束192.168.0
地址)使用
kafkacat -L -b DYNAMIC_DNS_ADDR:29092
调试和验证配置,如本文所述。