FISCO BCOS-多服务器部署区块链(1)-搭建两服务两节点单群组区块链

FISCO BCOS-多服务器部署区块链(1)-搭建两服务两节点单群组区块链

本文参考官方链接:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_detail_operation.html

参考官方技术文档,构建两节点两机构单群组的区块链,组网模式如下图节点组网拓扑图。

节点组网拓扑图

机器环境,每个节点的IP和端口号如下(实际部署的时候一定要填写物理机的IP哟~):

节点IP与端口号

一、下载安装

1.下载

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

出现问题:服务器没有git,且直接安装无效,如下图。

此时需要先执行 apt-get  update,再进行apt-get install git。

1

安装成功git之后,执行上面命令。

2.安装(此步骤要求有sudo权限)

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

2

2.2 验证是否安装成功./generator -h,看到usage:generator ***,如下图,表示成功安装。

3

3.获取节点二进制

3.1 拉取最新fisco-bcos二进制文件到meta中

./generator --download_fisco ./meta

如下图所示,成功拉取

4

3.2 检查是否成功,./meta/fisco-bcos -v

如下图所示,即成功。

5

二、机构初始化

进行完第一步“下载安装”之后,下载的generator就作为证书颁发机构,用来初始化机构A/B/C...等

1.机构初始化

1.1 初始化机构A

cp -r ~/generator ~/generator-A

1.2 初始化机构B

cp -r ~/generator ~/generator-B

6

2.初始化链证书

在证书颁发机构上进行操作,注意一条链拥有唯一的链证书ca.crt

2.1 在证书生成机构目录下操作,即先进入目录。

cd~/generator

2.2 用命令生成链证书

./generator --generate_chain_certificate ./dir_chain_ca

7

2.3 查看链证书及私钥

ls ./dir_chain_ca

8

3.机构A、B构建群组1

3.1 初始化机构A

实际应用时应该由机构本地生成私钥agency.key,再生成证书请求文件,向证书签发机构获取机构证书agency.crt。

3.1.1 进入在证书机构目录

cd~/generator

3.1.2 生成机构A证书

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

9

3.1.3 查看机构证书及私钥

ls dir_agency_ca/agencyA/

10

3.1.4 发送机构证书、机构私钥、链证书给机构A,采用文件拷贝的方式,从证书授权机构将机构证书发送给对应的机构,放在机构的工作目录的meta子目录下。

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

3.2 初始化机构B

3.2.1 进入证书生成机构目录

cd~/generator

3.2.2 生成机构B证书

./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB

3.2.3 发送证书至机构B的meta子目录

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

注意事项:一条联盟链中只能用到一个根证书ca.crt,多服务器部署时不要生成多个根证书和私钥。一个群组只能有一个群组创世区块group.x.genesis

3.3 机构A修改配置文件

3.3.1 进入生成机构A的目录

cd~/generator-A

3.3.2 修改配置文件

cat > ./conf/node_deployment.ini<

[group]

group_id=1

[node0]

; host ip for the communication among peers.

; Please use your ssh login ip.

p2p_ip=127.0.0.1

; listen ip for the communication between sdk clients.

; This ip is the same as p2p_ip for 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 seehttps://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

EOF

11

3.3.3 查看配置文件内容

cd~/generator-A

vim./conf/node_deployment.ini

12

同时按下shift Esc :,输入q退出。

3.4 机构B修改配置文件

3.4.1 进入生成机构B的目录

cd~/generator-B

3.4.2 修改配置文件

cat > ./conf/node_deployment.ini<

[group]

group_id=1

[node0]

; host ip for the communication among peers.

; Please use your ssh login ip.

p2p_ip=127.0.0.1

; listen ip for the communication between sdk clients.

; This ip is the same as p2p_ip for 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 seehttps://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=30301

channel_listen_port=20201

jsonrpc_listen_port=8546

EOF

3.4.3 查看配置文件内容

cd~/generator-B

