1. 程式人生 > >hyperledger fabric docker-compose 安裝方式(多節點)(三)

hyperledger fabric docker-compose 安裝方式(多節點)(三)

啟動多節點叢集

1. 啟動 orderer

[root@fabricorderer e2e_cli]# pwd
/root/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
[root@fabricorderer e2e_cli]# docker-compose -f docker-compose-cli.yaml up -d

啟動orderer成功的標識:出現一下資訊

nfig=0, lastConfigSeq=0): 
2018-04-05 11:47:12.154 UTC [orderer/multichain] NewManagerImpl -> INFO 0e1
Starting with system channel testchainid and orderer type solo 2018-04-05 11:47:12.154 UTC [orderer/main] main -> INFO 0e2 Beginning to serve requests

2. 啟動 org1 的第一個節點 peer0,即 peer0.org1.example.com

[root@fabric-CA e2e_cli]#  docker-compose -f docker-compose-cli.yaml up -d

[root@fabric-CA e2e_cli]# docker exec -it cli bash
[root@fabric-CA e2e_cli]# export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem [root@fabric-CA e2e_cli]# peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx -
-tls --cafile $ORDERER_CA [root@fabric-CA e2e_cli]# peer channel join -b mychannel.block [root@fabric-CA e2e_cli]# peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile $ORDERER_CA' [root@fabric-CA e2e_cli]# peer chaincode install -n mycc -v 1.0 -p \ github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

3. 啟動 org1 的第二個節點 peer1,即 peer1.org1.example.com

[root@build e2e_cli]# docker-compose -f docker-compose-cli.yaml up -d

[root@build e2e_cli]# docker exec -it cli bash

[root@build e2e_cli]# peer channel join -b mychannel.block

[root@build e2e_cli]# peer chaincode install -n mycc -v 1.0 –p \
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

4. 啟動 org2 的第一個節點 peer2,即 peer0.org2.example.com

[root@k8s03 e2e_cli]#  docker-compose -f docker-compose-cli.yaml up -d

[root@k8s03 e2e_cli]#  docker exec -it cli bash

[root@k8s03 e2e_cli]#  peer channel join -b mychannel.block

[root@k8s03 e2e_cli]#  peer channel update -o orderer.example.com:7050 -c mychannel -f ./channelartifacts/Org2MSPanchors.tx --tls --cafile $ORDERER_CA

[root@k8s03 e2e_cli]#  peer chaincode install -n mycc -v 1.0 -p \
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

5. 啟動 org2 的第二個節點 peer3,即啟動 peer1.org2.example.com

[root@k8s02 e2e_cli]#  docker-compose -f docker-compose-cli.yaml up -d

[root@k8s02 e2e_cli]#  docker exec -it cli bash

[root@k8s02 e2e_cli]#  peer channel join -b mychannel.block

[root@k8s02 e2e_cli]#  peer chaincode install -n mycc -v 1.0 -p \
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

6 執行 chaincode

通過前面的步驟,整個多節點 Fabric 網路已經執行起來了,每個 peer 都加入到了標識為 mychannel 的 channel 中,並且都安裝了一個簡單的 chaincode(該 chaincode 在安裝時被標識為 mycc) 。下面步驟執行和維護 chaincode。

例項化 chaincode
chaincode 的例項化可在任意 peer 上進行,並且 chaincode 只能被例項化一次,下面以在
peer1.org1.example.com 上例項化 chaincode 為例。

[[email protected] e2e_cli]# peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

這時候會構建一個新的容器來執行 chaincode,通過 docker ps -a 命令可以看到新容器:

[[email protected] e2e_cli]# docker ps 
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
4a8a8babec0d        dev-peer1.org1.example.com-mycc-2.0   "chaincode -peer.a..."   2 hours ago         Up 2 hours                                                           dev-peer1.org1.example.com-mycc-2.0
9c2635a9a90a        dev-peer1.org1.example.com-mycc-1.0   "chaincode -peer.a..."   2 hours ago         Up 2 hours                                                           dev-peer1.org1.example.com-mycc-1.0
45c5ad416ff2        hyperledger/fabric-tools              "/bin/bash"              3 hours ago         Up 3 hours                                                           cli
9d23589e49d2        hyperledger/fabric-peer               "peer node start"        3 hours ago         Up 3 hours          0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer1.org1.example.com
[[email protected] e2e_cli]# 

上述例項化中,我們對兩個變數‘a’和‘b’分別賦予初值 100 和 200,通過 channel 它們的值被同步到了其他 peer 的賬本上,即使其他 peer 還沒有構建執行 chaincode 的容器。

