🧭
区块链技术指南
  • 前言
  • 修订记录
  • 如何贡献
  • 区块链的诞生
    • 记账科技的千年演化
    • 分布式记账与区块链
    • 集大成者的比特币
    • 区块链的商业价值
    • 本章小结
  • 核心技术概览
    • 定义与原理
    • 技术的演化与分类
    • 关键问题和挑战
    • 趋势与展望
    • 认识上的误区
    • 本章小结
  • 典型应用场景
    • 应用场景概览
    • 金融服务
    • 征信管理
    • 权属管理与溯源
    • 资源共享
    • 物流与供应链
    • 物联网
    • 数字艺术品和 NFT
    • 其它场景
    • 本章小结
  • 分布式系统核心技术
    • 一致性问题
    • 共识算法
    • FLP 不可能原理
    • CAP 原理
    • ACID 原则与多阶段提交
    • Paxos 算法与 Raft 算法
    • 拜占庭问题与算法
    • 可靠性指标
    • 本章小结
  • 密码学与安全技术
    • 密码学简史
    • Hash 算法与数字摘要
    • 加解密算法
    • 消息认证码与数字签名
    • 数字证书
    • PKI 体系
    • Merkle 树结构
    • Bloom Filter 结构
    • 同态加密
    • 其它技术
    • 本章小结
  • 比特币 —— 初露锋芒的区块链
    • 比特币项目简介
    • 比特币诞生背景
    • 工作原理
    • 挖矿过程
    • 共识机制
    • 闪电网络
    • 侧链
    • 热门问题
    • 相关工具
    • 本章小结
  • 以太坊 —— 挣脱加密货币的枷锁
    • 以太坊项目简介
    • 核心概念
    • 主要设计
    • 相关工具
    • 安装客户端
    • 使用智能合约
    • 智能合约案例:投票
    • 本章小结
  • 超级账本 —— 面向企业的分布式账本
    • 超级账本项目简介
    • 社区组织结构
    • 顶级项目介绍
    • 开发必备工具
    • 贡献代码
    • 本章小结
  • Fabric 安装与部署
    • 简介
    • 本地编译组件
    • 容器方式获取
    • 本地方式启动 Fabric 网络
    • 容器方式启动 Fabric 网络
    • 本章小结
  • 管理 Fabric 网络
    • 简介
    • 使用通道
    • 管理节点
    • 管理链上代码
    • 监听网络事件
    • 自动发现网络信息
    • 使用运维服务
    • 如何升级网络版本
    • 使用 SDK
    • 注意事项与最佳实践
    • 本章小结
  • 智能合约开发
    • 简介
    • 链码概念与结构
    • 示例一:信息公证
    • 示例二:交易资产
    • 示例三:数字货币发行与管理
    • 示例四:学历认证
    • 示例五:社区能源共享
    • 小结
  • Fabric 架构与设计
    • 简介
    • 架构设计
    • 消息协议
    • 小结
  • 区块链服务平台设计
    • 简介
    • IBM Bluemix 云区块链服务
    • 微软 Azure 云区块链服务
    • 使用超级账本 Cello 搭建区块链服务
    • 本章小结
  • 性能与评测
    • 简介
    • Hyperledger Fabric v0.6
    • 小结
  • 附录
    • 术语
    • 常见问题
    • Go 语言开发相关
      • 安装与配置 Golang 环境
      • 编辑器与 IDE
      • 高效开发工具
      • 依赖管理
    • ProtoBuf 与 gRPC
    • 参考资源链接
由 GitBook 提供支持
在本页
  • 能力类型
  • 推荐升级步骤
  • 升级排序服务
  • 升级 Peer 节点
  • 升级 CA 服务
  • 升级通道配置
  • 升级第三方组件

这有帮助吗?

在GitHub上编辑
  1. 管理 Fabric 网络

如何升级网络版本

Fabric 保持了较好的向后兼容性,从 v1.0.0 版本开始支持手动升级到更高版本。

网络升级主要包括对如下资源进行升级:

  • 核心组件:包括 Peer、Orderer、CA 等核心程序;

  • 能力配置:更新通道配置中支持的能力集合版本号,以启动新的特性;

  • 第三方资源:包括依赖的 CouchDB、Kafka 等第三方组件。

能力类型

为了避免网络多个节点运行不同版本组件时出现分叉风险,自 1.1.0 版本起在通道配置中引入了能力(Capabilities),标记节点应当支持和启用的特性。如果某节点程序版本低于能力要求则无法加入或自动退出;同时通道内高版本的节点程序在提交校验时只启用指定的特性集合检查(可参考 core/handlers/validation/builtin)。

