"Kafka Timed out waiting for a node assignment." 是MSK
"Kafka Timed out waiting for a node assignment." on MSK
规格:
- 正在预览的无服务器 Amazon MSK。
- t2.xlarge Amazon EC2 实例 Linux 2
- 从 https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
安装了 Kafka
- openjdk 版本“11.0.13”2021-10-19 LTS
- OpenJDK 运行时环境 18.9(内部版本 11.0.13+8-LTS)
- OpenJDK 64 位服务器 VM 18.9(构建 11.0.13+8-LTS,混合模式,
分享)
- Gradle7.3.3
- https://github.com/aws/aws-msk-iam-auth,构建成功
我也尝试添加 IAM 身份验证信息,如 Amazon MSK Library for AWS Identity and Access Management 所推荐。它说要在 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 instructions 在 checking for libcurl (by compile)... failed (fail)
对我来说失败了。
问题:关于解决此“节点分配”错误的任何其他提示?
创建的属性文件不会自动使用;您的命令需要包含 --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 to no longer use Zookeeper, keeping in mind that Kafka 3.0 is not (yet) supported
最近更新了文档,我可以完全按照它进行操作,没有任何问题(IAM 政策现在是正确的)
https://docs.aws.amazon.com/msk/latest/developerguide/serverless-getting-started.html
规格:
- 正在预览的无服务器 Amazon MSK。
- t2.xlarge Amazon EC2 实例 Linux 2
- 从 https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz 安装了 Kafka
- openjdk 版本“11.0.13”2021-10-19 LTS
- OpenJDK 运行时环境 18.9(内部版本 11.0.13+8-LTS)
- OpenJDK 64 位服务器 VM 18.9(构建 11.0.13+8-LTS,混合模式, 分享)
- Gradle7.3.3
- https://github.com/aws/aws-msk-iam-auth,构建成功
我也尝试添加 IAM 身份验证信息,如 Amazon MSK Library for AWS Identity and Access Management 所推荐。它说要在 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 instructions 在 checking for libcurl (by compile)... failed (fail)
对我来说失败了。
问题:关于解决此“节点分配”错误的任何其他提示?
创建的属性文件不会自动使用;您的命令需要包含 --command-config client.properties
,其中此属性文件记录在 linked IAM page.
摘录...
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 to no longer use Zookeeper, keeping in mind that Kafka 3.0 is not (yet) supported
最近更新了文档,我可以完全按照它进行操作,没有任何问题(IAM 政策现在是正确的)
https://docs.aws.amazon.com/msk/latest/developerguide/serverless-getting-started.html