14. 运维手册

标签:运维

部署

联盟链是由多个节点组成的分布式网络和分布式系统,节点地理位置率属于某个分区,归属关系率属于某个机构。联盟链的部署需要考虑机构、分区、节点等多个因素。下面是一些部署的基本原则:

目的 内容
1 共识有容错空间 节点数满足N=3F+1,链至少需要4个节点
2 分区容错 每个分区共识节点数量不应超过F
3 机构内避免单点故障 每个机构至少有2个节点
4 节省资源、增加效率 机构内的部分节点为观察节点
5 机构权重调整 根据各方认同的权重,调整机构内节点数量与共识节点权重

日志说明

FISCO BCOS提供了规范的日志输出格式,可以根据日志进行系统运行状态的分析、问题定位、监控统计等。

# 日志格式:
log_level|time|[module_name] content

# 日志示例:

info|2022-11-21 20:00:35.479505|[SCHEDULER][blk-1]BlockExecutive prepare: fillBlock end,txNum=1,cost=0,fetchNum=1

其中log_level为日志级别,从小到大包括trace、debug、info、warning、error、fatal,time表示日志打印时间,[module_name]表示模块名,包括共识、同步、交易池、存储等,content为具体日志内容。常规日志分析和问题定位,可查看日志说明

日志输出级别设定在config.ini文件配置,在测试环境中,建议设置为trace或debug级别,可以输出所有级别的日志,便于分析定位问题。在生产环境时,建议设置为info级别,减少日志输出量(trace和debug日志量较大),避免日志磁盘占用过多。

监控告警

FISCO BCOS的监控包括区块链监控和系统监控两部分。

【区块链监控】FISCO BCOS提供自身系统的监控工具monitor.sh,可以对节点存活、共识状态、账本情况等进行监控。monitor.sh工具可以将输出内容对接到机构自身的运维监控系统中去,使得区块链的监控可以接入机构运维监控平台。

【系统监控】除了监控FISCO BCOS节点自身,还需要从系统环境角度监控相关指标。建议运维要对节点运行的CPU、内存、带宽占用以及磁盘占用进行监控,及时发现系统环境异常。FISCO BCOS3.0 可以监控区块链是否正常工作,包括监控共识、同步是否异常、监控磁盘空间,也提供简单的接入用户告警系统的方式,可查看light_monitor.sh监控工具

数据备份与恢复

FISCO BCOS支持两种数据备份方式,可以根据需要选择合适的方式。 【方式一】:停止节点,将节点的data目录整体打包压缩并备份到其他位置,待需要的时候从备份数据解压缩,恢复节点。这种方式相当于快照一个账本状态的数据,以便后续从这个状态进行恢复,具体操作可参考节点监控配置

【方式二】:可根据数据归档服务工具,将链上数据进行归档存储。待需要恢复或新增节点时,可以将归档存储的数据进行恢复,以此实现数据备份与恢复,具体数据归档操作可参考数据归档使用

方式一的优点是无需部署新的服务和操作,运维简单,缺点是备份的是某个历史状态,从这个状态恢复的数据不是最新数据,恢复之后需要从其他节点同步账本更新的数据。方法二则与方法一相反,需要部署服务,运维成本更高,但是可以随时恢复到最新账本状态。

扩容方法

FISCO BCOS扩容主要考虑两个方面,节点数量的扩容和数量盘的扩容。

【节点数量扩容】:FISCO BCOS支持动态增加和剔除节点,以及可改变节点的身份状态(共识、观察、游离)。剔除和更改状态直接通过控制台命令就可以完成。新增节点需要通过以下几个步骤:

  1. 为新节点准备证书,用机构证书签发节点证书;

  2. 准备新节点的机器,分配好RPC和P2P的端口,确保端口可通,确保P2P端口能够其他节点互通;

  3. 生成新节点的配置,主要是config.ini中的网络配置。配置时,建议从其他节点拷贝一份,在此基础上修改网络相关配置项;

  4. 发布新节点到机器,启动该节点,验证新节点与其他节点的网络是否建立连接,排除证书问题、网络策略问题等异常;

  5. 从控制台发送命令,将新节点添加为观察节点;

  6. 此时节点不参与共识,会同步账本,并等待区块高度与其他节点达成一致;

  7. 从控制台发送命令,将新节点状态更改为共识节点。 FISCO BCOS不论是air、pro还是max都支持节点扩容,节点扩容步骤以上一致,具体内容可参考Air节点扩容Pro节点扩容Max节点扩容.

