【问题标题】:No enum constant org.apache.kafka.common.protocol.SecurityProtocol.CLIENT aws MSK没有枚举常量 org.apache.kafka.common.protocol.SecurityProtocol.CLIENT aws MSK
【发布时间】:2020-01-10 08:33:18
【问题描述】:

我正在尝试在 EC2 上运行架构注册表 我的 kafka 在 AWS 上运行。

这是我的属性文件

listeners=http://0.0.0.0:8081
kafkastore.connection.url=z-3.***:2181,z-***:2181,z-**:2181
kafkastore.bootstrap.servers=PLAINTEXT://b-3.**:9092,PLAINTEXT://b-6.**:9092,PLAINTEXT://b-1.**:9092
kafkastore.topic=_schemas
debug=false

schema-registry-start /etc/schema-registry/schema-registry.properties &

当我运行这个时,我得到以下错误

kafka.common.KafkaException: Failed to parse the broker info from zookeeper: {"listener_security_protocol_map":{"CLIENT":"PLAINTEXT","CLIENT_SECURE":"SSL","REPLICATION":"PLAINTEXT","REPLICATION_SECURE":"SSL"},"endpoints"

Caused by: java.lang.IllegalArgumentException: No enum constant org.apache.kafka.common.protocol.SecurityProtocol.CLIENT

我已将其更改为 TSL、PLAINTEXT 并且两者都没有,但都抛出错误。 我也有从 EC2 到 MSK 的连接。

Apache Kafka 版本

2.2.1

融合

sudo rpm --import http://packages.confluent.io/deb/3.1/archive.key

即使我没有提到经纪人网址,我也会得到同样的错误

根据答案更新问题

未提及连接网址时

[ec2-user@ip-10-97-54-99 ~]$ [2020-01-11 03:46:29,418] ERROR Server died unexpectedly:  (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain:51)
io.confluent.common.config.ConfigException: Missing required configuration "kafkastore.connection.url" which has no default value.
        at io.confluent.common.config.ConfigDef.parse(ConfigDef.java:241)
        at io.confluent.common.config.AbstractConfig.<init>(AbstractConfig.java:76)
        at io.confluent.rest.RestConfig.<init>(RestConfig.java:299)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig.<init>(SchemaRegistryConfig.java:358)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig.<init>(SchemaRegistryConfig.java:354)
        at io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain.main(SchemaRegistryMain.java:41)

提及CLIENT://CLIENT_SECURE:// 也会抛出同样的错误。

MSK 也提供Plaintext。我可以在客户信息中看到这一点

【问题讨论】:

  • 你为什么要使用这么旧版本的 Confluent 作为密钥?此外,我相信 Deb 密钥适用于 Debian,而且您使用的是 RPM,而不是 APT
  • 是的,我正在使用 RPM ..我从网站上得到这个 ...
  • deb/3.1/ 不是 YUM 指令的一部分 docs.confluent.io/current/installation/installing_cp/…

标签: apache-kafka confluent-schema-registry aws-msk


【解决方案1】:

我认为问题出在您的版本上。 在我手动安装之后我也遇到了同样的问题,它对我有用。

这是我的确切安装步骤和架构注册表启动步骤

sudo yum install java-1.8.0
curl -O http://packages.confluent.io/archive/5.3/confluent-5.3.2-2.12.tar.gz
tar xzf confluent-5.3.2-2.12.tar.gz
cd confluent-5.3.2/etc/schema-registry/

/home/ec2-user/confluent-5.3.2/bin/schema-registry-start /home/ec2-user/confluent-5.3.2/etc/schema-registry/schema-registry.properties

【讨论】:

  • 也许你应该分享你的财产
【解决方案2】:

如果你配置了kafkastore.bootstrap.servers,那么你需要从Schema Registry中移除Zookeeper连接字符串。

&lt;kafkastore.connection.url&gt;未配置并且指定了 Kafka 引导代理 &lt;kafkastore.bootstrap.servers&gt; 时,选择基于 Kafka 的初选

尝试先删除它。

也相关 - https://github.com/confluentinc/schema-registry/issues?utf8=%E2%9C%93&q=is%3Aissue+MSK+


不清楚您尝试安装哪个版本的 Registry,但 MSK 没有任何 PLAINTEXT 客户端连接字符串,如 listener_security_protocol_map 所示。

假设 PLAINTEXT 仍然不起作用,您需要为有效的侦听器协议指定不同的连接,例如 CLIENT://CLIENT_SECURE://

【讨论】:

  • 另一种选择是在 AWS 中使用 Confluent Cloud,它为您提供 Kafka、Schema Registry 和控制中心
  • 我没有选择在 AWS 上使用 Confluent Cloud ..但是我已经根据您的回答更新了我的详细信息..即使我删除了连接 url 我得到了同样的错误..我尝试了所有连接但仍然是同样的错误。MSK 也提供纯文本。当我在客户端信息中看到这个时,我看到两个 bootstrp url 一个 TSL 和第二个 PLAINTEXT
  • CLIENT 监听器是 Kafka 理解的明文协议的映射器。 zookeeper 客户端不知道如何处理CLIENT,它描述了你得到的错误。你看到我链接到的 github 问题了吗?似乎人们在那里有解决方案
  • 是的,我什至在此之前也遵循了这一点..但我已经尝试了他们已经讨论过的所有内容。最后他们也使用 PLAINTEXT://BROKAL URL
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2015-11-17
  • 1970-01-01
  • 2018-12-02
  • 2015-08-21
相关资源
最近更新 更多