1. 程式人生 > >Hyperledger Fabric-v1.1多節點叢集

Hyperledger Fabric-v1.1多節點叢集

Fabric v1.1

1.環境安裝

1).安裝go 1.9.x
下載地址
http://golang.org/dl/

配置環境

#go的安裝根目錄
export GOROOT=/usr/local/go
#go的工作路徑根目錄
export GOPATH=/opt/goroot

2).安裝docker 17.06.2-ce or greater
解除安裝原來的版本

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安裝依賴包

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

設定穩定庫

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

安裝docker-ce
sudo yum install docker-ce

如果需要某個特定版本,安裝如下:
列出所有可安裝的版本

yum list docker-ce –showduplicates | sort -r

安裝

sudo yum install docker-ce-
如需要安裝 docker-ce-18.03.0.ce
sudo yum install docker-ce-18.03.0.ce

啟動 docker

systemctl start docker

設定docker 開機自啟

chkconfig docker on

啟動docker,錯誤解決

docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Wed 2018-07-18 04:12:40 EDT; 15s ago
Docs:

https://docs.docker.com
Process: 7850 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
Main PID: 7850 (code=exited, status=1/FAILURE)

Jul 18 04:12:40 vmnode1 systemd[1]: Failed to start Docker Application Container Engine.
Jul 18 04:12:40 vmnode1 systemd[1]: Unit docker.service entered failed state.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service failed.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service holdoff time over, scheduling restart.
Jul 18 04:12:40 vmnode1 systemd[1]: start request repeated too quickly for docker.service
Jul 18 04:12:40 vmnode1 systemd[1]: Failed to start Docker Application Container Engine.
Jul 18 04:12:40 vmnode1 systemd[1]: Unit docker.service entered failed state.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service failed.

解決方法

# vim /etc/docker/daemon.json
{
“graph”: “/mnt/docker-data”,
“storage-driver”: “overlay”
}
systemctl restart docker

3).安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-uname -s-uname -m > >/usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

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

2.Fabric原始碼及映象檔案

1).下載Fabric原始碼 v1.1

mkdir -p /opt/goroot/github.com/hyperledger/
cd /opt/goroot/github.com/hyperledger/
git clone http://github.com/hyperledger/fabric
#切換分支到1.1版本
git checkout -b v1.1

2).下載相應的二進位制檔案和映象檔案

cd scripts
修改bootstrap如下:
export VERSION=${1:-1.1.0}
export THIRDPARTY_IMAGE_VERSION=1.1.0
執行bootstrap.sh
./bootstrap.sh
執行這步得到以下映象
REPOSITORY TAG
hyperledger/fabric-ca latest
hyperledger/fabric-ca x86_64-1.1.0
hyperledger/fabric-tools latest
hyperledger/fabric-tools x86_64-1.1.0
hyperledger/fabric-orderer latest
hyperledger/fabric-orderer x86_64-1.1.0
hyperledger/fabric-peer latest
hyperledger/fabric-peer x86_64-1.1.0
hyperledger/fabric-javaenv latest
hyperledger/fabric-javaenv x86_64-1.1.0
hyperledger/fabric-ccenv latest
hyperledger/fabric-ccenv x86_64-1.1.0
hyperledger/fabric-zookeeper latest
hyperledger/fabric-kafka latest
hyperledger/fabric-couchdb latest

並且在當前目前下會得到/bin檔案下

configtxgen configtxlator cryptogen fabric-ca-client get-byfn.sh get-docker-images.sh orderer peer

3.啟動例子中的e2e_cli測試環境

cd examples/e2e_cli
修改base下的peer-base.yaml
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default

bash network_setup.sh up

#

4.搭建自己的環境

1.生成組織關係和身份證書 crypto-config.yaml配置檔案

編寫crypto-config.yaml

利用cryptogen工具生成

cryptogen generate –config=./crypto-config.yaml –output ./crypto-config

2.生成Ordering服務啟動初始區塊 configtx.yaml配置

首先為configtxgen工具指定configtx.yaml檔案的路徑

configtxgen -profile OrgsOrdererGenesis -outputBlock ./orderer.genesis.block

configtx.yaml配置
TwoOrgsOrdererGenesis可以用來生成Ordering服務的初始區塊檔案

3.生成新建應用通道的配置交易 configtx.yaml配置

TwoOrgsChannel模板,來生成新建通道的配置交易檔案

CHANNEL_NAME=mytestchannel
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./mytestchannel.tx
tx -channelID ${CHANNEL_NAME}

4.生成錨節點配置更新檔案

configtxgen -profile OrgsChannel -outputAnchorPeersUpdate >./channel_files/Org1MSPanchors.tx >-channelID C H A N N E L N A M E a s O r g O r g 1 M S P c o n f i g t x g e n p r o f i l e O r g s C h a n n e l o u t p u t A n c h o r P e e r s U p d a t e > . / c h a n n e l f i l e s / O r g 2 M S P a n c h o r s . t x > c h a n n e l I D {CHANNEL_NAME} -asOrg Org2MSP

4.啟動Peer節點

檢查啟動節點的所有配置是否就緒:
在/etc/hyperledger/fabric路徑下放置有編寫好的orderer.yaml(可以參考sampleconfig/orderer.yaml)
在/etc/hyperledger/fabric路徑下放置生成的msp檔案目錄、tls檔案目錄; *
在/etc/hyperledger/fabric路徑下放置初始區塊檔案orderer.genesis.block。

5.啟動Peer節點

檢查啟動所有Peer節點的所有配置是否就緒:
在/etc/hyperledger/fabric路徑下放置有對應編寫好的core.yaml(可以參sampleconfig/core.yaml);
在/etc/hyperledger/fabric路徑下放置生成的對應msp檔案目錄、tls檔案目錄。

6.建立通道

組織管理員身份可以建立應用通道
在客戶端使用Org1的管理員身份來建立新的應用通道,需要指定msp的ID資訊、msp檔案所在路徑、Orderering服務的tls證書位置,以及網路中Ordering服務地址、應用通道名稱和交易檔案。

7.加入通道

應用通道所包含組織的成員節點可以加入通道中。
在客戶端使用管理員身份將peer節點加入到通道中,需要指定所操作的Peer地址,以及通道的初始塊.

8.更新錨節點配置

在客戶端使用了Org1的管理員身份來更新錨節點配置,需要指定msp的ID資訊、msp檔案所在路徑、Ordering服務地址、所操作的應用通道、錨節點配置更新檔案,以及Orderering服務tls證書位置.

9.安裝例項化鏈碼

鏈碼在呼叫之前,必須先經過安裝(Install)和例項化(Instantiate)兩個步驟,部署到Peer節點上。