【数据盘扩容】:数据盘扩容包括Air链数据盘扩容与Max链数据盘扩容。

Air链数据盘扩容: FISCO BCOS默认采用rocksdb的存储引擎(性能比Mysql引擎高),rocksdb数据存储在本地磁盘。如果需要扩容本地磁盘,采用如下步骤:

  1. 从控制台剔除该节点,让该节点不参与共识,也不参与同步;

  2. 停止节点;

  3. 挂载新盘;

  4. 将节点迁移至新盘;

  5. 重启节点;

  6. 从控制台发送命令,将节点加入共识。 有些云平台提供一键升级、扩容硬盘等功能,上述3-4步骤可以替代此功能。

Max链数据盘扩容:Max节点在生产环境建议使用TIKV的集群版,TiKV集群版作为节点的后端可以轻松简单的实现扩容缩容。具体的扩容缩容请参考TIKV扩容

升级方法

FISCO BCOS可以友好地支持节点、合约兼容升级。

【节点升级】:FISCO BCOS采用compatibility_version来控制区块链兼容版本,在建链须决定compatibility_version,后续升级节点时,此项配置不可更改。例如建链时compatibility_version为3.1.0,后续节点升级到3.2.0、3.3.0之后,compatibility_version配置必须保持为3.1.0。节点升级步骤如下:

  1. 停止节点;

  2. 备份老版本节点的fisco-bcos二进制可执行程序,用新版本替换;

  3. 重启节点;

  4. 检查共识、同步情况,确保节点运行正常。 合约升级可参考文档智能合约的升级

密钥管理

FISCO BCOS涉及链、机构、节点、SDK的私钥和证书管理,如果采用自签证书(FISCO BCOS建链默认提供),运维需要将所有这些私钥和证书管理起来,做好备份。具体管理方式,可以采用机构自身的管理系统,也可以采用FISCO BCOS提供的密钥托管服务(需要部署和运维该服务)。涉及的证书与私钥包括:

  1. 链的私钥和证书

  2. 机构的私钥和证书

  3. 节点的私钥和证书

  4. SDK的私钥和证书

密钥与证书所有均支持国密,生成的国密证书与私钥自带sm前缀,例如正常的密钥与证书为ca.key、ca.crt,国密私钥与证书为sm_ca.key、sm_ca.crt。

TLS通信证书维护

FISCO BCOS为保证系统通信运维安全,会定期更新节点TLS通信密钥,防止攻击者在长时间内通过截获大量的密文来分析出密钥。 而密钥更新分为更新节点所有证书与密钥以及仅节点TLS通信证书两种方式,更新根证书的步骤如下:

  1. 备份原 CA 证书与密钥;

  2. 基于原 CA 证书的配置与证书签名请求,生成新的 CA 证书和密钥;

  3. 备份新 CA 证书与密钥;

  4. 节点重启,启用新的CA证书与密钥进行通信。

仅更新节点TLS通信证书步骤如下:

  1. 备份原节点TLS通信证书与密钥

  2. 基于CA证书的配置与证书签名请求,生成新的节点TLS通信证书;

  3. 备份新节点TLS通信证书和密钥

  4. 节点通信重启,启用新的CA证书与密钥进行通信。

若证书泄露,那么证书使用越久,则损失越大。 因此对证书的使用,应设置有效期,当证书超过有效期或停止使用后,对证书进行销毁,具体销毁流程如下:

  1. 检查节点通信证书有效期,若证书过期,则将证书归档后销毁,若是密钥停止使用,用户亦可在证书归档后主动销毁证书;

  2. 更新节点TLS通信密钥,产生新的通信证书;

  3. 将新证书进行备份,重启节点,启用新证书。

异常恢复

当系统出现系统故障、网络异常的情况,如断电、节点失联、网络故障等等,只需将节点进行重启操作,系统即可恢复系统的正常运行。