Strimzi:MirrorMaker 2.0 连接到 IBM EventStream

Posted

技术标签:

【中文标题】Strimzi:MirrorMaker 2.0 连接到 IBM EventStream【英文标题】:Strimzi: MirrorMaker 2.0 connecting to IBM EventStream 【发布时间】:2020-06-21 15:25:26 【问题描述】:

我已经使用 Strimzi 在 Kubernetes 上配置了 Kafka。我尝试通过 MM2 将 Kafka 与 IBM EventStream 连接,但出现错误..

任何导致问题的消息和主题的想法

2020-03-09 17:25:40,258 错误在对 /connectors/my-cluster-source->my-cluster-target.MirrorSourceConnector/config (org.apache.kafka.connect.runtime. rest.errors.ConnectExceptionMapper) [qtp1584918772-17] com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例 在 [来源:(org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream);行:1,列:1335](通过引用链:java.util.LinkedHashMap["targetConnector"]) 在 com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) 在 com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1442) 在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1216) 在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1126) 在 com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:63) 在 com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:10) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29) 在 com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1682) 在 com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:977) 在 com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:814) 在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:233) 在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:212) 在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132) 在 org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom(MappableExceptionWrapperInterceptor.java:49) 在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132) 在 org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1067) 在 org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:850) 在 org.glassfish.jersey.server.ContainerRequest.readEntity(ContainerRequest.java:247) 在 org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:73) 在 org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:56) 在 org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply(ParamValueFactoryWithSource.java:50) 在 org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:68) 在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues(JavaResourceMethodDispatcherProvider.java:109) 在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469) 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391) 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80) 在 org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253) 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:292) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:274) 在 org.glassfish.jersey.internal.Errors.process(Errors.java:244) 在 org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) 在 org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232) 在 org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:679) 在 org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:392) 在 org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:365) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:318) 在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:544) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1581) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1307) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:482) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1549) 在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1204) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221) 在 org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) 在 org.eclipse.jetty.server.Server.handle(Server.java:494) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:374) 在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:268) 在 org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) 在 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 在 org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) 在 java.lang.Thread.run(Thread.java:748)

【问题讨论】:

【参考方案1】:

从您分享的日志看来,IBM EventStream 似乎无法通过引导路由/入口 url 连接:

org.apache.kafka.connect.runtime.rest.errors.ConnectExceptionMapper

所以我的建议是请检查您在 Kubernetes 上的 Ingress 配置,因为我想您正在尝试访问您的 Kubernetes 集群的 Strimzi 集群,并确保您可以使用 Kafka 控制台消费者/生产者本地生产/消费消息您的本地,在 K8S 中访问您的 Kafka 集群。

如果您使用 https,请务必在路由/入口 url 末尾附加 443(或 8443)端口,并删除您在 IBM EventStream 配置中设置的“https://”作为引导服务器 url。

【讨论】:

以上是关于Strimzi:MirrorMaker 2.0 连接到 IBM EventStream的主要内容,如果未能解决你的问题,请参考以下文章

Kafka Connect 加载插件失败

Kafka MirrorMaker 跨集群同步工具

mirrormaker2 普罗米修斯指标

mirrormaker怎么导入剧本

KafkaKafka 镜像 Kafka mirroring (MirrorMaker)

A look inside Kafka Mirrormaker 2