本地设置的“SchemaRegistryException:无法获取 Kafka 集群 ID”

Posted

技术标签:

【中文标题】本地设置的“SchemaRegistryException:无法获取 Kafka 集群 ID”【英文标题】:"SchemaRegistryException: Failed to get Kafka cluster ID" for LOCAL setup 【发布时间】:2021-12-18 10:20:47 【问题描述】:

我从官方 confluent 站点下载了 confluent 版本 7.0.0 的 .tz(我在 MAC 上),并遵循 LOCAL(1 个节点)和 Kafka 的设置/ZooKeeper 开始正常,但 Schema Registry 一直失败(注意,我使用的是企业 ***)

SchemaRegistry 日志中的异常消息是:

[2021-11-04 00:34:22,492] INFO Logging initialized @1403ms to org.eclipse.jetty.util.log.Slf4jLog (org.eclipse.jetty.util.log)
[2021-11-04 00:34:22,543] INFO Initial capacity 128, increased by 64, maximum capacity 2147483647. (io.confluent.rest.ApplicationServer)
[2021-11-04 00:34:22,614] INFO Adding listener: http://0.0.0.0:8081 (io.confluent.rest.ApplicationServer)
[2021-11-04 00:35:23,007] ERROR Error starting the schema registry (io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication)
io.confluent.kafka.schemaregistry.exceptions.SchemaRegistryException: Failed to get Kafka cluster ID
    at io.confluent.kafka.schemaregistry.storage.KafkaSchemaRegistry.kafkaClusterId(KafkaSchemaRegistry.java:1488)
    at io.confluent.kafka.schemaregistry.storage.KafkaSchemaRegistry.<init>(KafkaSchemaRegistry.java:166)
    at io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication.initSchemaRegistry(SchemaRegistryRestApplication.java:71)
    at io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication.configureBaseApplication(SchemaRegistryRestApplication.java:90)
    at io.confluent.rest.Application.configureHandler(Application.java:271)
    at io.confluent.rest.ApplicationServer.doStart(ApplicationServer.java:245)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
    at io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain.main(SchemaRegistryMain.java:44)
Caused by: java.util.concurrent.TimeoutException
    at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1784)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)
    at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:180)
    at io.confluent.kafka.schemaregistry.storage.KafkaSchemaRegistry.kafkaClusterId(KafkaSchemaRegistry.java:1486)
    ... 7 more

我的 schema-registry.properties 文件的引导 URL 设置为

kafkastore.bootstrap.servers=PLAINTEXT://localhost:9092

我看到一些帖子说它的 SchemaRegistry 无法连接到 KafkaCluster URL,因为可能是 localhost 地址。我对 Kafka 还很陌生,基本上只需要这个本地设置来运行一个使用一些主题/Kafka 的 git 存储库,所以我的问题......

    我该如何解决这个问题(我使用的是企业 ***,但我认为这不会影响这个问题) 我什至需要 SchemaRegistry 吗?

【问题讨论】:

没有足够的信息来回答这个问题。不,您不需要 Schema Registry 来实际使用 Kafka 本身。本地主机工作正常,您的 *** 不会参与环回连接。您是否尝试过使用 Docker 快速入门指南?你使用的是 M1 Mac,因为我不知道 Confluent 是否支持它 @OneCricketeer 嘿,不,这是英特尔 Macbook pro 16。我还没有尝试过 Docker 快速入门,企业 *** 通常会在使用 Docker 时引起更多问题,但现在我会尝试一下,谢谢 我自己主要在我的 Mac 上使用 Docker(虽然没有尝试过 Confluent 7.0)。我的另一个建议是不要使用confluent local 命令,而只是在单独的窗口中运行kafka-server-startschema-registry-start,因为无论如何这些都是您在实际设置中使用的。更具体地说,该错误似乎表明 Kafka 已死亡或有其他客户端连接问题,如果您使用 kafka-server-start 启动它会更好 【参考方案1】:

我最终只使用了内部的 Docker 本地设置,而我必须对 docker compose YAML 进行的唯一更改是更改模式注册表端口(我将其更改为 8082 或 8084,不记得确切但只是一个未使用的端口,没有被 docker-compose.yaml 中列出的其他 Confluent 服务使用),我的本地设置现在工作正常

【讨论】:

好的,这对我有帮助——但我也是个傻瓜,我在 docker 中的内存设置太低(OSX 上的默认设置为 2GB),服务会启动,然后再翻过来。万一稍后出现另一个涂料并阅读此内容...也请添加更多内存。

以上是关于本地设置的“SchemaRegistryException:无法获取 Kafka 集群 ID”的主要内容,如果未能解决你的问题,请参考以下文章

配置本地host,实现本地域名解析设置

13.2 设置本地蓝牙设备

怎么把家里的本地连接地址类型设置成通过DHCP指派

manjaro设置本地代理

如何设置本地连接的Internrt 协议(TCP/IP)?

电脑网络设置里面的本地连接的属性栏变成灰色了,不能使用了,不能改IP了,怎么解决