安装console控制台
- 环境配置
java8以上并配置JAVA_HOME。 - 安装命令
//下载console控制台
cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v1.1.0/download_console.sh && bash download_console.sh
如果上面链接慢 切换gitee仓库
curl -LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh && bash download_console.sh
- 配置控制台
- 区块链节点和证书的配置:
将节点sdk目录下的ca.crt、node.crt和node.key文件拷贝到conf目录下。
将conf目录下的applicationContext-sample.xml文件重命名为applicationContext.xml文件。配置applicationContext.xml文件,其中添加注释的内容根据区块链节点配置做相应修改。提示:如果搭链时设置的listen_ip为127.0.0.1或者0.0.0.0,channel_port为20200,则applicationContext.xml配置不用修改。
- 命令
cp nodes/192.168.0.164/sdk/* console/conf/
cp -n console/conf/applicationContext-sample.xml console/conf/applicationContext.xml
./console/start.sh
创建新节点
原有节点p2p为:
- node.0 : 192.168.0.164:30300
- node.1 : 192.168.0.164:30301
新增节点p2p为:
- node.3 : 192.168.0.164:30302
我当前是在一台机器配置。如果不在一台机器上需要把ip配置为外网ip。并且机器之间端口需要互通。
每个机构有自己单独的证书,需要根据机构的证书来扩展新的节点
CA下发的证书以及自己组织的私钥存放在 nodes/cert 目录下
ca.crt agency.crt agency.key
- 将其中主节点的cert 复制粘贴到新的文件夹下 fisco-new
cp -r fisco/nodes/cert fisco-new/
- 下载gen_code_cert.sh 来生成新的节点
cd fisco-new
curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
- 生成新节点的证书(-c为生成节点所提供的ca路径,agency为机构名,-o为将生成的节点目录名)
mkdir 192.168.0.164
./gen_node_cert.sh -c ./cert/agency -o 192.168.0.164/node_new
==============================================================
[INFO] Cert Path : cert/agency/
[INFO] Output Dir : 192.168.0.164/node_new
==============================================================
[INFO] All completed. Files in 192.168.0.164/node_new
执行完后会在node_new 目录下生成conf文件夹
cd node_new/conf
ll # 查看目录
-rw-rw-r-- 1 xlf xlf 574 9月 15 15:44 agency.crt
-rw-rw-r-- 1 xlf xlf 664 9月 15 15:44 ca.crt
-rw-rw-r-- 1 xlf xlf 1825 9月 15 15:44 node.crt
-rw------- 1 xlf xlf 237 9月 15 15:44 node.key
-rw-rw-r-- 1 xlf xlf 129 9月 15 15:44 node.nodeid
-rw-rw-r-- 1 xlf xlf 71 9月 15 15:44 node.param
-rw-rw-r-- 1 xlf xlf 65 9月 15 15:44 node.private
-rw-rw-r-- 1 xlf xlf 174 9月 15 15:44 node.pubkey
- 将主节点其中一个节点的config.ini、start.sh、stop.sh 复制到 (新节点)node_new文件夹中
cp -r fisco/nodes/192.168.0.164/node0/config.ini fisco/nodes/192.168.0.164/node0/start.sh fisco/nodes/192.168.0.164/node0/stop.sh fisco-new/nodes/192.168.0.164/node_new/
- 修改新节点的配置文件config.ini,对于[rpc]模块,修改listen_ip、channel_listen_port和jsonrpc_listen_port;对于[p2p]模块,修改listen_port并在node.中增加自身节点信息;
sudo vim 192.168.0.164/node_new/config.ini;
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20202
jsonrpc_listen_ip=192.168.0.164
jsonrpc_listen_port=8547
[p2p]
listen_ip=0.0.0.0
listen_port=30302
; nodes to connect
node.0=192.168.0.164:30300
node.1=192.168.0.164:30301
node.2=192.168.0.164:30302 #新加入的节点p2p
#node.0 node.1 位原有主节点
- 拷贝机构agency下其他节点conf目录里的创世区块文件(agency.genesis、agency.ini)到新节点conf目录下(新节点要加入到哪个群组即拷贝哪个群组创世区块文件,这里是把新节点加入到群组agency)
cp -r node0/conf/group.1.genesis node_new/conf
cp -r node0/conf/group.1.ini node_new/conf
- 拷贝fisco-bcos二进制文件、start_all.sh、stop_all.sh到新节点目录下
cp -r fisco/nodes/192.168.0.164/fisco-bcos fisco-new/nodes/192.168.0.164/
cp -r fisco/nodes/192.168.0.164/start_all.sh fisco-new/nodes/192.168.0.164/
cp -r fisco/nodes/192.168.0.164/stop_all.sh fisco-new/nodes/192.168.0.164/
//启动新节点
./start_all.sh
- 查看p2p连接状况 count=2 表示新节点与两个主节点通信正常。
tail -f node_new/log/log* |grep connected
info|2020-09-15 15:46:12.064517|[P2P][Service] heartBeat,connected count=2
info|2020-09-15 15:46:22.064655|[P2P][Service] heartBeat,connected count=2
info|2020-09-15 15:46:32.064787|[P2P][Service] heartBeat,connected count=2
将节点加入到观察节点
- 进入主节点控制台 查看节点状况
[group:1]> getPeers
[
{
"Agency":"agency",
"IPAndPort":"192.168.0.164:44966", # 新加入节点成功
"Node":"node",
"NodeID":"91c4daf46a83152223f246b54574efde91943fd43f2b29d384364e0def0d6b58e9f9a8656ed06b2c9581b7c0cc30c9696b6428589dd499772b6c075648cd025a",
"Topic":[
]
},
{
"Agency":"agency",
"IPAndPort":"192.168.0.164:30301",
"Node":"node1",
"NodeID":"35757439212f3f76abc43abe53ff5cf2422020db8de921ddc78f0a7440d1d00a0427aee10cbc9bece999d26494d29980507a0345d1312f181d382da99a7fb494",
"Topic":[
]
}
]
[group:1]> getObserverList # 查看观察节点为空
[]
- 新加入的节点现在还是游离节点 需要将新节点的nodeId加到观察节点
新节点的nodeId 在node_new/conf/node.nodeid文件中。
cat node_new/conf/node.nodeid
91c4daf46a83152223f246b54574efde91943fd43f2b29d384364e0def0d6b58e9f9a8656ed06b2c9581b7c0cc30c9696b6428589dd499772b6c075648cd025a
[group:1]> addObserver 91c4daf46a83152223f246b54574efde91943fd43f2b29d384364e0def0d6b58e9f9a8656ed06b2c9581b7c0cc30c9696b6428589dd499772b6c075648cd025a
{
"code":0,
"msg":"success"
}
[group:1]> getObserverList
[
91c4daf46a83152223f246b54574efde91943fd43f2b29d384364e0def0d6b58e9f9a8656ed06b2c9581b7c0cc30c9696b6428589dd499772b6c075648cd025a
]
- 查看新节点同步日志
tail -f node_new/log/log*
出现如下 表示正在同步
[SYNC][id:621219a1...][Download][Request]Request blocks,frm=93314,to=93314,peer=40382014...
info|2020-09-15 18:59:44.175354|[g:1][SYNC][id:621219a1...][Download][BlockSync]Download block execute,number=93314,txs=1,hash=f2b50403...
info|2020-09-15 18:59:44.175368|[g:1][BLOCKVERIFIER][executeBlock]Executing block,txNum=1,num=93314,parentHash=36e0623976d4f4618fc9e1bfd2c3fe6923bbf60f9bebf1acfbba5d5b22c8e3f3,parentNum=93313,parentStateRoot=af3ac6c5fc29fdf200d14e224cb1380ead145b000a9cb97120fceaec1b538582
info|2020-09-15 18:59:44.176589|[g:1][g:1][STORAGE][CachedStorage]CachedStorage commit: 7 num: 93314
info|2020-09-15 18:59:44.176919|[g:1][STORAGE]Submited block task: 93314, current syncd block: 93313
info|2020-09-15 18:59:44.176930|[g:1][STORAGE]Start commit block: 93314 to backend storage
info|2020-09-15 18:59:44.176981|[g:1]Push block notify: 1-93314
此时如果访问此节点上的api 比如访问getBlockNumber 会出现如下错误。
Don't send request to this node who doesn't belong to the group
这时因为此节点在同步其余节点数据。需等待同步完成后再访问。