앞서 cryptogen 과 configtxgen 를 활용해, 'fabric 블록체인 네크워크' 에 꼭! 필요한~ 각종파일을 생성 하였습니다.
그럼 이제 fabric에서 각 역할의 node를 docker으로 띄워서, 실질적인 '블록체인 네크워크' 구축 할 수 있습니다.
- docker-compose
- 우선 docker-compose으로 각종 node를 한번에 쉽게 띄워 볼 수 있습니다.
- 사용법은 아래와 같습니다.
- docker-compose -f docker-compose-???.yaml up -d 2>&1
- (참고1)
- docker logs 6f70cd0b2a2b
- docker exec -it orderer.fabtest13.com bash
- docker exec -it peer0.samsung1.fabtest13.com bash
- http://aaa.bbb.ccc.ddd:5984/_utils/
- (참고2)
- docker network create net_basic
- docker network ls
- (참고3)
- docker-compose -f docker-compose-???.yml down --volumes --remove-orphans
- docker kill $(docker ps -q)
- docker rm $(docker ps -aq)
- docker volume prune
- docker rmi $(docker images dev-* -q)
- 저는 https://github.com/bysssss/fabric13 의 docker-compose-???.yaml 을 기반으로 실습을 진행 했습니다.
- 핵심은 orderer, peer, (couchdb) 를 잘 띄우는것 입니다.
- 부가적으로 ca, cli 도 잘 띄워야 합니다.
- networks
- // TODO : 정확히
- orderer
- orderer 도메인 기반으로 적절히 작성합니다.
- environment:
- ORDERER_GENERAL_LISTENADDRESS= ???
- ORDERER_GENERAL_GENESISFILE= 생성한 /configtx 의 genesis.block 경로
- ORDERER_GENERAL_LOCALMSPID= configtx.yaml 에서 작성한 ID값
- ORDERER_GENERAL_LOCALMSPDIR= 생성한 /crypto-config 의 /orderers/.../msp 경로
- command: orderer (orderer-node를 띄움)
- peer
- peer 도메인 기반으로 적절히 작성합니다.
- environment:
- CORE_VM_ENDPOINT= ??? 도커 내부통신 ???
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE= ??? 도커 내부망 ???
- CORE_PEER_ADDRESS= ??? 도커에서 사용할 Address ???
- CORE_PEER_LOCALMSPID= configtx.yaml 에 작성한 ID값
- CORE_PEER_MSPCONFIGPATH= 생성한 /crypto-config 의 /peers/.../msp 경로
- CORE_PEER_GOSSIP_ORGLEADER= (가십 프로토콜) Org Leader ???
- CORE_PEER_GOSSIP_USELEADERELECTION= (가십 프로토콜) 자동리더선출
- CORE_PEER_GOSSIP_BOOTSTRAP= (가십 프로토콜) ???
- CORE_LEDGER_STATE_STATEDATABASE= Ledger으로 CouchDB사용시 셋팅합니다.
- command: peer node star (peer-node를 띄움)
- couchdb
- peer의 ledger로 couchdb를 사용할 경우, 당연 띄워야 겟죠?
- environment:
- COUCHDB_USER= 옵셔널 입니다.
- COUCHDB_PASSWORD= 옵셔널 입니다.
- ca
- ...
- cli
- 우선, orderer가 genesis.block를 물고 시작을 하게되는것 볼 수 있습니다.
- (그럼으로 genesis.block를 통해, 참여하는 각 organization의 'channel MSP'가 정해진것 입니다.)
- (왜냐하면, configtx.yaml에 정의한 각 organization의 ID-Name-MSP으로 genesis.block을 만듬)
- 그리고 orderer는 ORDERER_GENERAL_LOCALMSPDIR으로 'local MSP'를 지정한것을 볼 수 있습니다.
- 그리고 peer는 CORE_PEER_MSPCONFIGPATH으로 'local MSP'를 지정한것을 볼 수 있습니다.
- (즉, 'channel&local MSP' 기반으로 orderer 및 peer 는 'organization' 과 'digital identity' 를 갖춤)
- orderer 및 peer 을 띄웠으니, 이제 fabric에서 제공하는 커맨드로 원하는 작업을 하면 됩니다.
- 그런데, 여러가지 커맨드를 편하고 깔끔하게 사용은~ 가상환경에서 하면 좋겠죠?
- 그래서 fabric-tools 도커이미지를 띄워서, 작업하는것이 바람직 합니다.
- (peer-node와 통신이 가능한 환경에서, 특정 peer-node를 환경변수값으로 지정해~ 커맨드 함)
- environment:
- CORE_VM_ENDPOINT= ???
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE= ???
- CORE_PEER_ADDRESS= 커맨드할 peer-node의 주소
- CORE_PEER_LOCALMSPID= 커맨드할 peer-node의 'local MSP ID'
- CORE_PEER_MSPCONFIGPATH= 생성한 /crypto-config 의 /users/Admin.../msp 경로
- core_peer_mspconfigpath 값이 주목할만하다.
- users의 Admin을 사용했다. (/peers/.../msp나 /users/User.../msp는 커맨드 안됨!)
- 즉, 특정 organization의 peer-node에게는 해당 Admin권한으로만 커맨드를 할 수 있는것!!!
- command: /bin/bash (커맨드를 날릴 bash셸 띄움)
- docker ps 커맨드를 통해, 아래와 같은 확인을 할수있습니다.
- // TODO : 각 컨테이너 설명해충
- docker
- 물론, docker-compose를 활용하지 않고~ 단순히 docker으로 한땀한땀 곡씹으며 띄워 볼 수 도있습니다.
- 사용법은 아래와 같습니다.
- ...
-끝-
'hyperledger > fabric.실습' 카테고리의 다른 글
fabric 실습3 : channel & chaincode (0) | 2019.05.12 |
---|---|
fabric 실습1 : cryptogen 과 configtxgen (0) | 2019.05.10 |
fabric 실습0 : 준비 (0) | 2019.05.09 |