원서 : https://hyperledger-fabric.readthedocs.io/en/release-1.4/upgrading_your_network_tutorial.html
- Upgrading Your Network Components
- Hyperledger Fabric v1.3 에서 -> v1.4.x 으로 업그래이드 하는법을 소개합니다.
- Overview
- 'v1.3 orderer 바이너리'를 Fabric v1.4.x 으로 업그래이드. (ordering 서비스 Solo -> Raft 은 다루지 않음.)
- 'v1.3 peer 바이너리'를 Fabric v1.4.x 으로 업그래이드.
- 'channel 구성(config)' 관련해서, 새로운 capability 는 없어서~ 이번에는 해당 업그래이드는 다루지 않음.
- 'cli 툴' 업그래이드.
- (Fabric CA, Kafka, CouchDB, SDK 는 별도로 다룸.)
- Launch a v1.3 network
- 일단 BYFN 기반의 v1.3 를 완전 초창기 상황으로 띄우는 것부터, 진행을 합니다. 그럼 함 시작해 보까요?
- 1) Clean up
- ./byfn.sh down
- 2) Generate the crypto and bring up the network
- ./byfn.sh generate
- ./byfn.sh up -t 3000 -i 1.3.0
- 3) Get the newest samples
- v1.4.x 를 git에서 잘 땡겨서 받으세요...
- git fetch origin
- git checkout v1.4.x
- 4) Want to upgrade now?
- 물론 BYFN에는 각종 component 업그래이드 뿐만아니라, 다양한 capabilities 도 가능한 스크립트가 있삼.
- ./byfn.sh upgrade -i 1.4.x
- (이렇게 자동으로 다 해주는건... 공부가 안되겠죠? 수동으로 차근차근 알아봅시다.)
- Upgrade the orderer containers
- orderer들의 업그래이드를 한번에 하나씩 돌려가며 합니다. 즉, 아래와 같은 순서가 될것입니다.
- 1. Stop the orderer.
- 2. Back up the orderer’s ledger and MSP.
- 3. Restart the orderer with the latest images.
- 4. Verify upgrade completion.
- 1) bringing down the orderer
- docker stop orderer.example.com
- export LEDGERS_BACKUP=./ledgers-backup
- export IMAGE_TAG=$(go env GOARCH)-1.4.x
- 2) backup its ledger and MSP
- mkdir -p $LEDGERS_BACKUP
- docker cp orderer.example.com:/var/hyperledger/production/orderer/ ./$LEDGERS_BACKUP/orderer.example.com
- 3) download and restart the orderer
- docker-compose -f docker-compose-cli.yaml up -d --no-deps orderer.example.com
- 4) verify that it has caught up to the other orderers
- peer channel fetch {number}
- Solo 타입에서는 orderer가 하나 임으로, 한번만 하면되지만, 다른 타입에서는 이 과정을 반복하면 되겠습니다.
- Kafka 타입 등에서는 이 반복적인 과정을 검증하는 방법으로, 직접 블록을 가져와서 비교해보면 되겠죠?
- orderer들의 업그래이드를 한번에 하나씩 돌려가며 합니다. 즉, 아래와 같은 순서가 될것입니다.
- Upgrade the peer containers
- peer도 orderer와 마찬가지로, 한번에 하나씩 돌려가며 업그래이드를 진행 합니다. 아래순 입니다.
- 1. Stop the peer.
- 2. Back up the peer’s ledger and MSP.
- 3. Remove chaincode containers and images.
- 4. Restart the peer with latest image.
- 5. Verify upgrade completion.
- 1) bring down the first peer
- export PEER=peer0.org1.example.com
- docker stop $PEER
- 2) backup the peer’s ledger and MSP
- mkdir -p $LEDGERS_BACKUP
- docker cp $PEER:/var/hyperledger/production ./$LEDGERS_BACKUP/$PEER
- 3) remove the peer chaincode containers
- CC_CONTAINERS=$(docker ps | grep dev-$PEER | awk '{print $1}')
- if [ -n "$CC_CONTAINERS" ] ; then docker rm -f $CC_CONTAINERS ; fi
- CC_IMAGES=$(docker images | grep dev-$PEER | awk '{print $1}')
- if [ -n "$CC_IMAGES" ] ; then docker rmi -f $CC_IMAGES ; fi
- (사실 chaincode 컨테이너는 꼭 재시작 할 필요는 없음...)
- (왜냐하면, peer가 떠있는 chaincode를 그냥 잘 사용할수있다고 함~)
- 4) re-launch the peer using the v1.4.x image tag
- docker-compose -f docker-compose-cli.yaml up -d --no-deps $PEER
- (혹은)
- docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d --no-deps $PEER
- 5) Verify peer upgrade completion
- 이렇게 peer 업그래이드를 한뒤, 완전하게 잘 보장되는지? 확인하는 법을 자세히 알아 봅시다.
- peer 업그래이드를 하더라도, organization의 '보증 정책'을 계속 만족해야 할 것 입니다.
- chaincode를 업그래이드 한 경우엔, 필수적이지만... 하지않았다면, 타버젼의 peer에게 보증받아도 됩니다.
- (뭔말? chaincode를 건들이지 않으면, 서로다른 peer간에도 '보증 정책'엔 문제없다?)
- 5-1) make sure the CLI is updated to the most current version
- docker-compose -f docker-compose-cli.yaml stop cli
- docker-compose -f docker-compose-cli.yaml up -d --no-deps cli
- 5-2) get into the CLI container
- docker exec -it cli bash
- 5-3) set two environment variables
- CH_NAME=mychannel
- ORDERER_CA=/opt/.../ordererOrganizations/.../orderers/.../msp/tlscacerts/tlsca.ex.com-cert.pem
- 5-4) issue the invoke and query
- peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CH_NAME
- --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/...peers/.../tls/ca.crt
- --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/...peers/.../tls/ca.crt
- -n mycc -c '{"Args":["invoke","a","b","10"]}'
- peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
- peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CH_NAME
- peer도 orderer와 마찬가지로, 한번에 하나씩 돌려가며 업그래이드를 진행 합니다. 아래순 입니다.
- Upgrading components BYFN does not support
- Fabric CA, Kafka, CouchDB, SDK 같은, component들도 한번 어떻게 하는지 살펴봅시다.
- (일반적인 상용환경에서 운영되는 이 conponent들은 당연히 BYFN 스크립트에서 호환되지 않겟죠?)
- Fabric CA container
- CA 인증서버 ...
- Upgrading the Kafka cluster
- Upgrading Zookeeper
- ...
- Upgrading CouchDB
- ...
- Upgrade Node SDK clients
- Upgrade Node chaincode shim
- Upgrade Chaincodes with vendored shim
- ...
-끝-
'hyperledger > fabDoc.Tutorials' 카테고리의 다른 글
5) Using Private Data in Fabric (0) | 2019.06.30 |
---|---|
3) Adding an Org to a Channel (0) | 2019.06.30 |
2) Building Your First Network (0) | 2019.06.22 |
1) Writing Your First Application (0) | 2019.06.22 |
0) Tutorials (0) | 2019.06.22 |