我的机器上已有node0、1、2、3,现要新增node4于另一台机器
每个节点都需要有一套证书来与链上的其他节点建立连接,扩容一个新节点,首先需要为其签发证书。
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh
curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh(备用链接)
运行脚本bash gen_node_cert.sh -c ../cert/agency -o node4
输出 All completed 则生成成功
拷贝node0/config.ini、node0/start.sh和node0/stop.sh到node4目录
cp node0/config.ini node0/start.sh node0/stop.sh node4/
拷贝node0/conf/group.1.genesis(内含群组节点初始列表)和node0/conf/group.1.ini到node4/conf目录
cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/
修改node4/config.ini的[rpc]和[p2p]模块
原:
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20200
jsonrpc_listen_ip=127.0.0.1
jsonrpc_listen_port=8888
disable_dynamic_group=false
[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
修改后:
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20204
jsonrpc_listen_ip=127.0.0.1
jsonrpc_listen_port=8892
disable_dynamic_group=false
[p2p]
listen_ip=0.0.0.0
listen_port=30304
; nodes to connect
node.0=10.21.23.14:30300
node.1=10.21.23.14:30301
node.2=10.21.23.14:30302
node.3=10.21.23.14:30303
node.4=127.0.0.1:30304
port的修改是为了避免与其他node端口占用,理论上port为任意空闲的端口都可,但一般约定俗成在上一个节点的值+1,如node0的channel_listen_port=20200,则node1的channel_listen_port=20201。
重点在于p2p的修改,这也是与官方文档的差别之处:除了新增node4的ip:port,还应将node0、1、2、3的127.0.0.1改为机器ip(如此处我机器的ip为10.21.23.14),这样在另一台机器运行node4时才可以与node0、1、2、3通信。其他修改视具体情况而定。
打开本机30300-30303端口防火墙,允许外部访问,这样node4运行时才可连接到node0、1、2、3firewall-cmd --zone=public --add-port=30300/tcp --permanent 设置防火墙开放30300端口 firewall-cmd --zone=public --add-port=30301/tcp --permanent 设置防火墙开放30301端口 firewall-cmd --zone=public --add-port=30302/tcp --permanent 设置防火墙开放30302端口 firewall-cmd --zone=public --add-port=30303/tcp --permanent 设置防火墙开放30303端口 firewall-cmd --reload && firewall-cmd --list-port 重载防火墙&&查看防火墙开放的端口
将以上node4整个文件夹发送到另一机器然后运行。
bash node4/start.sh
注意node4应与fisco-bcos同级,否则节点会无法运行,如:
Exceed waiting time. please try again to start node4config file path : config.ini[2023-02-05 09:27:49] Initializing...FISCO-BCOS Version : 2.9.120220922 08:57:35 Build TimeBuild Type Linux/g++/ReleaseHEAD Git Branch Git Commit Hash83a87ad749475c0edcc6d5ce2dabd328a36d3bae[2023-02-05 09:27:49] The FISCO-BCOS is running...[2023-02-05 09:28:20] FISCO-BCOS program exit normally nohup: 无法运行命令'/home/topview/node4/../fisco-bcos':No such file or directory
运行成功后可查看node4的节点连接数
tail -f node4/log/log* | grep "connected count"
会有如下信息,意为node4与4个节点连接保持心跳,不难知道4个节点为node0、1、2、3:
[P2P][Service] heartBeat,connected count=4
获取node4的nodeid
cat node4/conf/node.nodeid
使用控制台作为共识节点加入(若以其他节点可查阅文档)
bash console.sh 1 add addSealer nodeid
返回success。
至此,就实现了跨机扩容节点