如何从外部服务器连接到 kafka 服务器?

How can I connect to the kafka server from an external server?

我在 Google 云上有一个包含 3 个实例的 kafka 集群。

我想通过另一台外部服务器上的 python 文件配置消费者。

这里是 python 代码:

from kafka import KafkaConsumer
from json import loads


if __name__ == "__main__":

    topic_name = "test"
    consumer = KafkaConsumer(
        topic_name,
        bootstrap_servers=[
            "externalIP:9092",
            "externalIP:9092",
            "externalIP:9092",
        ],
        auto_offset_reset="latest",
        enable_auto_commit=True,
        group_id="test-consumer-group",
        value_deserializer=lambda x: loads(x.decode("utf-8")),
        consumer_timeout_ms=1000,
    )
    print(consumer.topics())

    print("[begin] get consumer list")

    for message in consumer:
        print("test")
        print(
            "Topic: %s, Partition: %d, Offset: %d, Key: %s, Value: %s"
            % (
                message.topic,
                message.partition,
                message.offset,
                message.key,
                message.value,
            )
        )
        print("[end] get consumer list")

在 GCP 实例上配置的 config/server.properties 文件如下所示:

broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka-1:9092

我根据搜索到的所有情况修改了配置文件,但是Python代码中只打印了topic,收不到数据

(数据收集在与生产者相同的服务器内实时确认)

我试过断开内部和外部连接,我什么都试过了,但我就是搞不定。请帮助我

您需要通告一个外部可解析地址。

请参考- https://www.confluent.io/blog/kafka-listeners-explained/

如果您对使用 GKE Kubernetes 感兴趣,可以部署 Strimzi 运算符,它可用于为您配置外部可解析地址等功能。