2024-04-20
区块链学习笔记
00
请注意,本文编写于 364 天前,最后修改于 364 天前,其中某些信息可能已经过时。

目录

企业级运维部署工具建链
一、下载安装
背景介绍
1.节点组网拓扑结构
2.机器环境
3.部署网络
4.机构填写节点信息
5.生成节点
6.启动节点
7.查看节点运行状态
二、新增节点 (扩容新节点)
1.初始化扩容配置
2.拷贝链证书及私钥至扩容文件夹
3.机构A配置节点信息
4.机构C配置节点信息
5.生成扩容节点
6.启动新节点
7.使用控制台注册节点
8.查看机构A节点4

企业级运维部署工具建链

one_click_generator.sh脚本为根据用户填写的节点配置,一键部署联盟链的脚本。脚本会根据用户指定文件夹下配置的node_deployment.ini,在文件夹下生成相应的节点。

本章主要以部署3机构2群组6节点的组网模式,为用户讲解单机构一键部署运维部署工具的使用方法。

本教程适用于单机构搭建所有节点的部署方式,运维部署工具多机构部署教程可以参考使用运维部署工具。

注意

一键部署脚本使用时需要确保当前meta文件夹下不含节点证书信息,请清空meta文件夹。

一、下载安装

下载

shell
cd ~/ git clone https://github.com/FISCO-BCOS/generator.git # 若因为网络问题导致长时间无法下载,请尝试以下命令: git clone https://gitee.com/FISCO-BCOS/generator.git

安装
此操作要求用户具有sudo权限。

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

检查是否安装成功,若成功,输出 usage: generator xxx

shell
./generator -h

获取节点二进制
拉取最新fisco-bcos二进制文件到meta中,如果网络较差,可以尝试通过其他方式下载fisco-bcos,或使用--cdn选项,并将下载好的二进制放置于meta文件夹下

shell
./generator --download_fisco ./meta

检查二进制版本


若成功,输出 FISCO-BCOS Version : x.x.x-x
shell
./meta/fisco-bcos -v

PS:源码编译节点二进制的用户,只需要用编译出来的二进制替换掉meta文件夹下的二进制即可。

背景介绍

本节以部署6节点3机构2群组的组网模式,演示如何使用运维部署工具一键部署功能,搭建区块链。

1.节点组网拓扑结构


一个如图所示的6节点3机构2群组的组网模式。机构B和机构C分别位于群组1和群组2中。机构A同属于群组1和群组2中。

image.png

2.机器环境

机构节点所属群组P2P地址RPCChannel监听地址
机构A节点0群组1、2127.0.0.1:30300127.0.0.1:85450.0.0.0:20200
节点1群组1、2127.0.0.1:30301127.0.0.1:85460.0.0.0:20201
节点4群组1、2127.0.0.1:30304127.0.0.1:85490.0.0.0:20202
机构B节点2群组1127.0.0.1:30302127.0.0.1:85470.0.0.0:20203
节点3群组1127.0.0.1:30303127.0.0.1:85480.0.0.0:20204
机构C节点5群组1、2127.0.0.1:30305127.0.0.1:85500.0.0.0:20205

相关信息

  • 云主机的公网IP均为虚拟IP,若rpc_ip/p2p_ip/channel_ip填写外网IP,会绑定失败,须填写0.0.0.0

  • RPC/P2P/Channel监听端口必须位于1024-65535范围内,且不能与机器上其他应用监听端口冲突

  • 出于安全性和易用性考虑,FISCO BCOS v2.3.0版本最新节点config.ini配置将listen_ip拆分成jsonrpc_listen_ip和channel_listen_ip,但仍保留对listen_ip的解析功能,详细请参考 这里

  • 为便于开发和体验,channel_listen_ip参考配置是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如:内网IP或特定的外网IP

3.部署网络

首先完成如图所示机构A、B搭建群组1的操作:

