无法在MSK上连接到Kafka

时间:2020-07-08 13:59:08

标签: python apache-kafka kafka-consumer-api kafka-producer-api aws-msk

我已经在MSK上创建了一个Kafka集群,现在我正尝试使用python连接到该集群。

我写了这个短代码:

from kafka import KafkaProducer
import json

producer = KafkaProducer(
    bootstrap_servers=['host1:9092', 'host2:9092'],
    value_serializer=lambda x: json.dumps(x).encode('utf-8'),
    api_version=(2, 4, 1)
)

producer.send('test', value={'hello':'world'})

问题在于,每次我运行它时,都会出现此错误:

KafkaTimeoutError: Failed to update metadata after 60.0 secs.

我认为这可能与Kafka创建主题有关,因此我在配置中添加了这一行。

auto.create.topics.enable=true

但是我仍然遇到相同的错误。

这是我的完整配置文件:

default.replication.factor=3
min.insync.replicas=2
num.io.threads=8
num.network.threads=5
num.partitions=1
num.replica.fetchers=2
socket.request.max.bytes=104857600
unclean.leader.election.enable=true
auto.create.topics.enable=true
zookeeper.connection.timeout.ms=5000

我在这里想念什么?我读到某个地方可能与SSL身份验证有关,但是在任何步骤下,都没有任何.pem文件,.ca文件或类似的文件。

1 个答案:

答案 0 :(得分:2)

您可能无法连接到 MSK。您遇到的错误是超时错误。

第一次开始使用 MSK 时的一个错误假设是,您可以从 AWS 网络外部连接到它。 这是一个错误的假设。AWS 有一份详细的文档说明您如何access your MSK cluster

如果您不是从 MSK VPC 内的 EC2 实例运行您的客户端,您将无法访问它。即使您在 MSK 安全组策略中打开相关安全规则。

我曾花时间尝试多个代理从 AWS 外部访问 MSK,但没有成功。只需按照我上面提到的指南进行操作,它可能会解决您的连接问题。

此外,如果您是 MSK 的新手我强烈建议您阅读 Getting Started 教程,或者至少阅读第 5 步 (Create a Topic) 和第 6 步 ({ {3}})。