2. 執行 chaincode 的 query 交易

由於 chaincode 已經被 peer0.org2.example.com 例項化了,因此其他 peer 不需要再次例項化它了,但是 chaincode 的狀態(world state)卻是已經記錄在各個 peer 的賬本上。
接下來我們在 peer0.org1.example.com 上檢視 chaincode 的狀態,
內部執行:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
...
Query Result: 100

3. 執行 chaincode 的 invoke 交易
接下來,我們執行一個 invoke 交易,使得變數 a 向變數 b 轉帳 20,得到最終值為

peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n
mycc -c '{"Args":["invoke","a","b","20"]}'

4. 再次執行 chaincode 的 query 交易

在 peer1.org1.example.com 上重複以上檢視 chaincode 的步驟,得到返回結果為 80,說明測試通過,至此,Fabric 網路構建完畢,各個元件工作正常。

5. 更新 chaincode

peer chaincode install -n mycc -v 2.0 -p \
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
peer chaincode upgrade -o orderer.example.com:7050 --tls --cafile $ORDERER_CA \ -C mychannel -n mycc -v 2.0 -c '{"Args":["init","c", "10", "d","20"]}'

等待一段時間後,可以通過 docker ps -a 來檢視新容器構建的容器,該容器的名稱為:

[[email protected] e2e_cli]# docker ps 
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
4a8a8babec0d        dev-peer1.org1.example.com-mycc-2.0   "chaincode -peer.a..."   2 hours ago         Up 2 hours                                                           dev-peer1.org1.example.com-mycc-2.0
9c2635a9a90a        dev-peer1.org1.example.com-mycc-1.0   "chaincode -peer.a..."   2 hours ago         Up 2 hours                                                           dev-peer1.org1.example.com-mycc-1.0
45c5ad416ff2        hyperledger/fabric-tools              "/bin/bash"              3 hours ago         Up 3 hours                                                           cli
9d23589e49d2        hyperledger/fabric-peer               "peer node start"        3 hours ago         Up 3 hours          0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp   peer1.org1.example.com

通過以下命令查詢 c 的變數:

[email protected]:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","c"]}'
2018-04-05 12:36:19.592 UTC [msp] getMspConfig -> INFO 001 intermediate certs folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts: no such file or directory]
2018-04-05 12:36:19.592 UTC [msp] getMspConfig -> INFO 002 crls folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/crls: no such file or directory]
2018-04-05 12:36:19.592 UTC [msp] getMspConfig -> INFO 003 MSP configuration file not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/config.yaml]: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/config.yaml: no such file or directory]
2018-04-05 12:36:19.610 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2018-04-05 12:36:19.610 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
2018-04-05 12:36:19.610 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AAD070A6708031A0C08C3B098D60510...6D7963631A0A0A0571756572790A0163 
2018-04-05 12:36:19.610 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: 55E32E7EE59436EB076C671CEA07334F11614DB106B7713FDF9583A7EFEDA81A 
Query Result: 10

再次查詢 a 的變數:

[email protected]:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
2018-04-05 12:36:12.785 UTC [msp] getMspConfig -> INFO 001 intermediate certs folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts: no such file or directory]
2018-04-05 12:36:12.785 UTC [msp] getMspConfig -> INFO 002 crls folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/crls: no such file or directory]
2018-04-05 12:36:12.785 UTC [msp] getMspConfig -> INFO 003 MSP configuration file not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/config.yaml]: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected].example.com/msp/config.yaml: no such file or directory]
2018-04-05 12:36:12.803 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2018-04-05 12:36:12.803 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
2018-04-05 12:36:12.803 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AAD070A6708031A0C08BCB098D60510...6D7963631A0A0A0571756572790A0161 
2018-04-05 12:36:12.803 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: 0F96F27107E16006971BA985F07284E56F4A495FB73686902B34DB281C172192 
Query Result: 80

在其他節點分別執行一下命令

peer chaincode install -n mycc -v 2.0 –p \
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

end

相關推薦

hyperledger fabric docker-compose 安裝方式(節點)()

啟動多節點叢集 1. 啟動 orderer [root@fabricorderer e2e_cli]# pwd /root/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli [root@f

基於docker-compose部署tendermint節點叢集

一.我們可以通過 docker-compose 來啟動多個 container 通過官方文件我們知道啟動 tendermint 叢集需要下面幾個步驟: 每個 node 都需要通過 tendermint init 來進行初始化; 需要有一個包含所有 validator 節點

