升级原理。就是将fabric的zk,kafka,orderer,peer(我只用的这4个)升级到最新版本;且这几个容器的关键生产数据使用volume簇放置在外面。可以参考《区块链原理、设计与应用》里面配置相关内容。
以下为各容器的关键数据位置:
1以下为关键的数据业务(那个时间最好也在外面) 2zk: 3 volumes: 4 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 5 - /opt/fabric_data/fabric_node_01/zk/data:/data 6 7 8kafka: 9 volumes: 10 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 11 - /opt/fabric_data/fabric_node_01/kafka/data:/tmp/kafka-logs/ 12 13 14 15orderer: 16 volumes: 17 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 18 - /opt/nfs/convoy_fabric/ebaoquan.org/channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block 19 - /opt/nfs/convoy_fabric/ebaoquan.org/crypto-config/ordererOrganizations/ebaoquan.org/orderers/orderer0.ebaoquan.org/msp:/var/hyperledger/orderer/msp 20 - /opt/nfs/convoy_fabric/ebaoquan.org/crypto-config/ordererOrganizations/ebaoquan.org/orderers/orderer0.ebaoquan.org/tls/:/var/hyperledger/orderer/tls 21 - /opt/fabric_data/fabric_node_02/orderer/data/:/var/hyperledger/production/ 22 23 24peer: 25 26 volumes: 27 - /var/run/:/host/var/run/ 28 - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 29 - /opt/nfs/convoy_fabric/ebaoquan.org/crypto-config/peerOrganizations/ebaoquan.org/peers/peer0.ebaoquan.org/msp:/etc/hyperledger/fabric/msp 30 - /opt/nfs/convoy_fabric/ebaoquan.org/crypto-config/peerOrganizations/ebaoquan.org/peers/peer0.ebaoquan.org/tls:/etc/hyperledger/fabric/tls 31 - /opt/fabric_data/fabric_node_01/peer/data/:/var/hyperledger/production/ 32
以下是升级:
首先下载镜像到本地:
1docker pull hyperledger/fabric-orderer:x86_64-1.1.0-preview 2docker pull hyperledger/fabric-peer:x86_64-1.1.0-preview 3 4docker pull hyperledger/fabric-kafka:x86_64-1.1.0-preview 5docker pull hyperledger/fabric-zookeeper:x86_64-1.1.0-preview 6 7docker pull hyperledger/fabric-ccenv:x86_64-1.1.0-preview //这个是生成合约执行容器的,要版本对应
然后停服务
删除所有应用,再创建所有应用,然后执行一个测试合约(就是为了生成那个执行合约的容器)。生成好合约执行的容器后,升级完成。
注意点:
1、所有关键数据一定要在volume上
2、停服务,因为换版本后那个合约执行的容器就不能用了,升级后的第一次执行合约又要创建(原来的执行容器要删除掉)
