这里已经安装好操作环境,如果没安装请参考 FISCO-BCOS 2.0 星型并行多组国密搭建教程
本文Linux系统全部以ubuntu-22.04.2-desktop-amd64为例
星型拓扑结构是区块链中常用的组网方式,区块链中运行多个机构节点,中心机构节点同属于多个群组,其他每家机构属于不同的群组,本节将使用开发部署工具搭建一个单机、4机构、3群组、8节点的 FISCO BCOS 联盟链,组网结构如图:
agencyA:在127.0.0.1上有两个节点,同时属于group1、group2和group3
agencyB:在127.0.0.1上有两个节点,同时属于group1
agencyC:在127.0.0.1上有两个节点,同时属于group2
agencyD:在127.0.0.1上有两个节点,同时属于group3
注意参数之间的空格,不能有空行
shellfisco-bcos@fiscobcos:~/fisco$ cat > ipconf << EOF
> 127.0.0.1:2 agencyA 1,2,3
> 127.0.0.1:2 agencyB 1
> 127.0.0.1:2 agencyC 2
> 127.0.0.1:2 agencyD 3
> EOF
相关信息
组网配置文件内容的格式:
IP:NUM AgencyName GroupList
IP:NUM : 机器的IP地址以及该机器上的节点数
AgencyName : 机构名,用于指定使用的机构证书
GroupList : 改行生成的节点所属的组,若有多个群组,以 “,” 分割。
shellbash build_chain.sh -f ipconf -p 30300,20200,8545
输出以下All completed
表示构建成功
shellfisco-bcos@fiscobcos:~/fisco$ bash build_chain.sh -f ipconf -p 30300,20200,8545
[INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ...
################################################################################################################################################################# 100.0%
build_chain.sh: 行 1644: [[: 50440597
12111170: 表达式中有语法错误(错误记号是 "12111170")
==============================================================
Generating CA key...
==============================================================
Generating keys and certificates ...
Processing IP=127.0.0.1 Total=2 Agency=agencyA Groups=1,2,3
Processing IP=127.0.0.1 Total=2 Agency=agencyB Groups=1
Processing IP=127.0.0.1 Total=2 Agency=agencyC Groups=2
Processing IP=127.0.0.1 Total=2 Agency=agencyD Groups=3
==============================================================
Generating configuration files ...
Processing IP=127.0.0.1 Total=2 Agency=agencyA Groups=1,2,3
Processing IP=127.0.0.1 Total=2 Agency=agencyB Groups=1
Processing IP=127.0.0.1 Total=2 Agency=agencyC Groups=2
Processing IP=127.0.0.1 Total=2 Agency=agencyD Groups=3
==============================================================
Group:1 has 4 nodes
Group:2 has 4 nodes
Group:3 has 4 nodes
==============================================================
[INFO] IP List File : ipconf
[INFO] Start Port : 30300 20200 8545
[INFO] Server IP : 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2
[INFO] Output Dir : /home/fisco-bcos/fisco/nodes
[INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/
[INFO] RSA channel : true
==============================================================
[INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console.
e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f
==============================================================
[INFO] All completed. Files in /home/fisco-bcos/fisco/nodes
注意
如果构建失败请检查ipconf文件里面的内容是否正确
启动构建好的星型拓扑网络
shellfisco-bcos@fiscobcos:~/fisco$ bash nodes/127.0.0.1/start_all.sh
输出以下内容表示启动成功,在这里能看到8个节点启动成功
shelltry to start node0 try to start node1 try to start node2 try to start node3 try to start node4 try to start node5 try to start node6 try to start node7 node2 start successfully node0 start successfully node7 start successfully node4 start successfully node3 start successfully node6 start successfully node5 start successfully node1 start successfully
注意
如果启动失败或者启动不了全部节点,请检查ipconf文件里面的内容是否正确,尝试分别启动各个节点
检查端口是否被占用lsof -i:端口号
,进行查看,如果端口被占用,更换端口或 kill 占用端口的进程
查看进程
shellps -ef | grep -v grep | grep fisco-bcos
正常情况下能够看见8个进程,如果没有请检查端口是否被占用
shellfisco-b+ 3849 1 1 18:50 pts/0 00:00:12 /home/fisco-bcos/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini fisco-b+ 3851 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node4/../fisco-bcos -c config.ini fisco-b+ 3853 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini fisco-b+ 3855 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node7/../fisco-bcos -c config.ini fisco-b+ 3857 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini fisco-b+ 3859 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node5/../fisco-bcos -c config.ini fisco-b+ 3862 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node6/../fisco-bcos -c config.ini fisco-b+ 3866 1 1 18:50 pts/0 00:00:11 /home/fisco-bcos/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
提示
节点的群组划分是按照顺序进行划分的
127.0.0.1:2 agencyA 1,2,3 包括的节点 node0 node1
127.0.0.1:2 agencyB 1 包括的节点 node2 node3
127.0.0.1:2 agencyC 2 包括的节点 node4 node5
127.0.0.1:2 agencyD 3 包括的节点 node6 node7
查看angencyA机构节点共识
shelltail -f nodes/127.0.0.1/node0/log/log* | grep +++
可以看到angencyA中的node0节点在其他群组都有共识
shellinfo|2024-03-30 18:59:59.550188|[g:2][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=8c88cefd... info|2024-03-30 18:59:59.566130|[g:3][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=8aa05d40... info|2024-03-30 19:04:20.167967|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=21e0e458...
查看angencyB机构节点共识
shellfisco-bcos@fiscobcos:~/fisco$ tail -f nodes/127.0.0.1/node2/log/log* | grep +++
可以看到agencyB中的节点在群组1中共识
shellinfo|2024-03-30 18:59:59.568219|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=1e20f24d... info|2024-03-30 19:16:05.748317|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=9328d76a... info|2024-03-30 19:16:09.762121|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=b2099105...
在这里就用前两个群组进行演示,其他的可以自行进行测试
这里就用node0 进行演示
shellfisco-bcos@fiscobcos:~/fisco$ tail -f nodes/127.0.0.1/node0/log/log* | grep connected
可以看到node0的与其他7个节点都有连接,其他的几个节点是同样的
shellinfo|2024-03-30 19:26:17.750329|[P2P][Service] heartBeat,connected count=7
场景描述:
本节将使用开发部署工具搭建一个单机、2群组、4节点的FISCO BCOS联盟链,为演示并行多组的扩容流程,将先构建单群组四节点网络,随后将群组2加入区块链中,组网结构 如图所示:
在演示前需要先搭建单群组四节点
shellbash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
出现All completed
代表构建成功
shell[INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ...
curl: (92) HTTP/2 stream 1 was not closed cleanly before end of the underlying stream
[INFO] Download speed is too low, try https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/fisco-bcos.tar.gz
################################################################################################################################################################# 100.0%
build_chain.sh: 行 1644: [[: 50440597
12111170: 表达式中有语法错误(错误记号是 "12111170")
==============================================================
Generating CA key...
==============================================================
Generating keys and certificates ...
Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1
==============================================================
Generating configuration files ...
Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1
==============================================================
[INFO] Start Port : 30300 20200 8545
[INFO] Server IP : 127.0.0.1:4
[INFO] Output Dir : /home/fisco-bcos/fisco/nodes
[INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/
[INFO] RSA channel : true
==============================================================
[INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console.
e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f
==============================================================
[INFO] All completed. Files in /home/fisco-bcos/fisco/node
shellbash nodes/127.0.0.1/start_all.sh
输出以下信息表示成功启动
shelltry to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node2 start successfully node3 start successfully node1 start successfully
检查进程
shellps -ef | grep -v grep | grep fisco-bcos
检查共识
shelltail -f nodes/127.0.0.1/node0/log/log* | grep ++++
检查连接数
shelltail -f nodes/127.0.0.1/node0/log/log* | grep connected
由于在并行多组区块链中,每个群组的 ini 文件相同,但 genesisi文件中的 [group.id]不同,为群组号,所以我们需要拷贝群组1的配置文件(genesis和ini文件),并修改genesis文件中的群组号。然后更改文件 group.1.* 为 group.2.* 在拷贝到其他节点的相同目录下
为了减少路径输入引起的麻烦和错误,这里就先进入节点目录
shellcd nodes/127.0.0.1/
拷贝group.1.genesis为group.2.genesis
shellcp node0/conf/group.1.genesis node0/conf/group.2.genesis
shellcp node0/conf/group.1.ini node0/conf/group.2.ini
可以看到拷贝成功
shellfisco-bcos@fiscobcos:~/fisco/nodes/127.0.0.1$ ls node0/conf/ ca.crt channel_cert group.1.genesis group.1.ini group.2.genesis group.2.ini node.crt node.key node.nodeid
因为两个群组中只有group.id不同所以只需要修改id
shellsed -i "s/id=1/id=2/g" node0/conf/group.2.genesis
可以看到已经修改成功
shellfisco-bcos@fiscobcos:~/fisco/nodes/127.0.0.1$ cat node0/conf/group.2.genesis | grep "id" ; the node id of consensusers id=2
拷贝文件
shellcp node0/conf/group.2.ini node1/conf cp node0/conf/group.2.ini node2/conf cp node0/conf/group.2.ini node3/conf cp node0/conf/group.2.genesis node3/conf cp node0/conf/group.2.genesis node2/conf cp node0/conf/group.2.genesis node1/conf
查看是否拷贝成功
shellnode1/conf ca.crt channel_cert group.1.genesis group.1.ini group.2.genesis group.2.ini node.crt node.key node.nodeid
重启节点加载文件
shellbash stop_all.sh && bash start_all.sh
重启成功
shelltry to stop node0 try to stop node1 try to stop node2 try to stop node3 stop node0 success. stop node2 success. stop node3 success. stop node1 success. try to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node3 start successfully node1 start successfully node2 start successfully
查看共识检查节点是否加入群组2中
shelltail -f node0/log/log* |grep ++++
可以看到节点成功加入群组2中
shellinfo|2024-03-30 20:35:09.226595|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=82bf26f6... info|2024-03-30 20:35:09.308081|[g:2][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=c59f63d7...
注意
如果没有节点没有加入群组,请检查group.2.genesis 文件中的id是否正确修改
场景描述
使用开发部署工具搭建一个单机单群组4节点的国密版FISCO BCOS联盟链
搭建国密版的需要用到 -g -G 参数
shellbash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G
出现All completed
表示构建成功
shell[INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ...
###### 4.1%curl: (28) Operation too slow. Less than 102400 bytes/sec transferred the last 20 seconds
[INFO] Download speed is too low, try https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/fisco-bcos.tar.gz
################################################################################################################################################################# 100.0%
build_chain.sh: 行 1644: [[: 50440597
12111170: 表达式中有语法错误(错误记号是 "12111170")
==============================================================
Generating CA key...
Generating Guomi CA key...
==============================================================
Generating keys and certificates ...
Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1
==============================================================
Generating configuration files ...
Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1
==============================================================
[INFO] Start Port : 30300 20200 8545
[INFO] Server IP : 127.0.0.1:4
[INFO] Output Dir : /home/fisco-bcos/fisco/nodes
[INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/
[INFO] Guomi CA Path : /home/fisco-bcos/fisco/nodes/gmcert/
[INFO] Guomi mode : true
[INFO] SM channel : true
==============================================================
[INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console.
e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f
==============================================================
[INFO] All completed. Files in /home/fisco-bcos/fisco/nodes
shellbash nodes/127.0.0.1/start_all.sh
出现以下表示启动成功
shelltry to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node2 start successfully node3 start successfully node1 start successfully
可以看到国密版FISCO BCOS有两套证书,一套国密版,一套标准版,节点与SDK之间即支持SSL连接进行通信,也支持国密SSL连接进行通信
shellfisco-bcos@fiscobcos:~/fisco$ ll nodes/127.0.0.1/node0/conf 总计 52 drwxrwxr-x 4 fisco-bcos fisco-bcos 4096 3月 30 20:52 ./ drwxrwxr-x 6 fisco-bcos fisco-bcos 4096 3月 30 20:52 ../ drwxrwxr-x 2 fisco-bcos fisco-bcos 4096 3月 30 20:52 channel_cert/ -rw-rw-r-- 1 fisco-bcos fisco-bcos 676 3月 30 20:52 gmca.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 587 3月 30 20:52 gmennode.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 241 3月 30 20:52 gmennode.key -rw-rw-r-- 1 fisco-bcos fisco-bcos 1935 3月 30 20:52 gmnode.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 241 3月 30 20:52 gmnode.key -rw-rw-r-- 1 fisco-bcos fisco-bcos 129 3月 30 20:52 gmnode.nodeid -rw-rw-r-- 1 fisco-bcos fisco-bcos 16 3月 30 20:52 gmnode.serial -rw-rw-r-- 1 fisco-bcos fisco-bcos 1257 3月 30 20:52 group.1.genesis -rw-rw-r-- 1 fisco-bcos fisco-bcos 2852 3月 30 20:52 group.1.ini drwxrwxr-x 2 fisco-bcos fisco-bcos 4096 3月 30 20:52 origin_cert/ #标准版证书目录
查看节点进程
shellps -ef | grep -v grep | grep fisco-bcos
输出进程
shellfisco-b+ 9413 1 0 20:52 pts/0 00:00:08 /home/fisco-bcos/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini fisco-b+ 9415 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini fisco-b+ 9417 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini fisco-b+ 9419 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
查看节点共识
shelltail -f nodes/127.0.0.1/node0/log/log* | grep ++++
输出结果
shellinfo|2024-03-30 20:59:59.070644|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=f35289da... info|2024-03-30 21:09:28.381847|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=ea6bb9e0... info|2024-03-30 21:09:32.423803|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=9086f4e9...
到此三种搭建方式就已经演示完毕
本文作者:苏皓明
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!