1. 程式人生 > >hyperledger多機部署

hyperledger多機部署

一、環境配置

5臺伺服器全部是centos7.4

orderer 47.75.123.155 orderer.example.com orderer

peer0.org1 47.52.202.124   1G記憶體

peer1.org1 47.75.184.117

cli 啟動後如果出錯,很可能要重新安裝

總結:

1、首先所有的伺服器都要預先處理vim /etc/resolv.conf的問題,否則會有問題;

2、只有orderer伺服器需要啟動network_setup,獲取bin資料夾,並且生成channel-artifacts crypto-config 兩個資料夾

3、所有的伺服器最好都copy一下chaincode資料夾

4、peer0執行cli後,有一個mychannel.block檔案需要傳送到其餘的peer1,其中要進行多次copy,最終到其他peer的cli容器

5、peer的啟動指令碼docker-peer.yaml中有兩處是org的CA編號,需要保持一致

二、伺服器的初始化和安裝有關軟體

的描述,完成環境搭建

0、vi ~/.ssh/known_hosts

解決連線問題

1、更新依賴源 sudo yum update

2、安裝docker:

sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2

3、安裝有關的依賴

sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

4、安裝docker-ce

sudo yum install docker-ce

檢查安裝結果

docker --version

5、啟動 service docker start

6、每次自動啟動 chkconfig docker on

7、安裝curl 命令 yum install curl

8、下載docker-compose,注意不是單引號

sudo curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

cp /usr/local/bin/docker-compose /usr/bin

10、docker-compose version  如果提示許可權不足,那麼chmod +x /usr/local/bin/docker-compose

11、安裝go

curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz

解壓縮到/usr/local目錄

12、配置環境

vim /etc/profile

export PATH=$PATH:/usr/local/go/bin

export GOPATH=/opt/gopath

source /etc/profile

13、檢視go 安裝資訊

echo $PATH

go version

14、安裝git

yum install git

15、建立安裝目錄

mkdir -p /opt/gopath/src/github.com/hyperledger

16、進入安裝目錄

cd /opt/gopath/src/github.com/hyperledger

17、拉取原始碼

git clone https://github.com/hyperledger/fabric.git

18、切換到分支

cd fabric

git checkout v1.0.0   這兩個有差異!應該這樣而不是上面的 -b是新建分支的意思!

19、拉取docker

cd examples/e2e_cli/

chmod +x download-dockerimages.sh

./download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

docker images 檢視下載內容

修改vim /etc/resolv.conf 配置,將 options timeout:2 attempts:3 rotate single-request-reopen 這一行內容註釋掉 

所有節點都提前改一下,不然進入cli 指令錯誤

20、執行fabric網路    peer節點暫時不執行 orderer執行獲取bin

cd examples/e2e_cli/

./network_setup.sh up

錯誤:fatal error: unexpected signal during runtime execution

./network_setup.sh down

docker rm -f $(docker ps -aq)

解決辦法:

修改vim /etc/resolv.conf 配置,將 options timeout:2 attempts:3 rotate single-request-reopen 這一行內容註釋掉

peer也需要修改,雖然不需要啟動測試網路,但是不修改的話,進入cli,執行peer指令報錯

21、在fabric目錄下 mkdir aberic all節點

22、上一步生成了bin 在fabric/release/linux-amd64/下  orderer節點

./network_setup.sh down 先停止服務

cp -r bin /opt/gopath/src/github.com/hyperledger/fabric/aberic

還需要configtx.yaml 和 crypto-config.yaml

這兩個檔案來自/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli

cp configtx.yaml /opt/gopath/src/github.com/hyperledger/fabric/aberic

cp crypto-config.yaml /opt/gopath/src/github.com/hyperledger/fabric/aberic

copy chaincode 在 fabric/examples

cp -r chaincode /opt/gopath/src/github.com/hyperledger/fabric/aberic

配置齊全了!

22、準備有關檔案 orderer節點

準備啟動  aberic目錄下

