【区块链】HyperLedger Besu Q&A
原创
©著作权归作者所有:来自51CTO博客作者kida_yuan的原创作品,请联系作者获取转载授权,否则将追究法律责任
各位在搭建Besu的时候相信也会碰到过各种各样的问题,我这边总结了其中几个最最常见的供大家参详,希望能够帮助到各位。
Q1:
在Besu节点通过Docker Swarm与其他节点交互时抛出异常(已经确认了Docker网络正常)
Error response from daemon: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 92.168.1.164:2377: connect: no route to host"
A1:
按照网上的说法这是因为系统防火墙引起的,尝试关闭宿主机防火墙即可解决这个问题
systemctl stop firewalld.service
systemctl disable firewalld.service
Q2:
在重启Docker后抛出异常
docker: Error response from daemon: error creating external connectivity network: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i docker_gwbridge -j RETURN: iptables: No chain/target/match by that name.
(exit status 1)).
A2:
如果在启动docker service时网关是关闭的状态,那么docker就不会操作网关配置(chain docker)。再之后网关若重新启动,会导致docker network无法对新container进行网络配置也就是没有网管的操作权限,因此需要做重启处理。如下:
Q3:
一开始学Docker Swarm的时候重复创建节点和加入节点抛出下面错误
Error response from daemon: rpc error: code = FailedPrecondition desc = network y2r9sn2ntcafv7uq7wema52vr is in use by task 9bhrcs4p8vtg9kuihd1djxhmi
A3:
# 先查看docker集群节点
docker node ls
# 释放节点
docker node update --availability drain y2qsyjdbfmm4tjwh4p9wqlmq1
# 删除节点
docker node rm y2qsyjdbfmm4tjwh4p9wqlmq1
Q4:
一开始学Docker Swarm的时候重复将节点加入集群抛出下面错误
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
A4:
# 先强制让节点脱离swarm模式
docker swarm leave --force
# 再使用join将节点加入到别的swarm网络
docker swarm join --token SWMTKN-1-0j7cpk5ipfx11duvittzm1ke0oamnzgy9mkjzoqyc53c1yi67y-bc7jsrpzxaqlrnducznt8x0qn 92.168.1.164:2377
Q5:
还是在Docker Swarm的网络问题,这个报错多出现在创建Besu的签署节点的时候出现“无法加入到网络”
docker: Error response from daemon: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded.
A5:
# 先将节点释放
docker node update --availability drain xxxx
#之后重新将节点激活
docker node update --availability active xxxx
按照以上操作仍然会存在大几率的错误重现(之前我就是将所有节点都脱离overlay网络后重新加入仍然会出现上述错误),因此建议在创建签署节点前先创建busybox容器并先加入到overlay网络,之后再做签署节点的创建。
Q6:
关于安装web3.js时会出现的各种问题,在这里我直接出一个指南让大家避一下坑。
A6:
# 先使用普通账号安装nodejs,一般来说CentOS通过yum安装会自动安装6.x版本的nodejs。
sudo yum install nodejs
# 接着就通过npm安装n(nodejs的管理工具,是为了后面升级nodejs使用的)
sudo npm i -g n
# 安装好n之后就通过n来对现有的nodejs进行升级,这里升级成lts版本
sudo n lts
# 升级lts后发现nodejs虽然已升级成功,但npm还是旧的版本。这时先不管这个直接通过npm装一个cnpm。
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
# cnpm安装完毕后切换到目标目录采用以下命令安装web3.js
sudo cnpm install web3@1.3.0
# 为了生成package.json文件在目标目录下使用以下命令初始化项目目录,让其将编译包全部下载到本地。
sudo npm init
# 最后使用以下命令将当前目录转换成可执行目录后就可以使用web3.js了
sudo cnpm install -g web3@1.3.0 --save