FISCO BCOS Generator运维部署工具
下载
cd ~/
git clone https://github.com/FISCO-BCOS/generator.git
# 若因为网络问题导致长时间无法下载,请尝试以下命令:
git clone https://gitee.com/FISCO-BCOS/generator.git
安装
此操作要求用户具有sudo权限。
cd ~/generator && bash ./scripts/install.sh
检查是否安装成功,若成功,输出 usage: generator xxx
./generator -h
获取节点二进制
拉取最新fisco-bcos二进制文件到meta中,如果网络较差,可以尝试通过其他方式下载fisco-bcos
,或使用--cdn
选项,并将下载好的二进制放置于meta
文件夹下(或者科学上网试一下)
./generator --download_fisco ./meta
检查二进制版本
若成功,输出 FISCO-BCOS Version : x.x.x-x
./meta/fisco-bcos -v
部署网络
查看节点配置是否齐全
root@test:~/generator# tree ./tmp_one_click
./tmp_one_click
├── agencyA
│ └── node_deployment.ini
└── agencyB
└── node_deployment.ini
查看节点配置文件内容
root@test:~/generator# cat tmp_one_click/agencyA/node_deployment.ini ## 为了方便查看,注释已经删除
[group]
group_id=1
[node0]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545
[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546
root@test:~/generator# cat tmp_one_click/agencyB/node_deployment.ini
[group]
group_id=1
[node0]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
生成节点
root@test:~/generator# bash ./one_click_generator.sh -b ./tmp_one_click
copy generator...
INFO | Chain cert begin.
INFO | Generate root cert success, dir is /root/generator/.dir_chain_ca
INFO | Chain cert end.
try to use ./tmp_one_click/agencyA/node_deployment.ini
try to use ./tmp_one_click/agencyB/node_deployment.ini
INFO | Agency cert begin.
INFO | Agency cert end.
INFO | Agency cert begin.
INFO | Agency cert end.
./tmp_one_click/agencyA generate node now...
...
root@test:~/generator# tree -L 3 tmp_one_click/
tmp_one_click/
├── agencyA # A机构文件夹
│ ├── agency_cert # A机构证书及私钥
│ │ ├── agency.crt
│ │ ├── agency.key
│ │ └── ca.crt
│ ├── generator-agency # 自动代替A机构进行操作的generator文件夹
.....
│ ├── node
│ │ ├── monitor
│ │ ├── node_127.0.0.1_30300
│ │ ├── node_127.0.0.1_30301
│ │ ├── scripts
│ │ ├── start_all.sh
│ │ └── stop_all.sh
│ ├── node_deployment.ini
│ └── sdk
.....
├── agencyB
│ ├── agency_cert
│ │ ├── agency.crt
│ │ ├── agency.key
│ │ └── ca.crt
│ ├── generator-agency
.....
│ ├── node
│ │ ├── monitor
│ │ ├── node_127.0.0.1_30302
│ │ ├── node_127.0.0.1_30303
│ │ ├── scripts
│ │ ├── start_all.sh
│ │ └── stop_all.sh
│ ├── node_deployment.ini
│ └── sdk
.....
├── ca.crt # 链证书
├── ca.key # 链私钥
├── ca.srl
├── group.1.genesis # 群组1创世区块
└── peers.txt # 节点的peers.txt信息
启动节点
root@test:~/generator# bash ./tmp_one_click/agencyA/node/start_all.sh
try to start node_127.0.0.1_30300
try to start node_127.0.0.1_30301
node_127.0.0.1_30300 start successfully
node_127.0.0.1_30301 start successfully
root@test:~/generator# bash ./tmp_one_click/agencyB/node/start_all.sh
try to start node_127.0.0.1_30302
try to start node_127.0.0.1_30303
node_127.0.0.1_30302 start successfully
node_127.0.0.1_30303 start successfully
查看进程
root@test:~/generator# ps -ef |grep -v grep |grep fisco-bcos
root 5202 2786 1 16:42 pts/0 00:00:01 /root/generator/tmp_one_click/agencyA/node/node_127.0.0.1_30300/fisco-bcos -c config.ini
root 5203 2786 1 16:42 pts/0 00:00:01 /root/generator/tmp_one_click/agencyA/node/node_127.0.0.1_30301/fisco-bcos -c config.ini
root 5443 2786 1 16:42 pts/0 00:00:01 /root/generator/tmp_one_click/agencyB/node/node_127.0.0.1_30302/fisco-bcos -c config.ini
root 5445 2786 1 16:42 pts/0 00:00:01 /root/generator/tmp_one_click/agencyB/node/node_127.0.0.1_30303/fisco-bcos -c config.ini
查看节点的共识状态
root@test:~/generator# tail -f ~/generator/tmp_one_click/agency*/node/node*/log/log* | grep +++
info|2023-07-22 16:45:24.037793|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=c40450a2...
info|2023-07-22 16:45:25.041291|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=0,hash=24c44f0b...
info|2023-07-22 16:45:26.044496|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=0093738c...
^C
新增节点(扩容新节点)
初始化扩容配置
root@test:~/generator# pwd
/root/generator
## 创建扩容文件夹,随便命名,此处命名为aiyi
root@test:~/generator# mkdir aiyi
## 拷贝链证书及私钥
root@test:~/generator# cp tmp_one_click/ca.* aiyi/
## 拷贝群组1创世区块
root@test:~/generator# cp tmp_one_click/group.1.genesis aiyi/
## 拷贝群组1节点P2P连接文件
root@test:~/generator# cp tmp_one_click/peers.txt aiyi/
机构A配置节点信息
## 创建机构A扩容节点所在目录
root@test:~/generator# mkdir aiyi/agencyA
## 此时机构A已经存在联盟链中,因此需拷贝机构A证书、私钥至对应文件夹
root@test:~/generator# cp -r tmp_one_click/agencyA/agency_cert/ aiyi/agencyA/
## 机构A填写节点配置
root@test:~/generator# cp tmp_one_click/agencyA/node_deployment.ini aiyi/agencyA/
root@test:~/generator# vim aiyi/agencyA/node_deployment.ini
[group]
group_id=1
[node0]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30304 ## 改
channel_listen_port=20204 ## 改
jsonrpc_listen_port=8549 ## 改
机构C配置节点信息
## 创建机构C扩容节点所在目录
root@test:~/generator# mkdir aiyi/agencyC
## 机构C填写节点配置信息
root@test:~/generator# cp aiyi/agencyA/node_deployment.ini aiyi/agencyC/
root@test:~/generator# vim aiyi/agencyC/node_deployment.ini
[group]
group_id=1
[node0]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30305 ## 改
channel_listen_port=20205 ## 改
jsonrpc_listen_port=8550 ## 改
生成扩容节点
root@test:~/generator# bash one_click_generator.sh -e ./aiyi/
Need group.1.genesis in ./aiyi/
try to use ./aiyi//agencyA/node_deployment.ini
Need group.1.genesis in ./aiyi/
try to use ./aiyi//agencyC/node_deployment.ini
INFO | Agency cert begin.
INFO | Agency cert end.
INFO | Agency cert begin.
INFO | Agency cert end.
./aiyi//agencyA generate node now...
INFO | Generate cert to ./node_send by node_deployment.ini.
INFO | Generate /root/generator/aiyi/agencyA/generator-agency/meta/node_127.0.0.1_30304
INFO | Generate cert by node_installation.ini successful!
INFO | Generate cert by node_deployment.ini end.
./aiyi//agencyC generate node now...
INFO | Generate cert to ./node_send by node_deployment.ini.
INFO | Generate /root/generator/aiyi/agencyC/generator-agency/meta/node_127.0.0.1_30305
INFO | Generate cert by node_installation.ini successful!
INFO | Generate cert by node_deployment.ini end.
...
启动新节点
root@test:~/generator# bash aiyi/agencyA/node/start_all.sh
try to start node_127.0.0.1_30304
node_127.0.0.1_30304 start successfully
root@test:~/generator# bash aiyi/agencyC/node/start_all.sh
try to start node_127.0.0.1_30305
node_127.0.0.1_30305 start successfully
root@test:~/generator#
查看节点进程
root@test:~/generator# ps -ef |grep -v grep |grep fisco-bcos
使用控制台注册节点
获取控制台
root@test:~/generator# cd tmp_one_click/agencyA/generator-agency/
root@test:~/generator/tmp_one_click/agencyA/generator-agency# pwd
/root/generator/tmp_one_click/agencyA/generator-agency
root@test:~/generator/tmp_one_click/agencyA/generator-agency# ./generator --download_console ./ --cdn
INFO | ======= USE_CDN ============= ON =======
INFO | download_console: use cdn
INFO | The download_console_command is bash /root/generator/tmp_one_click/agencyA/generator-agency/tpl/download_console.sh -n
INFO | download console success, obtain the sdk certificates now...
INFO | get console in .//console/conf!
INFO | get sdk cert in meta!
INFO | sdk cert existed!
INFO | obtain the sdk certificates success, configure the console now
INFO | configure config-example.toml
INFO | configure the channel connections to ['127.0.0.1:20200', '127.0.0.1:20201']
INFO | config_console_toml_file success
INFO | configure the console success
root@test:~/generator/tmp_one_click/agencyA/generator-agency#
查看机构A节点4
root@test:~/generator/tmp_one_click/agencyA/generator-agency# cat ../../../aiyi/agencyA/node/node_127.0.0.1_30304/conf/node.nodeid
aa177a09033d00b1670505ed028a293b93d3a5d63956f400b0fb182f494b0975ff484f7018af9e7e191e68708416452693df66b1a24ef7bd0d8f8b11af5b6790
使用控制台注册共识节点
root@test:~/generator/tmp_one_click/agencyA/generator-agency# cd console
root@test:~/generator/tmp_one_click/agencyA/generator-agency/console# bash start.sh 1
=============================================================================================
Welcome to FISCO BCOS console(2.8.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
[group:1]> addSealer aa177a09033d00b1670505ed028a293b93d3a5d63956f400b0fb182f.....
{
"code":1,
"msg":"Success"
}
[group:1]> getSealerList
[
391e44096f0503fabf14b38b46a3b0f639936ef5fff657e6b06a08787f5cb07b5e8fda5ad9668203656f6ca7ac871bc7ee4876a64.., 3e64eb956ae200caa023032b22e8c08dd52db1c9fb9e64730be8b31c6ff86c271b60caac6ad06a7f4f516e8827dbfd2f93223a55d.., a570a69cfd7c92611c41c835e40d6a4794d607879865067caacc65260a83e6127b28bedc56380be295b5c503cd54419ba0b3636c7.., e451df05b108712b1635e89719946671fb8488a844505804aa38d23d609f804932125daa28f1d89434705cb3b9b00c437c11ee8b6..,
aa177a09033d00b1670505ed028a293b93d3a5d63956f400b0fb182f494b0975ff484f7018af9e7e191e68708416452693df66b1a...
]
查看机构C节点5
[group:1]> exit
root@test:~/generator/tmp_one_click/agencyA/generator-agency/console# cat ../../../../aiyi/agencyC/node/node_127.0.0.1_30305/conf/node.nodeid
c23e68c1659ab8ca9a5ea6658f31e694593549d06b3be49a5f715ef06af2a165bdd16c79f37dd443bf19642b5b3b6a3fe972c9d7ab0d4abad48a1277b49cdaad
root@test:~/generator/tmp_one_click/agencyA/generator-agency/console#
使用控制台注册观察节点
root@test:~/generator/tmp_one_click/agencyA/generator-agency/console# bash start.sh 1
=============================================================================================
Welcome to FISCO BCOS console(2.8.0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
[group:1]> addObserver c23e68c1659ab8ca9a5ea6658f31e694593549d06b3be49a5f715ef06af2a165bdd16c79f37dd443bf19642b5b3b6a3fe972c9d7ab0d4abad48a1277b49cdaad
{
"code":1,
"msg":"Success"
}
[group:1]> getObserverList
[
c23e68c1659ab8ca9a5ea6658f31e694593549d06b3be49a5f715ef06af2a165bdd16c79f37dd443bf19642b5b3b6a3fe972c9d7ab0d4abad48a1277b49cdaad
]
[group:1]>
新增群组(扩容新群组)
配置群组2创世区块
root@test:~/generator# vim conf/group_genesis.ini
## 原文件内容
[group]
group_id=1
[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
## 修改后
[group]
group_id=2
[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30304
node3=127.0.0.1:30305
获取对应节点证书
机构A-节点0(node0=127.0.0.1:30300
)
root@test:~/generator# cp tmp_one_click/agencyA/generator-agency/meta/cert_127.0.0.1_30300.crt ./meta/
机构A-节点1(node1=127.0.0.1:30301
)
root@test:~/generator# cp tmp_one_click/agencyA/generator-agency/meta/cert_127.0.0.1_30301.crt ./meta/
机构A-节点4(node2=127.0.0.1:30304
)
root@test:~/generator# cp aiyi/agencyA/generator-agency/meta/cert_127.0.0.1_30304.crt ./meta/
机构C-节点5(node3=127.0.0.1:30305
)
root@test:~/generator# cp aiyi/agencyC/generator-agency/meta/cert_127.0.0.1_30305.crt ./meta/
生成群组创世区块
root@test:~/generator# ./generator --create_group_genesis ./group2 ## -c也可以
INFO | Build operation begin.
INFO | generate ./group2/group.2.genesis, successful
INFO | Build operation end.
将群组创世区块加入现有节点:
机构A-节点0(node0=127.0.0.1:30300
)
root@test:~/generator# ./generator --add_group ./group2/group.2.genesis ./tmp_one_click/agencyA/node/node_127.0.0.1_30300/
INFO | add group from ./group2/group.2.genesis to ./tmp_one_click/agencyA/node/node_127.0.0.1_30300/
INFO | add group end.
机构A-节点1(node1=127.0.0.1:30301
)
root@test:~/generator# ./generator --add_group ./group2/group.2.genesis ./tmp_one_click/agencyA/node/node_127.0.0.1_30301/
INFO | add group from ./group2/group.2.genesis to ./tmp_one_click/agencyA/node/node_127.0.0.1_30301/
INFO | add group end.
机构A-节点4(node2=127.0.0.1:30304
)
root@test:~/generator# ./generator --add_group ./group2/group.2.genesis ./aiyi/agencyA/node/node_127.0.0.1_30304/
INFO | add group from ./group2/group.2.genesis to ./aiyi/agencyA/node/node_127.0.0.1_30304/
INFO | add group end.
机构C-节点5(node3=127.0.0.1:30305
)
root@test:~/generator# ./generator --add_group ./group2/group.2.genesis ./aiyi/agencyC/node/node_127.0.0.1_30305/
INFO | add group from ./group2/group.2.genesis to ./aiyi/agencyC/node/node_127.0.0.1_30305/
INFO | add group end.
加载、启动新群组
节点在运行时,可直接用脚本load_new_groups.sh
加载新群组配置,并调用startGroup
RPC接口启动新群组:
机构A-节点0(node0=127.0.0.1:30300
)
root@test:~/generator# bash ./tmp_one_click/agencyA/node/node_127.0.0.1_30300/scripts/load_new_groups.sh
node_127.0.0.1_30300 is trying to load new groups. Check log for more information.
root@test:~/generator# curl -X POST --data '{"jsonrpc":"2.0","method":"startGroup","params":[2],"id":1}' http://127.0.0.1:8545
{"id":1,"jsonrpc":"2.0","result":{"code":"0x0","message":"Group 2 started successfully"}}
机构A-节点1(node1=127.0.0.1:30301
)
root@test:~/generator# bash ./tmp_one_click/agencyA/node/node_127.0.0.1_30301/scripts/load_new_groups.sh
node_127.0.0.1_30301 is trying to load new groups. Check log for more information.
root@test:~/generator# curl -X POST --data '{"jsonrpc":"2.0","method":"startGroup","params":[2],"id":1}' http://127.0.0.1:8546
{"id":1,"jsonrpc":"2.0","result":{"code":"0x0","message":"Group 2 started successfully"}}
机构A-节点4(node2=127.0.0.1:30304
)
root@test:~/generator# bash ./aiyi/agencyA/node/node_127.0.0.1_30304/scripts/load_new_groups.sh
node_127.0.0.1_30304 is trying to load new groups. Check log for more information.
root@test:~/generator# curl -X POST --data '{"jsonrpc":"2.0","method":"startGroup","params":[2],"id":1}' http://127.0.0.1:8549
{"id":1,"jsonrpc":"2.0","result":{"code":"0x0","message":"Group 2 started successfully"}}
机构C-节点5(node3=127.0.0.1:30305
)
root@test:~/generator# bash ./aiyi/agencyC/node/node_127.0.0.1_30305/scripts/load_new_groups.sh
node_127.0.0.1_30305 is trying to load new groups. Check log for more information.
root@test:~/generator# curl -X POST --data '{"jsonrpc":"2.0","method":"startGroup","params":[2],"id":1}' http://127.0.0.1:8550
{"id":1,"jsonrpc":"2.0","result":{"code":"0x0","message":"Group 2 started successfully"}}
查看节点
查看节点log内group2信息:
root@test:~/generator# tail -f ~/generator/tmp_one_click/agency*/node/node*/log/log* | grep g:2 | grep +++