连接失败 |FISCO BCOS开发问题排查

标签:连接失败 问题排查 Failed to connect to nodes 握手失败


Failed to connect to nodes

若SDK连接节点失败,抛出错误Failed to connect to nodes: [Connection refused:,可从以下思路排查:

第一步.检查节点进程

通过ps aux | grep fisco bcos命令检查节点进程是否启动

第二步.检查节点监听IP

若SDK与节点处于不同机器,检查节点的channel服务的监听端口channel_listen_ip(位于SDK直连节点的config.ini配置文件中)是否为0.0.0.0或外网IP(注: 此外网IP非云服务器的虚拟IP,必须是机器的网卡IP)

第三步.检查SDK的连接配置

检查SDK配置的节点连接是否正确,Web3SDK的节点连接配置参考这里;Java SDK的节点连接配置参考这里

第四步.检查SDK与节点之间连通性

下载telnet工具,使用命令telnet ${nodeIP}:${channel_listen_port}检查SDK与节点之间是否可连通,其中${nodeIP}为节点IP,${channel_listen_ip}为节点Channel服务的监听端口,可通过节点目录下的config.ini配置文件中rpc.channel_listen_port配置选项获取,若SDK与节点之间不连通,请检查是否开启了防火墙/安全组策略,需要在防火墙/安全组中开放FISCO BCOS节点所使用的channel端口。


Java SDK握手失败

若Java SDK连接节点时,显示握手失败,请按以下步骤排查:

第一步.检查是否拷贝证书

若没有配置证书,请参考Java SDK快速入门配置SDK证书

第二步.检查SDK与直连节点是否处于相同机构

FISCO BCOS v2.5.0版本起,限制SDK只能连接本机构的节点,请确保SDK证书与直连节点证书属于相同机构

第三步.检查JDK版本

请确认JDK版本不小于JDK 1.8且不大于JDK 14。

第四步.检查证书配置是否正确

检查证书是否拷贝到默认的配置路径,请参考这里.

第五步.检查是否Jar包冲突

Jar包冲突会报如下几个错误。

  • SSL_MODE_ENABLE_FALSE_START
    问题描述

    基于Java SDK 2.6.1-rc1开发应用时,已经按照Java SDK快速入门配置了证书,启动报错如下:
    java.lang.NoSuchFieldError: SSL_MODE_ENABLE_FALSE_START
        at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.(ReferenceCountedOpenSslEngine.java:355) ~[netty-all-4.1.52.Final.jar:4.1.52.Final]
        at io.netty.handler.ssl.OpenSslEngine.(OpenSslEngine.java:32) ~[netty-all-4.1.52.Final.jar:4.1.52.Final]
    
    问题分析:

    应用中引入了4.1.52版本的netty,使用了较高版本的tcnative,与Java SDK 2.6.1-rc1中的tcnative版本冲突,导致Java SDK初始化失败
    解决方法:

    升级Java SDK 2.6.1-rc1到Java SDK 2.6.1或者最新,请参考引入Java SDK.
  • PrivateKey type not supported PKCS#8
    问题描述

    应用中同时Java SDK 2.6.1和Web3SDK 2.6.0(或Web3SDK 2.6.1),已经按照Java SDK快速入门配置了证书,SDK启动报错如下:
    create BcosSDK failed, error info: init channel network error: SSL context init failed, please make sure your cert and key files are properly configured. error info: PrivateKey type not supported PKCS#8
    
    问题分析:

    Java SDK 2.6.1使用了较高版本的netty和tcnative,Web3SDK 2.6.0与Web3SDK 2.6.1使用的netty和tcnative版本较低,两者同事使用时jar包冲突,导致SDK启动报错。

    解决方法

    由于Java SDK和Web3SDK包含相同的功能,但Java SDK功能更全且会持续迭代,因此不建议同时使用Web3SDK与Java SDK,建议使用Java SDK替代Web3SDK.
    • 方法一: 将Web3SDK升级到2.6.2版本,使其与Java SDK基于同样版本的netty与tcnative
    • 方法二: 去除对Web3SDK的依赖,仅依赖Java SDK

web3SDK握手失败

若Web3SDK连接节点时,显示握手失败,请按以下步骤排查:

第一步.检查证书配置

若没有配置证书,请参考Web3SDK证书配置配置SDK证书

第二步.检查SDK与直连节点是否处于相同机构

FISCO BCOS v2.5.0版本起,限制SDK只能连接本机构的节点,请确保SDK证书与直连节点证书属于相同机构

第三步.检查JDK版本

Web3SDK要求JDK版本大于等于1.8,推荐使用OracleJDK。
注:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),会导致JavaSDK无法正常连接区块链节点,Java环境安装请参考Java环境配置

