官方文档:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/tutorial/add_new_node.html
背景:已搭建一条单群组4节点的链,目录在 /mnt/nodes 文件夹下;
1. 进入 mnt 文件夹,获取节点脚本;
cd /mnt
curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh && chmod u+x gen_node_cert.sh
curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh(备用链接)
2. 生成新节点:执行上述获取的脚本,-c为生成节点所提供的ca路径,-o为将生成的节点目录名;
生成节点所提供的ca路径:这个路径按照实际安装的为准,此处我的是 /mnt/nodes/cert/agencyA;
-o为将生成的节点目录名:一般之前已经安装了4个节点,目录名分别是node0、node1、node2、node3,后续新扩容的节点默认使用目录名node4;
chmod +x gen_node_cert.sh
./gen_node_cert.sh -c nodes/cert/agencyA -o nodes/127.0.0.1/node4
3. 将 node0 中 config.ini,start.sh,stop.sh 文件复制到 node4 中,将 node0/conf 中 group.1.genesis,group.1.ini 文件复制到 node4/conf 中;
cp nodes/127.0.0.1/node0/{config.ini,start.sh,stop.sh} nodes/127.0.0.1/node4/
cp nodes/127.0.0.1/node0/conf/{group.1.genesis,group.1.ini} nodes/127.0.0.1/node4/conf/
4. 修改 nodes/127.0.0.1/node4/config.ini 的[rpc]和[p2p]模块
vi nodes/127.0.0.1/node4/config.ini
5. 原始数据如下:
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20200
jsonrpc_listen_ip=0.0.0.0
jsonrpc_listen_port=8545
[p2p]
listen_ip=0.0.0.0
listen_port=30300
; nodes to connect
node.0=127.0.0.1:30300
node.1=127.0.0.1:30301
node.2=127.0.0.1:30302
node.3=127.0.0.1:30303
6. 若为本服务器扩容节点,则改端口号增加node4节点即可,如下:
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20204
jsonrpc_listen_ip=0.0.0.0
jsonrpc_listen_port=8549
[p2p]
listen_ip=0.0.0.0
listen_port=30300
; nodes to connect
node.0=127.0.0.1:30300
node.1=127.0.0.1:30301
node.2=127.0.0.1:30302
node.3=127.0.0.1:30303
node.4=127.0.0.1:30304
6. 若为跨服务器扩容节点,则需要将前4个节点的IP由127.0.0.1全部换成服务器的已搭建链的服务器IP,且对应端口号需对新的服务器开放;
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20204
jsonrpc_listen_ip=0.0.0.0
jsonrpc_listen_port=8549
[p2p]
listen_ip=0.0.0.0
listen_port=30300
; nodes to connect
node.0=已搭建链服务器IP:30300
node.1=已搭建链服务器IP:30301
node.2=已搭建链服务器IP:30302
node.3=已搭建链服务器IP:30303
node.4=127.0.0.1:30304
7. 上述配置修改好后,若是跨服务器扩容节点,则将 /mnt/nodes/127.0.0.1/node4 文件夹直接移动到新的服务器对应文件夹中,并且需将 /mnt/nodes/127.0.0.1/fisco-bcos 复制到新服务器对应文件夹中,最终需保证 fisco-bcos 与 node4 文件夹属于同级目录;
8. 启动node4节点
cd /mnt/nodes/127.0.0.1/node4/
./start.sh
9. 确认新扩容的节点3(node4)与其他4个节点的连接已经建立,加入网络操作完成。
cd /mnt/nodes/127.0.0.1/
tail -f node4/log/log* | grep P2P
至此,节点新增完成,注意:
可以在之前的4个节点中的config.ini的P2P节点连接列表中加上新扩容的节点,并重启那4个节点,保持全网节点的全互联状态;也可以不加;
10. 需将新扩容的节点假如群组,这个需要提前安装控制台,控制台安装请参照官方文档;控制台直接在原有4个节点的服务器上安装即可;
查看新扩容的节点的nodeID:cat /mnt/nodes/127.0.0.1/node4/conf/node.nodeid
启动控制台,执行命令:getSealerList
可查询到4个nodeID,分别是已有的4个节点的nodeID;
控制台执行命令:addSealer 46def6703a8fdd9d9eebef9(上述查询到的新扩容节点的nodeID)
控制台执行命令:getSealerList
此时可查询到5个nodeID,即表示新扩容的节点加入群组成功;
11. 新扩容的节点退出网络:先退群组,再退出网络;
退出群组:
控制台执行命令:removeNode 46def6703a8fdd9d9eebef9(需退出的节点nodeID)
控制台执行命令:getSealerList
可查看数量是否少了,表示是否退出群组成功;
退出网络:
停止node4节点:
cd /mnt/nodes/127.0.0.1/node4/
./start.sh
对于其他4个节点node0、node1、node2、node3,如果在扩容node4时,有在其config.ini的P2P节点连接列表中加上新扩容的node4节点,则需要修改去掉node4节点,然后重启节点;若之前没有加上则无需处理;