KnowStreaming icon indicating copy to clipboard operation
KnowStreaming copied to clipboard

JMX端口连接异常:工具前端默认ssl和密码认证要一同开启,不能单独开启密码认证,需手动修改数据库,才能正常连接jmx端口

Open 15611118611 opened this issue 2 years ago • 3 comments

  • [x] 我已经在 issues 搜索过相关问题了,并没有重复的。

你是否希望来认领这个Bug。

「 Y / N 」

环境信息

  • KnowStreaming version : 3.2.0
  • Operating System version : centos7.3
  • Java version : jdk17

重现该问题的步骤

  1. 页面选择添加集群,填写broker信息,jmx port会自动补充;然后手动点击jmx security部分:password Authentication

共涉及两个问题: 问题一:jmx密码中不能包含数字,不知道这是啥意图呢? 问题二:正确填写jmx 用户名和密码后,工具连接jmx持续报错 image

连接报错信息如下:

2023-02-07 00:43:06.974 [MetricCollect-Shard-0-7-thread-40270] ERROR class=c.x.know.streaming.km.common.jmx.JmxConnectorWrap||JMX connect exception, clientLogIdent:clusterPhyId: 3 brokerId: 2 host:10.x.x.x port:9997.
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
        javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake]
        at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:370)
        at java.management/javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
        at com.xiaojukeji.know.streaming.km.common.jmx.JmxConnectorWrap.createJmxConnector(JmxConnectorWrap.java:176)
        at com.xiaojukeji.know.streaming.km.common.jmx.JmxConnectorWrap.checkJmxConnectionAndInitIfNeed(JmxConnectorWrap.java:74)
        at com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaJMXClient.getClientWithCheck(KafkaJMXClient.java:38)
        at com.xiaojukeji.know.streaming.km.core.service.partition.impl.PartitionMetricServiceImpl.getTopicAvgMetricFromJmx(PartitionMetricServiceImpl.java:314)
        at com.xiaojukeji.know.streaming.km.core.service.version.impl.VersionControlServiceImpl.doHandler(VersionControlServiceImpl.java:93)
        at com.xiaojukeji.know.streaming.km.core.service.version.BaseVersionControlService.doVCHandler(BaseVersionControlService.java:62)
        at com.xiaojukeji.know.streaming.km.core.service.version.BaseKafkaVersionControlService.doVCHandler(BaseKafkaVersionControlService.java:29)
        at com.xiaojukeji.know.streaming.km.core.service.partition.impl.PartitionMetricServiceImpl.collectPartitionsMetricsFromKafka(PartitionMetricServiceImpl.java:146)
        at com.xiaojukeji.know.streaming.km.core.service.partition.impl.PartitionMetricServiceImpl.collectPartitionsMetricsFromKafkaWithCache(PartitionMetricServiceImpl.java:85)
        at com.xiaojukeji.know.streaming.km.collector.metric.kafka.PartitionMetricCollector.collectMetrics(PartitionMetricCollector.java:86)
        at com.xiaojukeji.know.streaming.km.collector.metric.kafka.PartitionMetricCollector.lambda$collectKafkaMetrics$0(PartitionMetricCollector.java:55)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: javax.naming.CommunicationException: null
        at jdk.naming.rmi/com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:138)
        at java.naming/com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:220)
        at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
        at java.management.rmi/javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1839)
        at java.management.rmi/javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1813)
        at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:302)
        ... 17 common frames omitted
Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
        javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
        at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:308)
        at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:204)
        at java.rmi/sun.rmi.server.UnicastRef.newCall(UnicastRef.java:344)
        at java.rmi/sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:116)
        at jdk.naming.rmi/com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:134)
        ... 22 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
        at java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1709)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1508)
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1415)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
        at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:915)
        at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1285)
        at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
        at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
        at java.base/java.io.DataOutputStream.flush(DataOutputStream.java:128)
        at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:230)
        ... 26 common frames omitted
Caused by: java.io.EOFException: SSL peer shut down incorrectly
        at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:483)
        at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1500)
        ... 34 common frames omitted

数据库中集群信息如下: image

手动修改数据库中配置openSSL:false后,连接正常

预期结果

希望能解决以上两个问题:

  1. 密码限制不能包含数字
  2. jmx的SSL和密码认证默认是耦合在一起的,无法设置只开启密码认证

实际结果


如果有异常,请附上异常Trace:

Just put your stack trace here!

15611118611 avatar Feb 07 '23 06:02 15611118611

1.前端改一下密码规则限制,加一个”数字“类型 2.开启密码认证和集群配置的信息同时生效

brodiehong avatar Feb 16 '23 03:02 brodiehong

例子: image

ZQKC avatar Feb 22 '23 07:02 ZQKC

遇到了一样的问题, 也是通过修改数据库解决掉了,建议官方尽快修复

hb407033 avatar Mar 21 '23 09:03 hb407033