微众银行《区块链系统部署运维实践文档》开源
一个区块链项目的研发,大体需经历四个阶段的生命周期:创建、研发、运行、销毁。其中,运行是整个生命周期中最核心、时间跨度最长的阶段,重要性不言而喻。要保证项目稳定运行,离不开完善的部署和运维。
如何预估整个项目所需的硬件资源?如何避免频繁的扩容操作? 选择哪种部署方式和工具?有什么注意事项? 部署后,如何测试链的整体性能? 如何启用诸如落盘加密、权限控制等高阶特性,以保证系统安全? 如何更换现有节点的 IP 地址? 某台主机因为某些原因挂掉后,如何迁移到一台新的主机中去? 如何升级节点,以便使用新版本的只读接口? 如何新增机构?如何对某个机构新增节点? 如何进行证书管理和监控,防止证书过期? ......
微众银行区块链积极听取社区意见和建议,基于多年研发FISCO BCOS底层开源平台的经验,总结应用落地实践过程中,有关系统部署和运维实践的操作指南,沉淀了一套《区块链系统部署运维实践文档》,百科式地为上述问题提供操作指引。
作为FISCO BCOS开源社区重要的发起者和推动者,微众银行区块链持续参与开源生态共建,现已将文档全部开源回馈社区。欢迎社区共同修正、完善,协力打磨更极致顺滑的开发体验。
文档地址:
https://fisco-bcos-devops-docs.readthedocs.io/
结构上,文档从部署前、部署时、后期运维三个阶段,对区块链系统运维操作进行概括和总结,并针对区块链运维场景的常见问题,提供流程化的操作指引和解决方案。
部署前
1)统一操作规范
对于运维中的一些常用操作,推荐开发者根据自身的环境,制定一个统一的操作规范,有助于最大化减少操作失误,降低操作风险。
针对操作系统环境,做好常见的安全配置,制作统一系统镜像,不仅可以提高部署效率,提升安全系数,还可有效地降低因系统环境差异而出现问题的概率。
本文档也列出了一些基本的操作规范和常见的安全配置,供大家参考。
2)资源预估
在常见的应用服务系统中,由于有负载均衡和服务发现的机制,所以在扩容时,往往只需要启动新服务节点即可。但是,在区块链系统中,由于有准入机制的限制,节点的扩容相对复杂。
比如,在某个机构需要新增一个节点时,需要使用机构的私钥签发节点准入证书;新增某个机构时,需要用到联盟私钥对新机构签发机构证书;对于新增节点,还要确保新增节点和现有节点之间网络连接配置的正确性。
因此,在部署前,进行合理的资源评估,可以降低后期的扩容频率,且能使系统在有效承载现有业务量的同时,应对后续一定时间内的业务增长。
进行资源评估时,开发者可以参考文档中列出的主机配置和 Caliper 的压测数据,评估自己所需的硬件资源。
下图是使用 4 台 腾讯云 ECS 主机(8 核 16 G、千兆网卡、150MB/s 磁盘),在 CentOS 7.3 系统下的测试数据:
部署时
1) 准备
由于区块链具有防篡改的特性,一旦区块链系统部署成功,启动运行后,某些配置将无法进行修改,包括切换加密算法、增加落盘加密等。
因此,在实际部署操作前,建议开发者根据各自场景做好前期准备和选型,如版本、落盘加密、国密、源码编译等。
2) 部署
单机构部署:统一生成联盟、机构、节点的私钥和配置文件,部署快捷、方便,但存在私钥泄漏的风险。 多机构对等部署:各机构生成自己的私钥,然后由联盟委员会签发机构证书,节点配置亦由各机构自主生成,私钥不易外泄,安全性更高,但部署相对繁琐。
在部署工具方面,FISCO BCOS 官方提供了两套部署工具:开发部署工具(build_chain.sh)和运维部署工具(Generator)。社区开发者 @海滨,@无缺 等小伙伴组建的 FISCO BCOS 自动化工具研发兴趣小组,也贡献了一套基于 Ansible 封装的企业级部署工具(ansible-for-fisco-bcos)。在此对他们表示感谢!
对于不同的部署工具,请各位开发者根据自己的需求场景,选择相应的部署方式和部署工具进行部署。
3) 监控
引用一句运维行业的老话:“无监控、不运维”。完善的监控系统可以在事前及时预警,也可以在事后提供详实的数据,用于追查问题,有效缩短异常的平均修复时间。
监控最重要的事情在于明确监控指标。在区块链系统中,监控的指标主要包括主机状态、节点进程、共识状态、错误日志、告警信息。
对于主机状态的监控,推荐使用云平台或者通用监控服务来完成,包括CPU、内存、磁盘 IO、磁盘使用率、网络带宽等。
至于其它指标,包括区块链运维中最核心的指标——共识状态,可使用 FISCO BCOS 提供的 monitor.sh 脚本工具进行监控。
4) 验证
在部署和监控的操作完成后,需要对整个部署中的所有操作进行验证,检查部署的结果。如果遇到问题,可以参考文档的指引进行问题排查。
5) 备份
在区块链系统中,椭圆曲线算法被大量使用,所以,部署成功后,一定要对生成的节点配置做好备份。否则,一旦节点的配置丢失,几乎没有找回的可能,也意味着,该区块链系统可能再也不能用了。
后期运维
一旦部署完成,成功运行起来,并且验证成功后,也就进入到项目生命周期中最重要的阶段:运行阶段,这也意味着整个系统进入后期运维阶段。
在文档的运维管理部分,罗列了区块链运维中的常见操作:压力测试、安全控制、机构管理、群组管理、节点管理、节点升级、节点迁移、证书管理、磁盘扩容等。
使用过程中,如你发现文档有任何遗漏或不足,欢迎大家提交Pull Requests进行校正和补充。
开源文档仓库
GitHub :
Gitee :
https://gitee.com/WeBankBlockchain/FISCO-BCOS-DevOps-Docs
如果文档对你有帮助,欢迎点亮我们的小星星(点击项目左上方Star按钮)。 提交Pull Requests,进行修订和完善。 如果发现文档存在安全漏洞,可通过以下地址上报:
https://security.webank.com/ 如果遇到问题,可在公众号对话框回复【小助手】,进入微众银行区块链交流群咨询。