image.png
使用前用户需准备如图如tmp_one_click的文件夹,在文件夹下分别拥有不同机构的目录,每个机构目录下需要有对应的配置文件node_deployment.ini。使用前需要保证generator的meta文件夹没有进行过任何操作。

查看一键部署模板文件夹:

shell
cd ~/generator ls ./tmp_one_click

提示

参数解释
如需多个机构,需要手动创建该文件夹
tmp_one_click # 用户指定进行一键部署操作的文件夹
├── agencyA # 机构A目录,命令执行后会在该目录下生成机构A的节点及相关文件
│ └── node_deployment.ini # 机构A节点配置文件,一键部署命令会根据该文件生成相应节点
└── agencyB # 机构B目录,命令执行后会在该目录下生成机构B的节点及相关文件
└── node_deployment.ini # 机构B节点配置文件,一键部署命令会根据该文件生成相应节点

4.机构填写节点信息

教程中将配置文件放置与tmp_one_click文件夹下的agencyA, agencyB下

shell
cat > ./tmp_one_click/agencyA/node_deployment.ini << EOF [group] group_id=1 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30300 channel_listen_port=20200 jsonrpc_listen_port=8545 [node1] p2p_ip=127.0.0.1 rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30301 channel_listen_port=20201 jsonrpc_listen_port=8546 EOF

5.生成节点

shell
bash ./one_click_generator.sh -b ./tmp_one_click

执行完毕后,./tmp_one_click文件夹结构如下:

查看执行后的一键部署模板文件夹:

shell
ls ./tmp_one_click

提示

├── agencyA # A机构文件夹
│ ├── agency_cert # A机构证书及私钥
│ ├── generator-agency # 自动代替A机构进行操作的generator文件夹 │ ├── node # A机构生成的节点,多机部署时推送至对应服务器即可
│ ├── node_deployment.ini # A机构的节点配置信息
│ └── sdk # A机构的sdk或控制台配置文件
├── agencyB
| ├── agency_cert
| ├── generator-agency
| ├── node
| ├── node_deployment.ini
| └── sdk
|── ca.crt # 链证书
|── ca.key # 链私钥
|── group.1.genesis # 群组1创世区块
|── peers.txt # 节点的peers.txt信息

6.启动节点

调用脚本启动节点:

shell
bash ./tmp_one_click/agencyA/node/start_all.sh bash ./tmp_one_click/agencyB/node/start_all.sh

查看节点进程:

shell
ps -ef | grep fisco

7.查看节点运行状态

查看节点log:

shell
tail -f ~/generator/tmp_one_click/agency*/node/node*/log/log* | grep +++
shell
# 命令解释 # +++即为节点正常共识 info|2024-04-20 18:17:33.586835|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=e508ebe9... info|2024-04-20 18:17:34.590705|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=fbba2141... info|2024-04-20 18:17:35.598690|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=23c1b21c...

二、新增节点 (扩容新节点)

注意

一键部署脚本使用时需要确保当前meta文件夹下不含节点证书信息,请清空meta文件夹。

接下来,我们为机构A和机构C增加新节点,完成下图所示的组网:

image.png

1.初始化扩容配置

创建扩容文件夹,示例中tmp_one_click_expand可以为任意名称,请每次扩容使用新的文件夹

shell
mkdir ~/generator/tmp_one_click_expand/

2.拷贝链证书及私钥至扩容文件夹

shell
cp ~/generator/tmp_one_click/ca.* ~/generator/tmp_one_click_expand/

拷贝群组1创世区块group.1.genesis至扩容文件夹

shell
cp ~/generator/tmp_one_click/group.1.genesis ~/generator/tmp_one_click_expand/

拷贝群组1节点P2P连接文件peers.txt至扩容文件夹

shell
cp ~/generator/tmp_one_click/peers.txt ~/generator/tmp_one_click_expand/

3.机构A配置节点信息

创建机构A扩容节点所在目录

shell
mkdir ~/generator/tmp_one_click_expand/agencyA

