使用企业级部署工具¶
考虑到联盟链多个企业地位对等安全的诉求,FISCO BCOS企业级部署工具提供一种多机构间合作部署联盟链的方式。
本章主要以部署2群组6节点的组网模式,为用户讲解企业级部署工具的使用方法。
如果想要体验多机构对等部署联盟链的教程,可以跳过本教程,直接进行使用企业级部署工具-多机构部署
下载安装¶
使用前请确认已经满足环境依赖
$ git clone https://github.com/FISCO-BCOS/generator.git
$ cd generator
$ bash ./scripts/install.sh
$ ./generator -h
在使用本工具时,需要在meta文件夹下放置fisco-bcos二进制程序(除demo命令外),fisco-bcos二进制程序的生成方式可以通过以下方式获取:
用户可以自由选择以下任一方式获取FISCO BCOS可执行程序。推荐从GitHub下载预编译二进制。
- 官方提供的静态链接的预编译文件,可以在Ubuntu 16.04和CentOS 7.2以上版本运行。
# 准备fisco-bcos二进制文件
$ bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/release-2.0.1/tools/ci/download_bin.sh) -o ./meta
# 检查二进制是否可执行 执行下述命令,看是否输出版本信息
$ ./meta/fisco-bcos -v
- 源码编译获取可执行程序,参考源码编译。
示例分析¶
在本节中,我们将在本机IP为127.0.0.1生成一个如图所示网络拓扑结构为2群组6节点的组网模式,每个节点的ip,端口号分别为:
重要
使用前请确认已经完成了上述中的 下载安装 步骤

