【问题标题】:Trouble with Apache Kafka to Allow External ConnectionsApache Kafka 允许外部连接出现问题
【发布时间】:2020-08-20 00:59:53
【问题描述】:

我现在在 Kafka 上遇到困难,但我觉得我很接近。

我在 FreeNAS 上有两个虚拟机在本地运行。两者都运行 Ubuntu 18.04 LTS。

VM 灰色日志:192.168.1.25。运行 Graylog 服务器。很好地从自身检索 rsyslogs 和 apache。

VM 卡夫卡:192.168.1.16。运行 Kafka。

我的目标是让 VM Graylog 通过 Graylog Kafka UDP 输入从 VM Kafka 中提取日志。第二个目标是复制这个,除了 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 Advertising.listeners=PLAINTEXT://192.168.1.16:9092

尝试 2: 听众 = PLAINTEXT://127.0.0.1:9092 Advertising.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 地址。我觉得我已经做到了,但没有成功。

【问题讨论】:

  • 检查是否能够从 Graylog VM ping kafka 机器和 telnet 到 kafka 的 9092 端口。
  • 即使在 tcp 和 udp 上为 9092 端口添加了 ufw 规则后,我也无法通过该端口 ping 任一 VM。我可以在没有端口的情况下 ping 它们。尝试了一般 ping 和 telnet。

标签: apache-kafka graylog graylog3


【解决方案1】:

您需要将侦听器设置为PLAINTEXT://0.0.0.0:9092 才能对外绑定。

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

注意:Docker Compose 可能比 VM 更容易

【讨论】:

  • 我已经这样做了,但我仍然无法通过我的 Graylog 服务器访问这个 Kafka 服务器。我已经仔细检查了两台服务器上的 9092 是否打开。我还没学过docker。
  • 您确定您的虚拟机在同一个网络中吗? confluent.io/blog/kafka-listeners-explained
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 2021-12-06
  • 2020-06-07
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多