实验目的
本实验将演示如何使用开发部署工具搭建
FISOC BCOS
并行多组网络节点,通过先在单机上部署一条单群组 4
节点的区块链,再为该区块链添加一个群组的方式来搭建一个并行多组区块链网络
1
、场景描述
本次实验将构建
四节点、两群组
的并行多组网络区块链,他们的组网关系如下:
群组
1
:包括四个节点,节点
IP
均为
127.0.0.1
群组
2
:包括四个节点,节点
IP
均为
127.0.0.1
关系图如下:

2.2
下载工具
①、创建
fisco
工作目录
在终端输入如下命令,创建
fisco
目录并进入
mkdir fisco && cd fisco

②、下载工具
在
fisco
目录下,输入如下命令,下载开发部署工具
build_chain.sh
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh

③、修改脚本权限
输入如下命令,可查看刚才下载的开发部署工具
build_chain.sh
,此时该文件名显示白色,无执行权限
chmod u+x build_chain.sh
输入以下命令,修改脚本执行权限,权限修改成功后,再次输入
'ls'
命令,可看到文件名变为绿色

3
、检查端口占用
3.1
检查
p2p
端口是否占用
输入如下命令,检查
p2p
端口(
30300-30303
)是否占用,若端口没有被占用,则不会输出任何信息
lsof -i:30300-30303

3.2
检查
channel
端口是否占用
输入如下命令,检查
channel
端口(
20200-20203
)是否占用,若端口没有被占用,则不会输出任何信息
lsof -i:20200-20203

3.3
检查
rpc
端口是否占用
输入如下命令,检查
rpc
端口(
8545-8548
)是否占用,若端口没有被占用,则不会输出任何信息
lsof -i:8545-8548

4
、构建并行多组网络节点
说明:在并行多组网络的构建场景中,我们为演示并行多组的扩容流程,将先构建单群组四节点网络,
随后将群组
2
加入到区块链中,当然,并行多组的构建也可以采用星型拓扑组网的构建方式。
4.1
构建单群组四节点区块链网络
①、首先,输入如下命令,构建一个单群组四节点的网络
bash build_chain.sh -l 127.0.0.1:4 -o multi_nodes -p 30300,20200,8545
参数说明:
-l
:用于指定要生成的链的
IP
列表以及每个
IP
下的节点数,以逗号分隔。
-o
:指定生成的配置所在的目录,默认为
nodes
。
-p
:分别指定节点的
p2p, channel, jsonrpc
端口,同一个
IP
下的不同节点所使用端口从起始端口
递增。

出现
[INFO ALL completed]
信息则说明节点构建成功。
输入如下命令,运行所有节点
bash multi_nodes/127.0.0.1/start_all.sh

③、输入如下命令,查看节点进程,正常情况下应该有
4
个节点进程
ps -ef | grep -v grep | grep fisco-bcos

④、输入如下命令,查看节点
node0
的共识状态,出现
“[SEALER]++++++++++++++++”
信息表示共识 正常。
tail -f multi_nodes/127.0.0.1/node0/log/* | grep +++

4.2
将群组
2
加入区块链
①、输入如下命令,可查看节点
node0
目录下的群组配置文件
group.1.genesis
和
group.1.ini
ls multi_nodes/127.0.0.1/node0/conf/

由于在并行多组区块链中,每个群组的
ini
文件文件相同, 但
genesisi
文件中的
[group.id]
不同,为
群组号,所以我们需要拷贝群组
1
的配置文件(
genesis
和
ini
文件),并修改拷贝后
genesis
文件。
②、为减少路径输入引起的麻烦和错误,我们先进入节点目录:
cd multi_nodes/127.0.0.1

③、拷贝节点
node0
中的群组
1
的配置文件
group.1.genesis
,并将其命名为
group.2.genesis
cp node0/conf/group.1.genesis node0/conf/group.2.genesis

输入如下命令验证拷贝是否成功,如出现
group.2.genesis
文件则说明成功

接着拷贝节点
node0
中的群组
1
的配置文件
group.1.ini
,并将其命名为
group.2.ini
cp node0/conf/group.1.ini node0/conf/group.2.ini
输入如下命令验证拷贝是否成功,如出现
group.2.ini
文件则说明成功
ls node0/conf/
④、输入如下命令,修改
group.2.genesis
文件中的
id
参数
sed -i "s/id=1/id=2/g" node0/conf/group.2.genesis
输入如下命令,验证是否修改成功
cat node0/conf/group.2.genesis | grep "id"
⑤、自此,节点
node0
的配置已经完成,接下来我们依次将群组
2
的配置文件拷贝到其余节点。
将节点
node0
中的群组
2
配置文件(
genesis
和
ini
文件)拷贝到节点
node1
cp node0/conf/group.2.genesis node1/conf/group.2.genesis
cp node0/conf/group.2.ini node1/conf/group.2.ini
输入如下命令检查是否拷贝成功,若出现
group.2.genesis
和
group.2.ini
文件表示拷贝成功
ls node1/conf/
将节点
node0
中的群组
2
配置文件(
genesis
和
ini
文件)拷贝到节点
node2
de0/conf/group.2.genesis node2/conf/group.2.genesis
cp node0/conf/group.2.ini node2/conf/group.2.ini
输入如下命令检查是否拷贝成功,若出现
group.2.genesis
和
group.2.ini
文件表示拷贝成功
ls node2/conf/
将节点
node0
中的群组
2
配置文件(
genesis
和
ini
文件)拷贝到节点
node3
cp node0/conf/group.2.genesis node3/conf/group.2.genesis
cp node0/conf/group.2.ini node3/conf/group.2.ini
输入如下命令检查是否拷贝成功,若出现
group.2.genesis
和
group.2.ini
文件表示拷贝成功
ls node2/conf/
5
、重启节点并查看节点运行状态
5.1
重启节点
①、输入如下命令,停止各个节点
bash stop_all.sh
②、输入如下命令,重启各个节点
bash start_all.sh
5.2
查看节点共识情况
①、输入如下命令,可查看节点
node0
的共识情况(这里只需要改node0,node1)
tail -f node0/log/log* | grep +++