续前文,开始进行区块链部署。
部署前准备
首先清楚联盟链,是需要多家机构组成联盟,因此在部署上稍微有区别。其中 FISCO BCOS
支持多群组概念,也就是意思说,多个组织组成多个联盟,而且联盟中可以允许共同的组织节点。
FISCO BCOS
部署需要 Linux
平台,建议使用 CentOS 7
平台,同时安装可能的依赖软件 OpenSSL
和 Python
等。
安装部署工具
如果未安装部署工具,请先安装部署工具。
部署工具有两种安装方法,第一从其他组织拷贝,其次是在线安装。
从其他组织拷贝的工具,需要安装 Python的 configparser
包。
在线安装的方法需要使用 git 工具下载:
git clone https://github.com/FISCO-BCOS/generator.git |
该工具为 Python 需要安装相应的依赖,执行项目的命令安装。
cd generator |
完成之后就可以下载部署工具了。
./generator --download_fisco ./meta |
由于工具可用自动进行一些证书的生成,因此使用组织自己的 cert.cnf
替换 generator/scripts
目录下的同名文件。
新建节点
一般情况下,一个组织创建节点意味要加入新的群组了,因此二者是对应的。
首先将之前CA下发的证书以及自己组织的私钥存放在 meta 目录下,一般情况下文件如下:
ca.crt agency.crt agency.key |
然后修改 meta/node_deployment.ini
格式如下,主要根据实际修改
[group] |
根据实际配置,实际几个节点就配置几个。注意此处的P2P IP地址,需要其他节点可访问的地址。
配置完成之后就可以生成节点证书了,
./generator --generate_all_certificates ./agency_node_info |
会在目录下生成类似下面的文件
cert_127.0.0.1_30300.crt cert_127.0.0.1_30301.crt peers.txt |
至此必须的信息已经产生了,需要统一操作,在此协商某个组织担任群组的领导组织,该组织负责协调和生成群组信息。
所有其他群组将刚产生的 agency_node_info
目录下的文件统一提交给这个协商出来的领导组织来负责统一处理。
群组领导者操作
将获取到的 peers.txt
文件(含自己的)合并,形成 peers_all.txt
。
将收集到的 crt
文件统一存放到 meta
目录下。
修改 conf/group_genesis.ini
文件,把所有节点信息填入,群组ID根据实际规划填写
[group] |
然后执行下面的命令生成群组文件
./generator --create_group_genesis ./group |
会在 group
目录下生成群组文件 group.1.genesis
(1是群组号,根据实际可能不同)
现在将 group.1.genesis
和 peers_all.txt
下发给所有群组内的组织。
所有组织的操作(含组织领导)
各个组织将 group.1.genesis
和 peers_all.txt
放到 meta
下,然后复制一份 peers_all.txt
为 peers_others.txt
并将本组织的节点从中删除,然后执行生成节点
./generator --build_install_package ./meta/other_peers.txt ./node |
然后就在 node
目录生成了可运行的节点以及配置,并且提供了启动所有的功能,执行
bash node/start_all.sh |
新增组织的操作
这里有必要说一下,如果区块链已经运营了,而需要新增某个组织进入,此时该组织按照上面所有组织的操作进行,不同之处在于执行完成之后,需要领导节点的配合。操作如下(有本节点和领导节点的配合操作,请注意):
新组织查看
node/node_x.x.x.x_xxx/conf/node.nodeid
将获取的节点ID提交给领导组织,大概128字节长。领导组织获取节点ID之后,通过控制台注册
addSealer {nodeid}
控制台操作稍微附录介绍
节点扩容与退出
节点扩容
扩容节点的方案是生成节点,然后在其他节点加入P2P网络,之后在链上注册。
首先下载节点生成脚本
curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh && chmod u+x gen_node_cert.sh |
然后执行生成新节点命令,假设生成到 node_new
目录
./gen_node_cert.sh -c ./meta -o node_new |
然后将生成的节点目录拷贝到 node
目录下重命名(按其他节点命名规则)
然后将群组内其他节点的 config.ini
start.sh
stop.sh
等文件拷贝到新节点目录下
然后修改 config.ini
根据本节点实际情况填写
再拷贝群组内其他节点的 group.X.genesis
group.X.ini
文件到 conf
目录,不修改
然后执行节点目录内的 start.sh
即可启动节点。
注意:因为新节点接入,建议群组内其他节点的P2P 列表添加新节点并重启。
接下来该新节点参照前述内容进行链上注册。
节点退出
节点退出与节点扩容操作相反,大致需要以下几步
首先在有权限的控制台上将该节点设置为游离节点
然后在群组内其他节点将该节点P2P信息删除
然后重启群组内节点,如果某个节点没有配置过该P2P,可不用重启
黑白名单
默认未做设置的话,没有任何限制,当启用任意黑名单或白名单,功能就启用了。
在配置文件的 config.ini
中有黑白名单配置,其中
certificate_blacklist
是黑名单certificate_whitelist
是白名单配置
其中黑名单优先(黑白名单都有的节点,黑名单生效)
附录
控制台下载
./generator --download_console ./ --cdn |
下载完成之后,修改 console/conf/applicationContext.xml
内节点信息,并将节点的证书和CA证书等拷贝到目录,进入控制台需要权限,命令如下
cd console |
PKCS账号使用 -p12
参数。账号见账号生成,同时请注意账号权限。
账号生成
区块链使用的是公私钥认证的方式,因此所有的操作都基于此。
针对账号创建,由于 OpenSSL
的操作较为繁琐,此处有集成的脚本实现
curl -LO https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/get_account.sh && chmod u+x get_account.sh && bash get_account.sh -h |
直接执行shell可以默认生成PEM格式的公钥私钥和地址,见输出内容。
如果需要带密码的PKCS12格式,使用下面的命令
bash ./get_account.sh -p |
请务必保存好私钥。