部署指南

因为采用微服务架构,相比单体软件来说,运维部署比较复杂。

例如:微服务之间如何相互调用;启动顺序如何保证;配置项如何管理等等。

所幸微服务架构已经非常流行,相应的基础设施也已经非常成熟。其中最重要的一点就是云原生技术的发展,它大大简化了微服务架构的应用在运维部署,配置管理方面的工作。

运行环境

CITA-Cloud推荐的运行环境为k8s集群。

  • 对于开发,可以是k3s等轻量级的k8s环境。

  • 对于测试,可以是几台机器搭建的简单的k8s集群。

  • 对于生产环境,推荐有专人维护的高可用k8s集群,或者云厂商提供的容器云方案。

其优点是:

  • 不同环境的操作方式是统一的。

  • 功能灵活,强大。可以实现各种复杂的配置,自动化运维等。

  • 生态繁荣。基于云原生社区,有非常多成熟的配套工具和解决方案。

部署一条CITA-Cloud产生的链,除了准备好运行环境,还需要事先进行持久化存储和网络的设置。

持久化存储

链的节点是有状态的服务,需要挂载持久化存储保存数据。

为了方便对接不同类型的存储服务,我们使用了k8s中的PV/PVC概念对存储进行了抽象。

建议由运维人员配置StorageClass,对PV/PVC实行动态绑定。

  • 对于开发环境,可以使用简单的本地存储。

  • 对于测试环境,可以使用NFS,由单独一台磁盘比较大的机器提供存储。

  • 对于生产环境,推荐使用各种成熟的云存储,分布式存储,NAS等专业存储系统。

网络

网络方面,需要微服务之间,以及节点之间可以通过网络相互访问。

目前推荐的部署方式是,一个节点一个Pod,里面包含6个微服务的容器。

微服务之间可以直接通过本地环回网络通信。

节点间的网络通信,如果所有节点都在一个k8s集群内部,可以通过k8sService来暴露节点的网络端口。如果是跨集群的情况,则需要使用NodePort或者LoaderBalancer等服务对外暴露节点的网络端口。

工具

配置工具

当前的配置工具为cloud-config,用于生成一条链多个节点,以及每个节点内多个微服务的配置文件。

该配置工具支持常用的大部分组件;适用于各种场景,开发或是生产,单集群或者多集群;支持多种配置模式,集中式,去中心化方式。

具体使用方法,请参考代码仓库中的README

Node Operator

区块链类似于数据库,但与数据库又有一些不同的地方。相同的是都是有状态的服务,不同的是区块链在备份,迁移,升级,扩容等运维操作时都有特殊的要求。

  • 对于备份来说,区块链每个节点都是一个副本,相当于自带热备方案。冷备也跟数据库不一样,不是按时间(比如每天备份),而是要考虑区块高度。

  • 对于迁移和升级来说,区块链的节点是有身份的,因此不能先部署新的节点,再停老的节点,而是要反过来。

  • 对于扩容来说,增加节点并不能提升区块链的性能,反而会造成反效果,只能扩容cpu,内存。存储也必须所有节点一起扩充。

因此,涉及到比较复杂的运维操作,则需要一些定制开发。而Operatork8s领域就是用来扩展自定义功能的。

Node OperatorCRD的形式自定义了Backup/Restore等资源类型,提供了备份,恢复,消块,快照等针对链节点的复杂运维操作。

具体使用方法,请参考代码仓库中的README