需求
hyperledger fabric v1.x 升级至 v2.x
风险
- 版本跨度较大,升级步骤及组件多而杂
- 技术特性发生重大变化,从而带来系统架构变化(是否需要重新评估架构)
- 升级是单向的,一旦服务启用则无法降级,仅允许回退至备份时间点,意味着新版本启用后的数据将丢失。
- 2.x 版本于 2020 年 1 月 30 日发布,缺少经过验证的案例
- 2.x 版本对于 Java 应用改造量尚未评估
- 2.x 版本对于国密改造量尚未评估
方法
分三个阶段实施,每个阶段依次滚动升级节点(每次升级一个节点)
- 阶段一: v1.x to v1.4.2(kafka)
- 阶段二: v1.4.2(kafka) to v1.4.2(raft)
- 阶段三: v1.4.2(raft) to v2.x
阶段一 v1.x to v1.4.2(kafka)
适用任何低于 v1.4 的升级
主要过程如下:
- 依次停止 SDK, peer, orderer, kafka, zookeeper
- 备份 MSP, artifacts 文件及 zookeeper, kafka, orderer, peer 的持久化数据
- kafka 集群升级
- Orderer 升级
- Peer 升级
- capability 更新
- chaincode 升级
- SDK 升级
阶段二 v1.4.2(kafka) to v1.4.2(raft)
主要过程如下:
- 备份 zookeeper, kafka, orderer, peer 的持久化数据
- 备份应用版本及配置文件
- 动态增加 Orderer 节点(生产环境建议 5 或 7 个节点)
- 备份文件及持久化数据
- 更新通道配置
ConsensusType.State
打开维护模式 - 更新通道配置
ConsensusType.type
切换至 raft - 依次停止 orderer, kafka, zookeeper 后,仅重启 orderer
- 切出维护模式
阶段三 v1.4.2(raft) to v2.x
主要过程如下:
- 备份 orderer, peer 的持久化数据
- 备份应用版本及配置文件
- Orderer 升级
- Peer 升级
- capability 更新
- chaincode 升级
- SDK 升级