第二章 部署FISCO BCOS 2.1

发布于 2020-05-25 10:32:26
提前准备工具:
ubunbtu系统服务器 2台
Remote Desktop Manager 远程链接工具
Winscp 远程文件操作工具(可视化文件操作)

详细全流程可以参考笔者 B站视频:https://space.bilibili.com/483817038

  1. 测试服务器配置介绍

我们需要准备搭载操作系统环境为:ubuntu 18.04,服务器配置为2核4GB、 带宽 5Mbps
、100GB的高性能云硬盘。

24fe71ddc52dbe8633338ddc723eccad.png

      云服务器配置图

 

 其中 将测试服务器1 作为机构A,同时也是生成创世区块的机构,测试服务器2
作为机构B,两个机构 分别代表两台服务器,每台服务器 又分别生成两个节点。

dfc57963abcaa991fc9bffcfc6c8e1b9.png

      节点网络配置图

官方关于端口配置有详细方介绍:https://mp.weixin.qq.com/s/IiHsPlxmvEEBTC84n27I9A

针对云服务器中的vps服务器,RPC监听地址需要写网卡中的真实地址(如内网地址或127.0.0.1),可能与用户登录的ssh服务器不一致。

  1. 搭建底层
搭建底层需要对链搭建过程有一个了解,笔者将机构A和机构B大致证书操作流程进行画图说明。

9b933163d9f70f8f788416d87af58398.jpg

机构A和机构B操作流程图

使用remote Desktop Manager 工具连接两台服务器,分别进行(1)~(4)的操作。

(1)下载企业部署工具,执行如下命令。

cd ~/ && git clone https://github.com/FISCO-BCOS/generator.git && cd
./generator

(2)安装企业级部署工具,执行如下命令。

cd ~/generator && bash ./scripts/install.sh

(3)获取节点二进制,执行如下命令。

./generator --download_fisco ./meta

(4)检查二进制版本,执行如下命令。

./meta/fisco-bcos -v

f62ab43a8c7b7e789750ceb9a55b2038.png

         底层版本信息图

(5)在机构A的服务器中,进行初始化链证书,执行如下命令。

cd ~/generator

./generator --generate_chain_certificate ./dir_chain_ca

(6) 初始化机构 A,执行如下命令。

./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA

(7)查看机构证书及私钥,执行如下命令。

ls dir_agency_ca/agencyA/

(8)发送链证书、机构证书、机构私钥至机构 A,执行如下命令。