./bin/cryptogen generate --config=./crypto-config.yaml

結果生成

org1.example.com

org2.example.com

crypto-config 目錄也添加了

生成創世區塊

export FABRIC_CFG_PATH=$PWD

在fabric/aberic目錄下執行以上

echo $PWD

輸出:/opt/gopath/src/github.com/hyperledger/fabric/aberic

23、執行創世區塊生成 orderer節點

在fabric/aberic目錄下建立channel-artifacts目錄

mkdir channel-artifacts

執行

./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel

-------

檢視ca的具體ID,寫入peer節點的docker-peer01.yaml檔案

/opt/gopath/src/github.com/hyperledger/fabric/aberic/crypto-config/peerOrganizations/org1.example.com/ca

三、orderer伺服器

1、準備docker-orderer.yaml指令碼,上傳

scp -r /Users/developer/Desktop/git/Hyperledger_singleServer/multiple/docker-orderer.yaml [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic

2、啟動orderer節點

docker-compose -f docker-orderer.yaml up -d

要關閉的話執行:docker-compose -f docker-orderer.yaml down

這裡即使有錯誤也會顯示成功,主要要docker ps來看

四、peer0.org1伺服器

不需要啟動網路產生bin

需要channel-artifacts資料夾和crypto-config資料夾,channel-artifacts資料夾包含了channel的相關資訊,crypto-config資料夾包含了所有節點的公鑰,私鑰和證書資訊。這兩個資料夾我們只在orderer伺服器上生成就行了,然後拷貝到其他機器上就可以了。

在aberic目錄下

還需要chaincode

copy chaincode 在 fabric/examples

cp -r chaincode /opt/gopath/src/github.com/hyperledger/fabric/aberic

cd fabric/aberic

scp -r [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts ./

scp -r [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic/crypto-config ./

在本地開發的機器上執行

scp -r /Users/developer/Desktop/git/Hyperledger_singleServer/multiple/docker-peer01.yaml [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic

#上傳之前docker-peer01.yaml 中要更換CA的具體ID

回到peer0.org1 fabric/aberic/

docker-compose -f docker-peer01.yaml up -d

#docker-compose -f docker-peer01.yaml down

#docker rm `docker ps -a -q`

進入 cli of peer0

docker exec -it cli bash

3、嘗試有關智慧合約指令

建立mychannel

peer channel create -o orderer.example.com:7050 -c mychannel -t 50 -f ./channel-artifacts/mychannel.tx

4、加入channel

peer channel join -b mychannel.block

peer0加入網路,由於cli是預設指向peer0的,docker-peer.yaml檔案說明

可以修改cli配置,使得指向其他的peer

5、安裝智慧合約

peer chaincode install -n mychannel -p github.com/hyperledger/fabric/aberic/chaincode/go/chaincode_example02 -v 1.0

6、例項化chaincode

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mychannel -c '{"Args":["init","A","10","B","10"]}' -P "OR ('Org1MSP.member')" -v 1.0

7、查詢

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","A"]}'

Query Result: 10

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","B"]}'

8、交易

peer chaincode invoke -C mychannel -n mychannel -c '{"Args":["invoke","A","B","8"]}'

result: status:200 

五、peer1.org1

1、修改vim /etc/resolv.conf 配置,將 options timeout:2 attempts:3 rotate single-request-reopen 這一行內容註釋掉

peer也需要修改,雖然不需要啟動測試網路,但是不修改的話,進入cli,執行peer指令報錯

2、從peer0.org1的cli中copy出mychannel.block檔案,這個需要多次中轉

3、在aberic目錄下還需要chaincode、channel-artifacts crypto-config 和啟動用的yaml指令碼

(1)copy chaincode 在 fabric/examples

cp -r chaincode /opt/gopath/src/github.com/hyperledger/fabric/aberic

(2)cd fabric/aberic

scp -r [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts ./

scp -r [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic/crypto-config ./

(3)在本地開發的機器上執行

scp -r /Users/developer/Desktop/git/Hyperledger_singleServer/multiple/docker-peer11.yaml [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic

(4)啟動

docker-compose -f docker-peer11.yaml up -d

docker ps

5a4ff44f7a41 containerID of cli   每次裝系統都不一樣,這個ID 會在後面copy mychannel.block檔案中用到

(5) 獲取mychannel.block

(5.1)首先從peer0.org1的cli中將mychannel.block考出

退出 peer0.org1 cli  (exit)

把peer0的cli中的mychannel.block copy出來到物理主機

docker cp 46370c0ca94e:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel.block /opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/

(5.2)將該檔案從peer0.org1發到peer1.org1

cd channel-artifacts  (peer0.org1)

scp -r mychannel.block [email protected]:/opt/gopath/src/github.com/hyperledger/fabric/aberic/channel-artifacts/

(5.3)想辦法把該檔案從peer1.org1的主機copy到其上的cli中

另外從本地建1個ssh 到peer1.org1

cd channel-artifacts

docker cp mychannel.block 5a4ff44f7a41:/opt/gopath/src/github.com/hyperledger/fabric/peer/

4、測試智慧合約

(1)加入peer channel join -b mychannel.block

(2)安裝智慧合約

peer chaincode install -n mychannel -p github.com/hyperledger/fabric/aberic/chaincode/go/chaincode_example02 -v 1.0

(3)查詢賬戶

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","B"]}'

18

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","A"]}' 

2

(4)交易

peer chaincode invoke -C mychannel -n mychannel -c '{"Args":["invoke","A","B","1"]}'

result: status:200

(5)交易後查詢

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","A"]}' 

Query Result: 1

peer chaincode query -C mychannel -n mychannel -c '{"Args":["query","B"]}'

Query Result: 19

(6)這裡的交易會使得peer0.org1查詢的結果也發生變化

相關推薦

hyperledger部署

一、環境配置 5臺伺服器全部是centos7.4 orderer 47.75.123.155 orderer.example.com orderer peer0.org1 47.52.202.124   1G記憶體 peer1.org1 47.75.184.117

CentOS7 - Hyperledger Fabric1.1部署中切換預設生成的證書為Fabric-CA

根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,如有不足希望不吝賜教。  目錄 一、前提 二、安裝部署Fabric-CA 1.下載安裝 2.部署 三。生成證書 1.生成fabric-ca admin證書 2建立聯盟. 3.為每個組織準備msp

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

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

hyperledger fabric--1.1--kafka部署

一、環境搭建 各個主機的配置情況: 每臺主機都需要先進行單機的區塊鏈部署,所以以下步驟適用於所有主機。 1、Docker-CE 安裝 1)安裝docker-ce step 1: 安裝必要的一些系統工具 #sudo yum install -y yum-

Hyperledger Fabric基於kafka部署

各主機角色和安裝的軟體 主機編號 A B C D IP 45.32.103.254 149.28.146.218 207.148.75.101 66.42.57.57 角色 orderer0.exampl

我對hyperledger fabric1.1.0的執著(五):solo部署

預設已安裝好fabric環境。 我這裡用兩臺伺服器,一個作為orderer節點(192.168.2.238),一個作為peer節點(192.168.2.118) 1、在orderer伺服器進入fabric原始碼目錄:cd /opt/gopath/src/github.com/hyp

區塊鏈100講:Hyperledger Fabric 區塊鏈部署

區塊鏈技術可以應用在很多領域,未來最有可能先在這些領域落地。 區塊鏈技術是利用塊鏈式資料結構來驗證與儲存資料、利用分散式節點共識演算法來生成和更新資料、利用密碼學的方式保證資料傳輸和訪問的安全、利用由自動化指令碼程式碼組成的智慧合約來程式設計和操作資料的一

Hyperledger fabric應用的部署

前面關於fabric部署的介紹都是基於單機環境下的,實際生產環境中一般會根據應用場景將節點分開部署在多臺物理機上,面臨的難題主要是不同主機間的節點如何通過網路進行通訊。 前言 這裡仍然以balance-transfer v1.0為例,嘗試將兩個組織分佈到內網中

Hyperledger Fabric 1.0 快速搭建 -------- 部署準備篇

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

部署之使用NTPD服務平滑同步時間

本文已在本人部落格https://www.nsxsg.com/archives/82首發 文章目錄 多機部署之使用NTPD服務平滑同步時間 多機部署之使用NTPD服務平滑同步時間 多機部署中時間的同步是很重要的,當然有人說了搞毛啊

部署之NFS的安裝與配置

本文已在本人部落格https://www.nsxsg.com/archives/90首發 文章目錄 多機部署之NFS的安裝與配置 多機部署之NFS的安裝與配置 NFS即網路檔案系統,說的通俗一點就是網路共享檔案。它能夠讓不同的伺服

fabric部署

fabric自定義多機叢集服務架構搭建 基於官方架構,下面自己手動搭建一個1 orderer + 1 peer 架構的fabric網路 orderer.example.com 192.168.88.240 peer0.demo.example.com

在阿里雲進行Fabric的部署需要注意的幾個坑

深藍大神的《Fabric 1.0的多機部署》等部落格給初學者很多入門的指導。從這篇部落格中可以看到深藍所用的5個節點時同一區域網下的幾個,和利用阿里雲伺服器進行多機部署有幾個地方需要注意。1. Fabric原始碼的版本不同會導致後面各種報錯(例如orderer無法啟動),直接

redission-tomcat:快速實現從單機部署部署

原文地址: http://blog.jboost.cn/2019/06/29/session-redis.html   一些專案初期出於簡單快速,都是做單機開發與部署,但是隨著業務的擴充套件或對可用性要求的提高,單機環境已不滿足需求。單機部署往多機部署切換,其中可能存在的一個重要環節就

部署之定時任務完整方案

1.場景描述 老專案需要多機部署,專案中有幾十個定時任務,一旦多機部署,定時任務就會重複執行,固定ip與錯開時間方案都存在較大弊端,最終採用的方案是:AOP+排他鎖的方式,軟體老王已驗證通過,介紹下,有需要的朋友可以參考下。 2.解決方案 軟體老王基本方案是採用:AOP+排他鎖的方式。 (1)目前老專案有幾十

超級賬本(hyperledger)生產節點部署

環境準備 * 安裝docker * 安裝docker-compose * 安裝mysql * 安裝node * 安裝dnsmasq 架構設計 四臺伺服器 docker0 ca1 couchdb0 zk0 kafka0 peer0-

超級賬本HyperLedger的Fabric“全手動”、“節點”部署教程,帶視訊演示

說明 雖然通過Building Your First Network中的docker-compose檔案可以直接啟動一個all-in-one的fabric。 但這種方式隱藏了太多的細節,只能讓人有個模糊的認識,對生產環境中部署方式、多伺服器部署,依然不清不楚, 對各

HyperLedger(3)主機部署Fabric1.0

多主機部署Fabric1.0 本文以fabric下examples/e2e_cli為例,並使用docker-compose-e2e.yaml來啟動Fabric網路。 在三臺主機上進行部署,分別orderer service、org1(包括2個p

如何在同一臺部署個tomcat服務

背景:往往不知情的同學在同一臺機器上部署多個tomcat會發現第二個tomcat啟動會報錯。而有些同學會想到可能是埠重複,然而,在server.xml改了埠還是發現不行。其實要想實現同一臺機器部署多個tomcat,需要修改配置的地方不止一個!第一個地方:找到bin/start

2+6安裝部署、部分異常處理以及使用configtxlator對區塊基本資訊查詢(kafka共識,手動非docker方式)

根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,如有不足希望不吝賜教。 本文介紹CentOS7中hyperledger-fabric1.1多機部署使用kafka共識非docker方式,大體上與之前solo共識的步驟類似,(solo共識:《CentOS7中hyperle