vim./conf/node_deployment.ini

13

3.5 机构A生成并发送节点信息

3.5.1 进入生成机构A目录

cd~/generator-A

3.5.2 机构A生成节点证书及P2P链接信息文件

./generator --generate_all_certificates ./agencyA_node_info

14

3.5.3 查看生成文件

ls ./agencyA_node_info

15

上图中,从左至右分别为需要交互给机构A的节点证书,节点P2P连接地址文件(根据node_deployment.ini生成的本机构节点信息)

3.5.4  A机构需将节点P2P连接地址文件发送至机构B

(因为机构生成节点时需要指定其他节点的节点P2P连接地址)

cp ./agencyA_node_info/peers.txt ~/generator-B/meta/peersA.txt

3.6 机构B生成并发送节点信息

3.6.1 进入生成机构B目录

cd~/generator-B

3.6.2 机构B生成节点证书及P2P连接信息文件

./generator --generate_all_certificates ./agencyB_node_info

3.6.3 机构B发送节点证书至机构A

因为生成创世区块的机构需要节点证书,咱们这个是由A机构生成创世区块,因此B机构除了发送节点P2P连接地址文件外,还需发送节点证书至机构A

cp ./agencyB_node_info/cert*.crt ~/generator-A/meta/

3.6.4 机构B发送节点P2P连接地址文件

cp ./agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt

16

3.7 机构A生成群组1创世区块

此处是选择机构A生成群组创世区块,实际生产中可以通过联盟链委员会协商选择

3.7.1 进入生成机构A目录

cd~/generator-A

3.7.2 机构A修改配置文件conf文件下的group_genesis.ini

cat > ./conf/group_genesis.ini<< EOF

[group]group_id=1

[nodes]

node0=127.0.0.1:30300

node1=127.0.0.1:30301

EOF

3.7.3 修改./conf/group_genesis.ini文件,即添加注释

vim ./conf/group_genesis.ini

;命令解释

[group]

;群组id

group_id=1

[nodes]

;机构A节点p2p地址

node0=127.0.0.1:30300

;机构B节点p2p地址

node1=127.0.0.1:30301

17

3.7.4 生成group_genesis.ini配置的群组创世区块

./generator --create_group_genesis ./group

18

3.7.5 分发群组1创世区块至机构B

cp ./group/group.1.genesis ~/generator-B/meta

3.8 机构A生成所属节点

生成机构A所属节点,此命令会根据用户配置的node_deployment.ini文件生成相应的节点配置文件夹

3.8.1 进入生成机构A目录

cd~/generator-A

3.8.2 生成机构A所属节点

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

19

3.8.3 查看生成节点配置文件夹

ls ./nodeA

20

3.8.4 机构A启动节点

bash ./nodeA/start_all.sh

21

3.8.5 查看节点进程

ps -ef|grep fisco

22

3.9 机构B生成所属节点

3.9.1 进入生成机构B目录

cd~/generator-B

3.9.2 生成机构B所属节点

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

23

3.9.3 机构B启动节点

bash ./nodeB/start_all.sh

24

注意事项:节点启动只需要推送对应ip的node文件夹即可,如127.0.0.1的服务器,只需node_127.0.0.1_port对应的节点配置文件夹。多机部署时,只需要将生成的节点文件夹推送至对应服务器即可

3.10 查看群组1节点运行状态

3.10.1 查看进程

ps -ef|grep fisco

25

3.10.2 查看节点log

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

26

ctrl c 结束查看

4.推送机构B的生成文件夹到目标服务器

scp -r  /root/generator-B/  root@172.**.***.**:~/

为了操作简单,以上生成B的系列操作在同一个服务器上,那么多机构链就需要那么生成好的文件夹generator-B,就可以传输到另一台服务器即可。

27

多机构搭建群组1的操作完成!

你可能感兴趣的:(FISCO BCOS-多服务器部署区块链(1)-搭建两服务两节点单群组区块链)