大家可能看到我账号的前面两篇多服务器部署区块链的笔记,给用户展示了建链的最原始的一些特征步骤,可以方便理解区块链建链的操作流程。
为什么又要写这一片文章,是因为官方技术文档中的一键部署区块链,让我觉得很是方便,可以很快的应用起来,出错率少,那么下面就跟我一起吧~
文章参考腾讯区块链官网链接:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_one_click.html#id6
首先根据指示完成下载安装部分。
下面来看一下我们的节点组网拓扑结构,我们旨在建立一条三服务器三节点单群组的区块联盟链。
机器环境及每个节点的IP和端口号如下:
万分注意的一点就是每一个机构对应于一台服务器,IP地址为服务器内网IP地址。
接下来从部署网络开始,是建链的实战操作。
1:查看一键部署模板文件夹
cd~/generator
ls ./tmp_one_click
注意:
为了适应自己的组网需求,在/tmp_one_click文件夹下面,新建了机构C。
mkdir agencyC
cp agencyA/node_deployment.ini agencyC/
2:机构填写节点信息
机构A和机构B和机构C都只是一个节点,故配置文件按以下格式:
2.1:vi ./tmp_one_click/agencyA/node_deployment.ini
文件里面默认有两节点,删除一个即可,注意端口号与上表中项目的端口号一致
2.2:vi ./tmp_one_click/agencyB/node_deployment.ini
2.3:vi ./tmp_one_click/agencyC/node_deployment.ini
3:生成节点(生成全部节点,即node0、node1、node2)
bash ./one_click_generator.sh -b ./tmp_one_click
3.1:查看一下部署模板文件夹结构
ls ./tmp_one_click
ls ./tmp_one_click/agencyA/
4:推送agencyB和agencyC到其他物理机
4.1:scp -r agencyB/ root@172.XXXXX:~/
4.2:scp -r agencyC/ root@172.XXXXX:~/
172是机构B/C的物理IP
5:启动节点(A/B/C一样,以A为例。)
cd ~/agencyA/node
./start_all.sh
6:部署控制台
一条链可以有多个控制台,但是没必要每个服务器上都部署,这里为了验证共识,在机构A/B上部署控制台。
6.1:进入机构的/generator-agency文件夹
6.1.1:机构A
cd~/generator/tmp_one_click/agencyA/generator-agency
6.1.2:机构B
cd~/agencyB/generator-agency
6.2:拉取控制台
./generator --download_console ./ --cdn
6.3:配置控制台applicationContext.xml文件
该配置文件需要修改的地方是下图中添加注释的行
第一个注释,也就是list标签,list里面可以有多个bean,意思就是一个群组配置一个bean,一个节点可以同属于多个群组,所以可以有多个bean,而每个bean又可以有一个或多个节点,这里指的节点是部署在该服务器的节点。
第二个注释,群组的id,修改value值即可。你的节点加入的群组ID是多少,就填写多少,一般群组1的id就是1,群组2的id就是2,依次类推。。。
第三个注释,list中的节点ip及channel_port信息,你需要填写配置控制台所在服务器上部署的节点中属于该群组的所有节点的ip与channel_port,可以配置多个,代表该服务器上属于该群组的节点有多个。
第四个注释,连接群组的群组id(这里存在疑问就是如果有多个群组的情况下,设置哪个为连接群组呢?)
例如下图配置文件的节点网络就是:该服务器部署了四个节点,为节点1/2/3/4,节点1/2/3/4的channel_port端口分别为20200/20201/20202/20203,于此同时,节点1/2同属于群组1,节点3/4同属于群组2.
6.3.1:打开机构A和机构B的applicationContext.xml文件,并将list里面的value数值更改为:物理机IP:channel_port
由于项目的场景都是群组1,所以不需要修改群组id等属性。
6.3.2:重启节点
机构A节点:
cd ~/generator/tmp_one_click/agencyA/node &&./start_all.sh
机构B节点:
cd ~/agencyB/node &&./start_all.sh
6.4:启动控制台
6.4.1:机构A
cd~/generator/tmp_one_click/agencyA/generator-agency/console&&bash ./start.sh 1
6.4.1:机构B
cd~/agencyB/generator-agency/console&&bash ./start.sh 1
此处的命令的末尾的1是指群组1
7:控制台查看链内节点
getPeers
两台控制台查询得到的链内节点一致,证明部署成功!
好啦,到此为止,就是一键部署区块联盟链的实战操作了,如果对你有用就太好了~~~