此时机构A已经存在联盟链中,因此需拷贝机构A证书、私钥至对应文件夹

shell
cp -r ~/generator/tmp_one_click/agencyA/agency_cert ~/generator/tmp_one_click_expand/agencyA

机构A填写节点配置信息

shell
cat > ./tmp_one_click_expand/agencyA/node_deployment.ini << EOF [group] group_id=1 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30304 channel_listen_port=20204 jsonrpc_listen_port=8549 EOF

4.机构C配置节点信息

创建机构C扩容节点所在目录

shell
mkdir ~/generator/tmp_one_click_expand/agencyC

机构C填写节点配置信息

shell
cat > ./tmp_one_click_expand/agencyC/node_deployment.ini << EOF [group] group_id=1 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30305 channel_listen_port=20205 jsonrpc_listen_port=8550 EOF

5.生成扩容节点

shell
bash ./one_click_generator.sh -e ./tmp_one_click_expand

6.启动新节点

调用脚本启动节点:

shell
bash ./tmp_one_click_expand/agencyA/node/start_all.sh bash ./tmp_one_click_expand/agencyC/node/start_all.sh

查看节点进程:

shell
ps -ef | grep fisco
shell
# 命令解释 # 可以看到如下进程 fisco-b+ 5560 1 0 18:36 pts/0 00:00:01 /home/fisco-bcos/generator/tmp_one_click_expand/agencyC/node/node_127.0.0.1_30305/fisco-bcos -c config.ini fisco-b+ 5679 1 0 18:36 pts/0 00:00:01 /home/fisco-bcos/generator/tmp_one_click_expand/agencyA/node/node_127.0.0.1_30304/fisco-bcos -c config.ini fisco-b+ 5874 1 1 18:39 pts/0 00:00:00 /home/fisco-bcos/generator/tmp_one_click/agencyA/node/node_127.0.0.1_30301/fisco-bcos -c config.ini fisco-b+ 5876 1 1 18:39 pts/0 00:00:00 /home/fisco-bcos/generator/tmp_one_click/agencyA/node/node_127.0.0.1_30300/fisco-bcos -c config.ini fisco-b+ 6106 1 1 18:39 pts/0 00:00:00 /home/fisco-bcos/generator/tmp_one_click/agencyB/node/node_127.0.0.1_30302/fisco-bcos -c config.ini fisco-b+ 6108 1 1 18:39 pts/0 00:00:00 /home/fisco-bcos/generator/tmp_one_click/agencyB/node/node_127.0.0.1_30303/fisco-bcos -c config.ini

注意

为群组1扩容的新节点需要使用sdk或控制台加入到群组中。

7.使用控制台注册节点

由于控制台体积较大,一键部署中没有直接集成,用户可以使用以下命令获取控制台

相关信息

企业部署工具会根据generator/meta文件夹下的机构证书及私钥生成sdk相应证书,如需手动生成可以参考操作手册中的generate_sdk_certificate命令

获取控制台,可能需要较长时间,国内用户可以使用--cdn命令:

以机构A使用控制台为例,此步需要切换到机构A对应的generator-agency文件夹

shell
cd ~/generator/tmp_one_click/agencyA/generator-agency ./generator --download_console ./ --cdn

8.查看机构A节点4

机构A使用控制台加入机构A节点4为共识节点,其中参数第二项需要替换为加入节点的nodeid,nodeid在节点文件夹的conf的node.nodeid文件

查看机构A节点nodeid:

shell
cat ~/generator/tmp_one_click_expand/agencyA/node/node_127.0.0.1_30304/conf/node.nodeid
shell
# 命令解释 # 可以看到类似于如下nodeid,控制台使用时需要传入该参数 dae28f7392cbc9faf56ae889a32021d527c9ec2fd398a5c03ff30fdd00afa6138581a2e18808fa9a122a31defc5863fea7d2b4f248c874b4c4ce0c5b178a5817

本文作者:苏皓明

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!