群组1 :
| 节点序号 | P2P地址 | RPC/channel地址 |
|---|---|---|
| 节点0 | 127.0.0.1:30300 | 127.0.0.1:8545/:20200 |
| 节点1 | 127.0.0.1:30301 | 127.0.0.1:8546/:20201 |
| 节点2 | 127.0.0.1:30302 | 127.0.0.1:8547/:20202 |
| 节点3 | 127.0.0.1:30303 | 127.0.0.1:8548/:20203 |
| 节点4 | 127.0.0.1:30304 | 127.0.0.1:8549/:20204 |
| 节点5 | 127.0.0.1:30305 | 127.0.0.1:8550/:20205 |
群组2 :
| 节点序号 | P2P地址 | RPC/channel地址 |
|---|---|---|
| 节点0 | 127.0.0.1:30300 | 127.0.0.1:8545/:20200 |
| 节点1 | 127.0.0.1:30301 | 127.0.0.1:8546/:20201 |
| 节点2 | 127.0.0.1:30302 | 127.0.0.1:8547/:20202 |
| 节点3 | 127.0.0.1:30303 | 127.0.0.1:8548/:20203 |
配置文件中字段的含义解释如下:
| 节点序号 | 节点在配置文件中的序号 |
| P2P地址 | 节点之间p2p通信地址 |
| RPC地址 | 节点与SDK通信地址 |
假设如图所示,联盟链中共有2个群组,4个节点。
群组1中有6个节点,节点序号为0、1、2、3,之后扩容节点4、5。
群组2中有4个节点,节点序号为0、1、2、3。
组网步骤如下:
构建第一个群组¶
1.修改mchain.ini中的配置项,使其指向对应节点的ip,端口号,指定组id为group1,教程中采用默认设置
[group]
group_id=1
[node0]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
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
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546
[node2]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
[node3]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
2.生成节点序号为0、1、2、3的证书和私钥,并导入meta文件夹
注解
实际应用中,证书和私钥应该由用户自己生成,只需将证书导入工具。 本示例中生成的证书机构名默认为agency_fisco,根证书私钥和机构证书私钥默认放置在meta文件夹下,节点证书和私钥放置在用户指定目录下,本例中为./mycert
$ ./generator --generate_all_certificates ./mycert
3.使用build命令,在data下生成group1节点配置文件
$ ./generator --build_install_package ./data
执行成功后在./data目录下可以看到
.
# 节点配置文件及群组配置文件
|-- config.ini
|-- group.1.genesis
|-- group.1.ini
# 监控脚本
|-- monitor
# 节点配置文件
|-- node_127.0.0.1_30300
|-- node_127.0.0.1_30301
|-- node_127.0.0.1_30302
|-- node_127.0.0.1_30303
# 操作脚本
|-- start_all.sh
|-- stop_all.sh
4.导入节点私钥到对应节点配置文件的conf文件夹下
上述3.中生成的节点配置文件夹是不含节点私钥的,需要导入2.中的节点私钥,命令如下
$ ./generator --deploy_private_key ./mycert ./data
5.启动节点
导入私钥后即可启动节点:
cd ./data
$ ./start_all.sh
查看节点进程:
$ ps -ef | grep fisco
# 可以看到如下所示的三个进程
fisco 15347 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30300/fisco-bcos -c config.ini
fisco 15402 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30301/fisco-bcos -c config.ini
fisco 15457 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30302/fisco-bcos -c config.ini
fisco 15498 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30303/fisco-bcos -c config.ini
查看节点log:
$ tail -f data/node*/log/log* | grep +++
# +++即为节点正常共识
info|2019-02-25 17:25:56.028692| [g:1][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=833bd983...
info|2019-02-25 17:25:59.058625| [g:1][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=343b1141...
info|2019-02-25 17:25:57.038284| [g:1][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=1,hash=ea85c27b...
至此 我们完成了如图所示构建group1的操作。

扩容两个节点¶
# 回到上级目录
cd ..
# 生成扩容节点所需证书和私钥
./generator --expand_all_certificates ./myexpandcert
# 拷贝群组1配置文件
cp ./data/group.1.genesis ./meta # 由于扩容步骤在本地完成,此步已经生成过群组创世区块文件
# 生成扩容配置文件夹
./generator --build_expand_package ./expand
# 导入私钥至扩容配置文件夹
./generator --deploy_private_key ./myexpandcert ./expand
# 启动节点
cd ./expand
./start_all.sh
# 查看节点进程
ps aux| grep fisco-bcos |grep -v grep
# 返回上级目录
cd ..
可以看到现在一共有六个fisco-bcos进程存在,但扩容了两个节点尚未经过group1中的节点共识
注解
生成扩容配置文件夹时需要fisco-bcos可执行文件、group.1.genesis和group.1.ini
构建第二个群组¶
构建group1的操作中,我们已经生成了一条具有6个节点,处于群组group1中的联盟链,接下来将新建有4个节点的群组group2。

修改mgroup.ini中的配置项,使其指向对应节点的ip,端口号,指定组id为group2,教程中使用默认设置
[group]
group_id=2
[member]
member0=127.0.0.1:30300
member1=127.0.0.1:30301
member2=127.0.0.1:30302
member3=127.0.0.1:30303
操作步骤如下:
# 生成group2群组配置文件
./generator --create_group_config ./data
cd ./data
# 拷贝群组配置至节点文件夹
cp group.2.ini group.2.genesis ./node_127.0.0.1_30300/conf/
cp group.2.ini group.2.genesis ./node_127.0.0.1_30301/conf/
cp group.2.ini group.2.genesis ./node_127.0.0.1_30302/conf/
cp group.2.ini group.2.genesis ./node_127.0.0.1_30303/conf/
# 重启节点
./stop_all.sh
./start_all.sh
此时,可以看到查看节点进程已经从新启动
$ ps -ef | grep fisco
# 可以看到如下所示的四个进程
fisco 16356 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30300/fisco-bcos -c config.ini
fisco 16422 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30301/fisco-bcos -c config.ini
fisco 16467 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30302/fisco-bcos -c config.ini
fisco 16489 1 0 17:22 pts/2 00:00:00 ~/generator/data/node_127.0.0.1_30303/fisco-bcos -c config.ini
查看节点log:
$ tail -f data/node*/log/log* | grep +++
# 看到g:2 +++ 即为群组2正常共识
info|2019-02-25 17:25:56.028692| [g:2][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=833bd983...
info|2019-02-25 17:25:59.058625| [g:1][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=343b1141...
info|2019-02-25 17:25:57.038284| [g:2][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=1,hash=ea85c27b...
至此 我们完成了所示构建群组group2的操作。
通过本节教程,我们在本机生成一个网络拓扑结构为2群组6节点的多群组架构联盟链。
如果使用该教程遇到问题,请查看FAQ