目前能力分为三种类型,分别管理不同范围,如下表所示。

类型
功能
配置路径

通道(Channel)能力

通道整体相关能力,排序和 Peer 节点都得满足

/Channel/Capabilities

排序(Orderer)能力

排序服务能力,只与排序节点有关

/Channel/Orderer/Capabilities

应用(Application)能力

应用相关能力,只与 Peer 节点有关

/Channel/Application/Capabilities

如果要启用相应的能力,需要修改通道配置内对应配置。例如,用户可以指定通道能力为 v1.1.0,排序能力为 v1.1.0 模式下,而应用能力为 v1.3.0。此时,只有不低于 v1.1.0 版本(满足通道和排序能力的较大者)的排序节点,以及不低于 v1.3.0 版本(满足通道和应用能力的较大者)的 Peer 节点可以支持该通道。同时,即使排序节点和 Peer 节点程序版本更新(如 v2.x),仍然只会启用指定的能力集合。

需要注意能力配置只能调整到更新版本而不应回退,例如可以将能力模式 v1.3.0 更新为更高版本的 v1.4.0,反之无意义。这是因为旧版本的节点即便加入到通道内,仍然无法正常处理其中新版本启用阶段的交易。

其中,各能力集合的版本和内容(可参考 common/capabilities)如下表所示,注意并不与程序版本一致。

能力版本
起始程序版本
类型
能力内容

ChannelV1_1

v1.1.0

通道

仅供标记,程序版本为 1.1.0+

ChannelV1_3

v1.3.0

通道

支持 idemix

OrdererV1_1

v1.1.0

排序

重新提交和身份超时检查

OrdererV2_0

v2.0.0

排序

排序服务支持从 Kafka 切换到 Raft

ApplicationV1_1

v1.1.0

应用

禁止区块内重复交易Id

ApplicationV1_2

v1.2.0

应用

正式支持私有数据,支持升级私有数据成员组配置,细粒度的通道资源访问控制(ACL)

ApplicationV1_3

v1.3.0

应用

支持基于键值的背书

ApplicationV2_0

v2.0.0

应用

新的链码生命周期管理

ApplicationV2_0

v2.0.0

应用

支持 FabToken

ApplicationV2_0

v2.0.0

应用

支持链码操作

推荐升级步骤

升级排序服务

对于不改变排序模式的情况下,升级较为简单。

逐个停止排序节点,并备份本地数据,包括身份文件、账本数据、配置文件等。

升级排序服务程序。重新启动并检查是否工作正常,如获取区块、发送交易等。

如果需要改变排序模式(Kafka 变为 Raft)的情况,TBD。

升级 Peer 节点

逐个停止 Peer 节点,并备份本地数据,包括身份文件、账本数据、链码包、配置文件等。

升级 Peer 程序。重新启动并检查是否工作正常,如查询信息、发送交易提案等。

链码包如果之前有引入旧的第三方库或者 Shim 包,或者需要启用新的 API,则还要执行链码升级操作。

升级 CA 服务

停止 Fabric-CA 服务,备份数据库。

升级 fabric-ca 程序,重新启动并检查是否工作正常,如获取根证书。

$ fabric-ca-client getcacert -u https://<fabric-ca-server>:7054 --tls.certfiles tls-cert.pem

升级通道配置

按照新的格式发送通道更新请求,特别是修改对应能力域值为新的版本。

首先升级系统通道,更新通道和排序能力值,之后升级应用通道,更新应用相关能力

更新后测试网络功能,如获取新的区块正常。

升级第三方组件

包括 CouchDB、Kafka 等第三方组件,升级之前最好备份数据文件。

CouchDB 版本自 1.x 版本可以很容易升级到高版本,具体操作可以参考项目文档:http://docs.couchdb.org/en/stable/install/upgrading.html。

如果仍然使用 Kafka 模式的排序服务,则还可以升级 Kafka。

Kafka 自 0.10.0.x 版本开始保持了较好的兼容性,可以较为容易升级到更高版本。之前版本也可执行滚动升级,可参考项目文档:http://docs.couchdb.org/en/stable/install/upgrading.html。

Kafka 版本更新后需要更新 orderer.yaml 中的 Kafka.Version 域并重启 Orderer。

上一页使用运维服务下一页使用 SDK

最后更新于1年前

这有帮助吗?