开发者社区 问答 正文

fabric网络环境整合java-sdk grpc连接异常

1、调用fabric-java-sdk整合fabric网络环境。启动的过程中一直报错

23:16:57.825 [main] ERROR org.hyperledger.fabric.sdk.Channel - Channel Channel{id: 1, name: mychannel} Sending proposal with transaction: 5fe505ed0e555ac50cc4773876d8eb3746da951a3ad2f8461b2fa177901e5862 to Peer{ id: 2, name: peer0.org1.example.com, channelName: mychannel, url: grpc://x.x.x.x:7051} failed because of: gRPC failure=Status{code=INTERNAL, description=http2 exception, cause=io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 1503010002
    at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:85)
    at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.verifyFirstFrameIsSettings(Http2ConnectionHandler.java:350)
    at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:251)
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:450)
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
}
java.lang.Exception: io.grpc.StatusRuntimeException: INTERNAL: http2 exception
    at org.hyperledger.fabric.sdk.Channel.sendProposalToPeers(Channel.java:4179)
    at org.hyperledger.fabric.sdk.Channel.getConfigBlock(Channel.java:854)
    at org.hyperledger.fabric.sdk.Channel.parseConfigBlock(Channel.java:1820)
    at org.hyperledger.fabric.sdk.Channel.loadCACertificates(Channel.java:1657)
    at org.hyperledger.fabric.sdk.Channel.initialize(Channel.java:1103)

grpc://x.x.x.x:7051 访问失败 服务器地址为阿里云服务 根据网上提供的方法都说是grpc通信错误,添加相应的依赖, 然后并没用。 实在搞不懂是怎么弄了 哪位大神指导一下。 Fabric环境为1.0的版本

遇到了同样的问题,在CSDN看到了,希望阿里云团队能够给出正确、标准的答案~请查看

展开
收起
刘刚_ 2020-05-23 21:13:43 1570 分享 版权
阿里云 AI 助理回答

遇到您描述的gRPC错误,通常意味着客户端尝试与服务器建立连接时,没有按照预期收到HTTP/2的SETTINGS帧,而是收到了其他类型的数据。这可能是因为多种原因造成的,包括但不限于网络配置问题、服务器端配置不当、防火墙限制或客户端使用的库与服务器不兼容等。针对您的情况,考虑到您使用的是阿里云服务器,并且已经尝试了添加依赖等常规解决方法但未解决问题,以下是一些建议的排查步骤:

  1. 检查端口开放情况:确保阿里云服务器的安全组规则中已正确开放了7051端口,允许入站连接。这是gRPC通信所必需的。

  2. 查看服务器日志:登录到运行Fabric Peer的阿里云服务器上,查看Peer的日志文件(默认可能在/var/log/hyperledger/fabric/peer/目录下),以获取更多关于服务端的错误信息或异常提示。这有助于判断是客户端问题还是服务端问题。

  3. 验证服务器配置:确认Peer节点是否正确配置为监听7051端口,并且启用了gRPC服务。检查core.yaml配置文件中的相关设置,特别是peer.gossip.listenEndpointpeer.chaincodeListenAddress(如果适用)。

  4. 网络连通性测试:从客户端所在的机器上尝试直接telnet到阿里云服务器的7051端口,以验证基础网络连通性。例如,执行命令 telnet x.x.x.x 7051,看是否能够成功建立连接。

  5. 防火墙检查:除了安全组之外,还要确认服务器上的软件防火墙(如iptables)没有阻止7051端口的访问。

  6. 版本兼容性:虽然您提到Fabric环境为1.0版本,但仍需确认客户端SDK版本与服务端Fabric版本之间的兼容性。有时不同版本间的差异可能导致这类通信问题。

  7. TLS/SSL配置:如果您的Fabric网络启用了TLS/SSL,确保客户端连接时也正确配置了相关的证书和密钥,以及正确的SSLContext。

  8. 依赖冲突:检查项目中是否存在依赖冲突,尤其是与gRPC相关的依赖。有时候,不同版本的依赖包可能会导致此类问题。

如果以上步骤均未能解决问题,建议考虑升级至Fabric的较新版本,因为旧版本可能存在已知的问题或不再得到充分的支持。同时,也可以考虑在阿里云开发者社区或Hyperledger Fabric的官方论坛提问,那里有更广泛的用户和专家群体可以提供帮助。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答