FISCO BCOS-多服务器部署区块链(2)-群组扩充新服务器新节点
由于官方技术文档中缺乏对新结构新节点加入已有群组的描述,故整理了这篇文章。
在两节点两机构单群组的区块链上,扩充新机构新节点,组网模式如下图节点组网拓扑图。
机器环境,每个节点的IP和端口号如下:
一、证书授权机构初始化机构C
1.进入证书生成机构目录
本次搭链的证书生成机构是阿里云1
cd~/generator
2.初始化机构C
此时generator目录下有链证书及私钥,实际环境中机构C无法获取链证书及私钥(那应该怎么处理呢?抛出问题)。
cp -r ~/generator ~/generator-C
3.生成机构C证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC
4.查看机构证书及私钥
ls dir_agency_ca/agencyC/
上图中,从左至右分别为机构证书、机构私钥、链证书
5.发送机构证书、机构私钥、链证书给机构C。
cp ./dir_agency_ca/agencyC/* ~/generator-C/meta/
二、机构C生成节点
1.进入生成机构C目录
cd~/generator-C
2.机构C修改配置文件
cat > ./conf/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
; 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=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
EOF
2.1 查看配置文件内容
vim./conf/node_deployment.ini
3.机构A发送节点连接地址文件及群组1创世区块给机构C
3.1 A机构需要将节点P2P链接地址文件发送至机构C
(因为机构生成节点时需要指定其他节点的节点P2P连接地址)
cd~/generator-A
cp ./agencyA_node_info/peers.txt ~/generator-C/meta/peersA.txt
3.2 分发群组1创世区块至机构C
cp ./group/group.1.genesis ~/generator-C/meta
4.机构C生成并发送节点信息
4.1 进入生成机构C目录
cd~/generator-C
4.2 机构C生成节点证书及P2P连接信息文件
./generator --generate_all_certificates ./agencyC_node_info
4.3 机构C发送节点证书给机构A
cp ./agencyC_node_info/cert*.crt ~/generator-A/meta/
4.4 机构C发送P2P连接地址文件给机构A
cp ./agencyC_node_info/peers.txt ~/generator-A/meta/peersC.txt
5.机构C生成所属节点
5.1 进入生成机构C目录
cd~/generator-C
5.2 生成节点C
./generator --build_install_package ./meta/peersA.txt ./nodeC
5.3 机构C启动节点
bash ./nodeC/start_all.sh
5.4 查看节点进程
ps -ef|grep fisco
三、机构C节点加入群组1
1.发送群组1创世区块给机构C
1.1 进入生成机构A目录
cd~/generator-A
1.2 发送群组1创世区块给机构C
./generator --add_group ./group/group.1.genesis ~/generator-C/nodeC
1.3 重启机构C节点
cd~/generator-C
bash ./nodeC/stop_all.sh
bash ./nodeC/start_all.sh
四、配置及使用控制台
因为将节点加入已有群组需要用户使用控制台发送指令,将节点加入群组。
1.安装java
sudo apt install -y default-jdk
2.下载控制台配置文件
2.1 进入生成机构A目录
cd~/generator-A
2.2 拉取控制台
./generator --download_console ./ --cdn
3.查看机构C节点信息
由于机构A使用控制台加入机构C节点4为观察节点,其中参数第二项需要替换为加入节点的nodeid,nodeid在节点文件夹的conf的node.nodeid文件
cat ~/generator-C/nodeC/node_127.0.0.1_30302/conf/node.nodeid
4.启动控制台
cd~/generator-A/console&&bash ./start.sh1
5.使用控制台将机构C节点注册为观察节点
addObserverf8d449eae86cc17f9f5adeb895e9db68d1bf8aa41511619a690b3897d65dbd97147ccfe000458697e4b361dfb4f27f6f01d7e8d2dcf22c7107998b431c48866f
其中,是3查看出来的机构C节点信息
6.使用控制台将机构C节点注册为共识节点
addSealerf8d449eae86cc17f9f5adeb895e9db68d1bf8aa41511619a690b3897d65dbd97147ccfe000458697e4b361dfb4f27f6f01d7e8d2dcf22c7107998b431c48866f
7.利用控制台查看共识节点信息
getSealerList
8.推送机构C文件夹给阿里云服务器3即可
至此,就完成了新服务器生成新节点并加入已有群组的完整步骤!!