【问题标题】:"Kafka Timed out waiting for a node assignment." on MSK“Kafka 等待节点分配超时。”在 MSK 斯隆
【发布时间】:2022-01-17 13:00:45
【问题描述】:

规格:

我还尝试按照Amazon MSK Library for AWS Identity and Access Management 的建议添加 IAM 身份验证信息。它说在 config/client.properties 中添加以下内容:

# Sets up TLS for encryption and SASL for authN.
security.protocol = SASL_SSL

# Identifies the SASL mechanism to use.
sasl.mechanism = AWS_MSK_IAM

# Binds SASL client implementation.
# sasl.jaas.config = software.amazon.msk.auth.iam.IAMLoginModule required;

# Encapsulates constructing a SigV4 signature based on extracted credentials.
# The SASL client bound by "sasl.jaas.config" invokes this class.
sasl.client.callback.handler.class = software.amazon.msk.auth.iam.IAMClientCallbackHandler

# Binds SASL client implementation. Uses the specified profile name to look for credentials.
sasl.jaas.config = software.amazon.msk.auth.iam.IAMLoginModule required awsProfileName="kafka-client";

kafka-client 是作为实例配置文件附加到 EC2 实例的 IAM 角色。

网络:我使用 VPC 可达性分析器确认安全组配置正确,并且我用作生产者的 EC2 实例可以访问无服务器 MSK 集群。

我正在尝试做的事情:创建一个主题。

我是如何尝试的bin/kafka-topics.sh --create --partitions 1 --replication-factor 1 --topic quickstart-events --bootstrap-server boot-zclcyva3.c2.kafka-serverless.us-east-2.amazonaws.com:9098 结果:

Error while executing topic command : Timed out waiting for a node assignment. Call: createTopics
[2022-01-17 01:46:59,753] ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: createTopics
 (kafka.admin.TopicCommand$)

我也在尝试:明文端口为 9092。(9098 is the IAM-authentication port in MSK,无服务器 MSK 默认使用 IAM 身份验证。)

我在 SO 上找到的有关此节点分配错误的所有其他帖子均不包括 MSK。我尝试了像uncommenting the listener setting in server.properties 这样的建议,但这并没有改变任何东西。

安装kcat 进行故障排除对我来说不起作用,因为没有现成的安装 yum 包管理器,Amazon Linux 2 使用它,而且these instructionschecking for libcurl (by compile)... failed (fail) 对我来说失败了.

问题:关于解决这个“节点分配”错误的任何其他提示?

【问题讨论】:

  • 我感觉您会从 MSK 支持部门得到更直接的答复

标签: amazon-web-services amazon-ec2 apache-kafka serverless


【解决方案1】:

创建的属性文件不会自动使用;您的命令需要包含--command-config client.properties,此属性文件记录在linked IAM page 上的MSK 文档中。

提取...

ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
security.protocol=SASL_SSL
sasl.mechanism=AWS_MSK_IAM
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler

或者,如果明文端口不起作用,那么您还有其他网络问题

除了这些步骤,我建议联系 MSK 支持,并告诉他们 update the "Create a Topic" page 不再使用 Zookeeper,请记住 Kafka 3.0 is not (yet) supported

【讨论】:

  • 确实需要该标志,您列出的其他属性也是如此,例如ssl.truststore.location,MSK 需要使用 AWS Certificate Manager 创建一个每月 400 美元的私有 CA。事实证明,无服务器 MSK 集群选项(自 2021 年 12 月起预览)仅支持 IAM 身份验证,这就是明文端口 9092 不起作用的原因。一旦我创建了一个专用的 MSK 集群,其他一切都相同,主题创建命令在明文端口上工作。
猜你喜欢
  • 2018-12-21
  • 2019-05-04
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多