第四步.针对Web3SDK常见的异常启动问题进行排查

  • Failed to connect to the node. Please check the node status and the console configuration.

    比较旧的SDK版本的提示,建议将JavaSDK版本升级至2.2.2或者以上(修改gradle.build或者maven配置文件中web3sdk的版本号),可以获取更准确友好的提示,然后参考下面的错误提示解决问题。

  • Failed to initialize the SSLContext: class path resource [ca.crt] cannot be opened because it does not exist.

    无法加载到证书文件,证书文件没有正确拷贝至conf目录,可以参考控制台安装流程,拷贝证书文件至conf目录下。

  • Failed to initialize the SSLContext: Input stream not contain valid certificates.

    加载证书文件失败,CentOS系统使用OpenJDK的错误,参考CentOS环境安装JDK章节重新安装OracleJDK。

  • Failed to connect to nodes: [connection timed out: /127.0.0.1:20200]

    连接超时,节点的网络不可达,请检查提示的IP是否配置错误,或者,当前JavaSDK运行环境与节点的环境网络确实不通,可以咨询运维人员解决网络不通的问题。

  • Failed to connect to nodes: [Connection refused: /127.0.0.1:20200]

    拒绝连接,无法连接对端的端口,可以使用telnet命令检查端口是否连通,可能原因:

    1. 节点未启动,端口处于未监听状态,启动节点即可。
    2. 节点监听127.0.0.1的网段,监听127.0.0.1网络只能本机的客户端才可以连接,控制台位于不同服务器时无法连接节点,将节点配置文件config.ini中的channel_listen_ip修改为控制台连接节点使用的网段IP,或者将其修改为0.0.0.0
    3. 错误的端口配置,配置的端口并不是节点监听的channel端口,修改连接端口为节点config.ini配置的channel_listen_port的值。

      注意:控制台(或者JavaSDK)连接节点时使用Channel端口,并不是RPC端口,Channel端口在节点配置文件中通过channel_listen_ip字段配置,RPC端口通过jsonrpc_listen_port字段配置,注意区分,RPC默认从8545开始分配, Channel端口默认从20200开始分配。
  • Failed to connect to nodes: [ ssl handshake failed:/127.0.0.1:20233]

    与节点ssl握手失败,可能原因:

    1. 拷贝了错误的证书,检查拷贝的证书是否正确。
    2. 端口配置错误,连接其他服务正在监听的端口,检查连接端口是否为节点channel_listen_port端口。
    3. JDK版本问题,推荐使用1.8以及以上的OracleJDK,参考CentOS环境安装JDK章节安装OracleJDK。

  • Failed to connect to [127.0.0.1:20233, 127.0.0.1:20234, 127.0.0.1:20235] ,groupId: 1 ,caCert: classpath:ca.crt ,sslKey: classpath:sdk.key ,sslCrt: classpath:sdk.crt ,java version: 1.8.0_231.

    其他未知的错误,需要查看日志文件分析具体错误。

  • Failed to connect to nodes: [ ssl handshake failed:/127.0.0.1:20200], PKIX path validation failed: java.security.cert.CertPathValidatorException:Algorithm constraints check failed on disabled algorithm: secp256k1

    SDK依赖的Java禁用了secp256k1曲线,解决方法包括:

    • 使用1.8以上的OracleJDK,启动SDK时,加上-Djdk.tls.namedGroups="secp256k1"参数启用secp256k1曲线
    • 升级到最新的Web3SDK 2.6.2版本
  • java.lang.NoSuchFieldError: SSL_MODE_ENABLE_FALSE_START

    请参考web3sdk issue #711

了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS,欢迎点击页面右上角star收藏,获取最新版本。

### FISCO BCOS 平台概述 FISCO BCOS 是由国内企业主导研发的一个对外开源、安全可控的企业级金融联盟链底层平台[^3]。此平台的设计基于实际需求,旨在满足金融级别的高性能、高可用性、安全性、易用性和可扩展性的要求。 #### 主要特点 - **性能优化**:针对金融场景进行了专门的优化,能够处理大量的并发请求。 - **安全保障**:采用多层加密技术和权限管理机制来保障数据的安全传输与存储。 - **易于集成**:支持多种编程语言的 SDK 接口调用以及图形化界面操作,方便快速接入现有业务系统。 - **灵活部署**:既可以在本地环境中搭建私有网络,也适合云服务提供商托管公有或混合型区块链环境。 - **社区活跃度高**:拥有庞大的开发者群体和技术支持团队,在官网上可以找到丰富的文档资料和案例分享[^2]。 ### 使用教程概览 对于初次接触 FISCO BCOS 的用户来说,可以从以下几个方面入手: #### 1. 安装准备 确保操作系统已安装必要的依赖项,并获取最新的源码包或者通过 Docker 镜像方式简化环境配置过程[^4]。 ```bash cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh ``` 这段命令用于下载官方提供的控制台脚本并执行它,以便后续能更便捷地管理和监控节点运行状态。 #### 2. 网络初始化 按照官方指南完成创世区块创建、共识算法设置等工作,构建起稳定可靠的分布式账本基础架构。 #### 3. 应用开发指导 借助 WeBASE 中间件降低智能合约编写门槛的同时,还允许第三方应用程序轻松对接到这条链上开展各类增值服务活动;比如实现去中心化的电子投票方案就变得十分简单快捷。 #### 4. 日常运维建议 定期查看日志记录排查潜在风险点,及时更新软件版本修复漏洞补丁,保持整个系统的健康运转态势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值