Apache Kafka允许外部连接出现问题

问题描述

我现在在Kafka上遇到了困难,但是我感觉自己已经接近了。

我在FreeNAS上有两个本地运行的VM。两者都运行Ubuntu 18.04 LTS。

VM Graylog:192.168.1.25。运行Graylog服务器。可以很好地从其自身检索rsyslogs和apache。

VM Kafka:192.168.1.16。运行卡夫卡。

我的目标是通过Graylog Kafka UDP输入从VM Kafka获得VM Graylog拉日志。次要目标是复制此文件,除了Kafka实例将位于我的VPS服务器上,以从网站提供apache日志。当然,我想先在开发环境中进行测试。

我能够让我的VM Kafka服务器通过以下代码行成功侦听:

/opt/kafka_2.13-2.6.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic rsyslog_kafka --from-beginning

这是我的60-kafka.conf文件

module(load="omkafka")

template(name="json"
         type="list"
         option.json="on") {
           constant(value="{")
             constant(value="\"@timestamp\":\"")     property(name="timereported" dateFormat="rfc33$
             constant(value="\",\"@version\":\"1")
             constant(value="\",\"message\":\"")     property(name="msg")
             constant(value="\",\"host\":\"")        property(name="hostname")
             constant(value="\",\"severity\":\"")    property(name="syslogseverity-text")
             constant(value="\",\"facility\":\"")    property(name="syslogfacility-text")
             constant(value="\",\"programname\":\"") property(name="programname")
             constant(value="\",\"procid\":\"")      property(name="procid")
           constant(value="\"}\n")
         }

action(
  broker=["192.168.1.16:9092"]
  type="omkafka"
  topic="rsyslog_kafka"
  template="json"
)

我正在使用认的server.properties文件,该文件不包含任何侦听器,仅包含认值。我知道我需要设置listenersadvertised.listeners。 我尝试了以下设置无济于事:

尝试1: 侦听器= PLAINTEXT:// localhost:9092 advertised.listeners = PLAINTEXT://192.168.1.16:9092

尝试2: 听众= PLAINTEXT://127.0.0.1:9092 advertised.listeners = PLAINTEXT://192.168.1.16:9092

这是在重新加载Kafka和Rsyslog并确认其状态为活动之后。

尝试阅读消息时的示例错误。 一堆这些 [2020-08-20 00:52:42,248] WARN [Consumer clientId=consumer-console-consumer-70205-1,groupId=console-consumer-70205] Connection to node -1 (localhost/127.0.0.1:9092) Could not be established. broker may not be available. (org.apache.kafka.clients.NetworkClient)

以下是无限数量的这些: [2020-08-20 00:48:50,598] WARN [Consumer clientId=consumer-console-consumer-11975-1,groupId=console-consumer-11975] Error while fetching Metadata with correlation id 254 : {rsyslog_kafka=leader_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

我觉得我接近了。也许有些我只是了解。我读过很多类似的文章,他们说只要用您的服务器替换IP地址即可。我觉得我已经做到了,但是没有成功。

解决方法

您需要将监听器设置为PLAINTEXT://0.0.0.0:9092才能在外部进行绑定。

广告监听器应该设置为您的消费者可以用来发现集群的地址

注意:Docker Compose可能比VM容易