원서 : 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 타입 등에서는 이 반복적인 과정을 검증하는 방법으로, 직접 블록을 가져와서 비교해보면 되겠죠?
  • 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"]}'
  • 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

+ Recent posts