docker-compose安裝方式

1.從github上下載docker-compose二進位制檔案安裝 下載最新版的docker-compose檔案  $ sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/doc

Hyperledger Fabric 1.0 快速搭建 -------- 機部署 核心共識節點Orderer

前言 在這裡我推薦兩位大神的部落格,可以參考或者直接跟著這兩位大神學習,我是閱讀這兩位大神的部落格和《深度探索區塊鏈Hyperledger技術與應用》一書部署的 《深度探索區塊鏈Hyperledger技術與應用》作者:張增駿、董寧、朱軒彤、陳劍雄  著。 上一篇

docker-compose安裝

div let tps mod http bus class ash curl sudo curl -L https://raw.githubusercontent.com/docker/compose/1.19.0/contrib/completion/bash/do

Docker Compose 安裝 on centos7

github 權限 tps 方法 down chmod 安裝包 load 如果 1 在線安裝 1.1 下載安裝包 $ curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-comp

docker-compose 安裝

安裝 epel 安裝完成 docker ase pos div 完成 查詢 1、安裝python-pip yum -y install epel-release yum -y install python-pip 2、安裝docker-compos

docker compose安裝與常用命令介紹 及使用docker-compose執行一個進銷存管理系統

使用微服務架構的應用系統一般包含若干個微服務,每個微服務一般都會部署多個例項。如果每個微服務都要手動啟停,那麼效率之低,維護量之大可想而知 docker compose 是一個用於定義和執行多容器docker應用程式的工具   安裝: 下在並安裝適應系統版本的compose

ubuntu14.04 docker-compose安裝和使用

一、介紹 Docker Compose 是一個執行多容器 Docker 應用的工具。Compose 通過一個配置檔案來配置一個應用的服務,然後通過一個命令建立並啟動所有在配置檔案中指定的服務。 二、安裝 sudo curl -L https://github.com

docker compose安裝oracle

安裝docker環境  yum install -y epel-release yum install -y docker-io 啟動docker服務 service docker start 檢視版本: docker version

docker-compose安裝elasticsearch叢集

檔案目錄: 1、編寫docker-compose檔案 version: '3' services: es-master: image: elasticsearch:6.4.3 container_name: es-master restart

docker-compose安裝elasticsearch集群

security scrip logs ots 新增 nav res service 數據 文件目錄: 1、編寫docker-compose文件 version: ‘3‘ services: es-master: image: elastics

docker-compose安裝kafka叢集及管理監控工具

編寫docker-compose檔案配置zk 和kafka叢集 #vim kafka.yml version: '2'services:    zoo1:        image: zooke

Docker-Compose安裝Java Web例項

本文參考: docker學習筆記之五:進階實戰--mysql+tomcat Docker-Compose的介紹可參考:Docker學習——Docker 三劍客(七) 一、mysql - Docker Hub 參考資料:https://hub.docker.com/_/mysql/

docker-compose安裝部署gitlab中文版

1. 配置docker-compose 這裡用到了一箇中文版的docker映象。hub.docker.com/r/twang2218… version: '3' services: gitlab: image: 'twang2218/gitlab-ce-zh:9.4'

docker-compose安裝Hadoop

services: namenode: image: bde2020/hadoop-namenode:1.1.0-hadoop2.7.1-java8 container_name: namenode volumes: - hadoop_namenode:/hadoop/

Docker compose 安裝以及使用

  Docker compose 是用來編排很多docker容器時啟動順序的工具,單個容器可以使用docker run 來啟動,兩三個也可以用docker run 來啟動,但是,實際生產環境中,一個專案需要很多docker容器相互依賴,這時候想要一個一個啟動費事費時。這時候就需要一個工具來解決這個問題。doc

使用docker-compose安裝redash(使用原始碼檔案製作映象)檔案進行安裝

在linux系統上使用docker-compose通過原始碼中的【docker-compose.yml】檔案安裝redash,使用的是使用原始碼製作的映象檔案。 一、從GitHub上下載原始碼。 二、將下載好的redash-master.zip上傳到opt路徑下並解壓

【整理】docker-compose安裝操作

docker離線安裝 安裝docker-18.03.1-ce #解壓 [[email protected] ~]# tar xzvf docker-18.03.1-ce.tar #將

docker-compose安裝與使用

hub .com services daemon log span stop 使用 鏡像 一.簡介與安裝 1.簡介 Compose是定義和運行多容器Docker應用程序的工具,使用Compose,您可以使用YAML文件來配置應用程序的服務,然後,使用單個命令創建並啟動配置中