Fabric升级示例
1.Gossip in Hyperledger Fabric2.Ubuntu18.04安装Fabric3.Fabric-sdk-go操作Chaincode4.[比特币]比特币中的密码学原理5.一文读懂区块链(二)6.一文读懂区块链(一)7.chaincode中使用第三方库8.[比特币]比特币中的匿名性9.[比特币]比特币引发的思考10.[比特币]比特币中的分叉11.[比特币]比特币中的挖矿难度12.[比特币]比特币中的网络13.[比特币]比特币的实现14.[比特币]比特币中的共识协议15.[比特币]比特币中的数据结构16.Merkle Tree 简介17.Fabric 2.x 智能合约开发记录18.Fabric区块链浏览器(3)19.基于密码学的身份混淆系统 -- idmix20.Fabric区块链浏览器(2)21.Fabric区块链浏览器(1)22.Hyperledger Fabric系统链码介绍23.跟着文档学Fabric:获取通道配置24.从源码中解析fabric区块数据结构(一)
25.Fabric升级示例
26.Fabric网络升级(四)27.Fabric网络升级(三)28.Fabric网络升级(二)29.Fabric网络升级(一)30.Fabric网络升级(总)31.根据TxID获取上链数据32.PoW、PoS、DPoS和PBFT简介33.RPC连接btcd网络34.BTC交易流程35.MerkleTree in BTC36.BTC 地址Fabric v1.4.x升级至v2.2.0
本文首发于这里,转载请注明出处。
以fabric-samples v1.4.8
为例,将v1.4.8升级至v2.2.0。注意,所有节点以滚动的方式进行升级,这样可以保证即使单个节点数据备份过程出错也不会影响整个网络的运行。先升级orderer节点,再升级peer节点。
前期准备
- v1.4.xFabric网络
- v2.2.0 docker镜像:
- hyperledger/fabric-ca
- hyperledger/fabric-tools
- hyperledger/fabric-peer
- hyperledger/fabric-orderer
- hyperledger/fabric-ccenv
- hyperledger/fabric-baseos
升级orderer节点
升级每个orderer时,都需要执行以下操作。
1、配置orderer容器中的环境变量
方便起见,orderer容器运行时需要的环境变量可以记录在文件中,具体内容如下:
FABRIC_LOGGING_SPEC=INFO FABRIC_CFG_PATH=/etc/hyperledger/fabric ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 ORDERER_GENERAL_GENESISMETHOD=file ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block ORDERER_GENERAL_LOCALMSPID=OrdererMSP ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # enabled TLS ORDERER_GENERAL_TLS_ENABLED=true ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1 ORDERER_KAFKA_VERBOSE=true ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
2、设置升级时的环境变量
在升级排序节点前导入以下环境变量:
- ORDERER_CONTAINER:排序节点的容器名称。注意,每个节点升级时你都样设置一遍。
- LEDGERS_BACKUP:存放备份数据的路径。就如下面的示例中,每个节点都有它自己的子目录来存放它的账本。目录如果不存在的话,你需要手动创建。
- IMAGE_TAG:你期望升级到的Fabric版本,例如v2.0。
示例如下:
export ORDERER_CONTAINER=orderer.example.com export LEDGERS_BACKUP=/root/upgrade/backup export IMAGE_TAG=2.2.0
3、升级
export FABRIC_SAMPLES=/root/go/src/github.com/hyperledger/fabric-samples/ # 停止容器 docker stop $ORDERER_CONTAINER # 备份账本和MSPs docker cp $ORDERER_CONTAINER:/var/hyperledger/production/orderer/ $LEDGERS_BACKUP/$ORDERER_CONTAINER # 删除容器 docker rm -f $ORDERER_CONTAINER # 升级容器 docker run -d -v $LEDGERS_BACKUP/$ORDERER_CONTAINER/:/var/hyperledger/production/orderer/ -v $FABRIC_SAMPLES/first-network/channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block -v $FABRIC_SAMPLES/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp -v $FABRIC_SAMPLES/first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls --env-file ./env_order.list --net net_byfn --name $ORDERER_CONTAINER -p 7050:7050 hyperledger/fabric-orderer:$IMAGE_TAG orderer
升级peer节点
以peer0org1节点为例,以下操作每个peer节点都需要执行。
1、配置peer运行时的环境变量
方便起见,peer容器运行时需要的环境变量可以记录在文件中,具体内容如下:
CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_GOSSIP_USELEADERELECTION=true CORE_PEER_ID=peer0.org1.example.com CORE_PEER_ADDRESS=peer0.org1.example.com:7051 FABRIC_CFG_PATH=/etc/hyperledger/fabric CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=net_byfn CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 CORE_PEER_PROFILE_ENABLED=true CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock CORE_PEER_LISTENADDRESS=0.0.0.0:7051 CORE_PEER_GOSSIP_ORGLEADER=false CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052 CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:8051 CORE_PEER_TLS_ENABLED=true FABRIC_LOGGING_SPEC=INFO CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
2、设置升级时的环境变量
在升级peer节点前导入以下环境变量:
- PEER_CONTAINER:peer节点的容器名称。注意,每个节点升级时你都样设置一遍。
- LEDGERS_BACKUP:存放备份数据的路径。就如下面的示例中,每个节点都有它自己的子目录来存放它的账本。目录如果不存在的话,你需要手动创建。
- IMAGE_TAG:你期望升级到的Fabric版本,例如v2.0。
示例如下:
export PEER_CONTAINER=peer0.org1.example.com export LEDGERS_BACKUP=/root/upgrade/backup export IMAGE_TAG=2.2.0
3、升级
# 停止容器 docker stop $PEER_CONTAINER # 备份账本和MSPs docker cp $PEER_CONTAINER:/var/hyperledger/production $LEDGERS_BACKUP/$PEER_CONTAINER # 删除CC容器 CC_CONTAINERS=$(docker ps | grep dev-$PEER_CONTAINER | awk '{print $1}') if [ -n "$CC_CONTAINERS" ] ; then docker rm -f $CC_CONTAINERS ; fi # 删除CC镜像 CC_IMAGES=$(docker images | grep dev-$PEER | awk '{print $1}') if [ -n "$CC_IMAGES" ] ; then docker rmi -f $CC_IMAGES ; fi # 删除peer容器 docker rm -f $PEER_CONTAINER # 升级peer节点数据库 docker run --rm -v $LEDGERS_BACKUP/$PEER_CONTAINER:/var/hyperledger/production/ -v /var/run/:/host/var/run/ -v $FABRIC_SAMPLES/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp -v $FABRIC_SAMPLES/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls -p 7051:7051 --env-file env_peer.list --net net_byfn --name $PEER_CONTAINER hyperledger/fabric-peer:$IMAGE_TAG peer node upgrade-dbs # 升级peer节点 docker run -d -v $LEDGERS_BACKUP/$PEER_CONTAINER:/var/hyperledger/production/ -v /var/run/:/host/var/run/ -v $FABRIC_SAMPLES/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp -v $FABRIC_SAMPLES/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls -p 7051:7051 --env-file env_peer.list --net net_byfn --name $PEER_CONTAINER hyperledger/fabric-peer:$IMAGE_TAG peer node start
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: MonsterMeng92
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具