cp ./dir_agency_ca/agencyA/* ~/generator/meta/

(9)在机构B的服务器中,初始化机构 B

通过winscp工具将在机构A中的链证书 copy 给机构 B,就是将机构A服务器上的
dir_chain_ca 文件夹内容 复制给机构B的generator目录下

da2412155e3095e6aab2dac67a7aeec7.png

      从机构A中复制给机构B的dir_chain_ca文件夹图

(10)连接机构B生成机构 B 证书,执行如下命令。

./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agency

(11)发送链证书、机构证书、机构私钥至机构 B的meta目录,执行如下命令。

cp ./dir_agency_ca/agencyB/* ~/generator/meta/

(12) 修改配置文件

使用winscp工具连接机构A和机构B的服务器,分别手动修改/home/ubuntu/generator目录下的
node_deployment.ini文件配置,p2p_ip改为对应的外网 IP, rpc_ip 要修改为内网 ip
。机构A 和机构B分别有两个节点,可以参照图中复制。

P2P端口,用于区块链节点之间的互联,包括机构内的多个节点,以及多机构间节点和节点的互联。如果其他节点在机构外,那么这个连接要监听公网地址,或者监听内网,且由连接公网的网关(如nginx)转发网络连接。

RPC是客户端与区块链系统交互的一套协议和接口,用户通过RPC接口可查询区块链相关信息(如块高、区块、节点连接等)和发送交易。

详细参考https://mp.weixin.qq.com/s/IiHsPlxmvEEBTC84n27I9A

fb82f33047ddd0957da4e9a5ccd60629.png

机构A和机构B配置如图

(13)机构 A 生成节点证书及 P2P 连接信息文件,在机构A终端输入命令。

./generator --generate_all_certificates ./agencyA_node_info

(14)机构 B 生成节点证书及 P2P 连接信息文件,在机构B终端输入命令。

./generator --generate_all_certificates ./agencyB_node_info

备注:假如机构 B 这一步操作失误,需要删除 agencyB_node_info 文件夹,以及 meta
文件夹下生成的节点文件和信息,只保留如下内容

9ffa2803f97550271229de5dcc508ed8.png

Meta文件夹清单图

(15)创世机构收集节点证书

生成创世区块的机构需要节点证书,示例中由 A 机构生成创世区块,因此 B
机构除了发送节点 P2P 连接地址文件外,还需发送节点证书至机构 A

将机构 B 节点 agencyB_node_info 文件夹 cert_*.crt 文件 copy 到机构 A 的 meta
文件夹中

cad557c26a084455f505a1528e8f884d.png

Meta文件夹目录清单图

各机构节点连接信息 相互收集

比如:机构 A 的 meta 文件夹下多了 peersB,txt,机构 B 的 meta 文件夹下多了
peersA.txt;各种机构的meta目录下,都留存对方的节点连接信息。

(16) 机构 A 生成群组 1创世区块

在 /home/ubuntu/generator/conf目录下,配置 group_genesis.ini

[group]

group_id=1

[nodes]

node0=服务器B的 IP:30300

node1=服务器B的 IP:30301

node2=服务器A的IP:30300

node3=服务器 A 的 IP:30301

在机构A的服务器终端生成群组1的创世区块,在终端执行命令。

./generator --create_group_genesis ./group

(17)分发群组 1 创世区块至机构 B

手动通过winscp工具复制 机构 A ./group/group.1.genesis 文件到机构 B 的 meta
文件夹下

(18)机构A生成所属节点

./generator --build_install_package ./meta/peersB.txt ./nodeA

(19)机构B 生成所属节点

./generator --build_install_package ./meta/peersA.txt ./nodeB

(20)在机构A和机构B启动节点

在终端目录/home/ubuntu/generator目录下启动节点,分别执行如下命令。

bash ./nodeA/start_all.sh

857ac058cd1cfa87c4a581505d1f810b.png

部署报错图

备注:运行到这个步骤可能出错,通常排查问题:先查看服务器开放所有端口;再次使用命令。查找端口是否被占用;

9f58b05223aab2d38ca6e13527335fbc.png

云端安全组配置图

根据端口查找进程,执行如下命令。,其中port端口改为20201

sudo lsof -i:[port]

. 根据PID杀掉进程,执行具体命令。

sudo kill [PID]

最后查找日志

d077878241a43075a08f3f00bc98d892.png

日志文件图

报错信息如下:

error|2019-11-08 10:45:48.895460|INITIALIZERInit

failed,EINFO=/FISCO-BCOS/libinitializer/RPCInitializer.cpp(93):

Throw in function void

dev::initializer::RPCInitializer::initChannelRPCServer(const

boost::property_tree::ptree &)

Dynamic exception type:

boost::exception_detail::clone_impl<dev::ListenPortIsUsed>

std::exception::what: std::exception

[dev::tag_comment*] = Please check channel_listenIP and

channel_listen_port are valid

问题定位:这个是 rpc 没有监听到,四个节点的 rpc 都要进行修改。

官方配置说明:

https://fisco-bcos-

documentation.readthedocs.io/zh_CN/latest/docs/manual/configuration.html#config-ini

修改 NodeA 文件夹中和 NodeB 文件夹中四个节点的 config.ini 文件

27ab7aba67971f8b91b8734fcc257d25.png

config.ini配置修改图

再次启动两个机构的所有节点

bash ./nodeA/start_all.sh

bash ./nodeB/start_all.sh

都是启动成功

cf04ecc021bbeb39b8868acd75204c74.png

机构B节点启动成功状态图

(21)查看进程,执行命令。

ps -ef | grep fisco

(21)查看节点 log,执行命令。

tail -f ./node*/node*/log/log* | grep +++

298001402f06b610523532014aba4a0c.png

节点log 正常共识图

0 条评论

发布
问题