Hyperledger Fabric 1.澳门美高梅手机网站0 从零起头(五)——运行测试e2e

4:制造Fabric多节点集群

3:运行测试e2e

4.1、配置表达

首先可以依据官方Fabric自带的e2e_cli列子中的集群方案来生成大家温馨的集群,与案例不同的是我们需要把容器都分配到不同的服务器上,相互之间通过网络来拓展通信,网络构建形成后则展开连锁的channel和chaincode操作。

作者近日提请了五台服务器,所有的服务器均是按照上述e2e_cli环境构建与测试步骤配置。计划之中四台服务器运行peer节点,其余一台服务器运行orderer节点,为其他三个节点提供order服务。

虚拟机具体参数如下表所示:

名称

ip

节点标识

节点Hostname

Organization(组织机构)

Server1

10.130.116.8

orderer

orderer.example.cn

Orderer

Server2

10.130.116.9

sp0

peer0.org1.example.cn

Org1

Server3

10.130.116.10

sp1

peer1.org1.example.cn

Org1

Server4

10.130.116.25

sp2

peer0.org2.example.cn

Org2

Server5

10.130.116.27

sp3

Peer1.org2.example.cn

Org2

 

 

3.1、运行fabric-samples的问题求证

该问题求证可以解决6.1、平台特定使用的二进制文件配置第一步的问题。能够接纳继续读书该表明,或者等参考到6.1小节时再反向阅读本作证,具体在6.1中会重新指向本步骤。

一般情状下,我们会参考官网来成功首个网络测试,在该在线文档中会让我们去下载一个fabric-samples,下载地址在github上,我们需要将其下载至地方是一个fabric-samples-release文件夹,将其改名为fabric-samples随后上传至opt/gopath/src目录下。

遵守官网指示执行的命令是无力回天运转起first-network这么些类型,该demo需要先下载
Platform-specific Binaries(特定的二进制文件),遵照合法文档中的描述,需要先举行如下命令:

curl -sSL https://goo.gl/iX9dek | bash

上述命令会下载自动化部署脚本,同时也会下载平台特定使用的二进制文件才cryptogen、configtxgen、configtxlator以及peer,把他们放到上述仓库的bin目录下。

平凡执行上述命令并不可以下载,即便是能下载,速度也奇慢无比,故此,大家离线下载相关二进制文件来实施上述操作。

在官网给出的执行命令中并从未给出离线下载地址,且官网也从未离线部署表达,我们可以在1.4.2中下载的fabric源码中找到下载地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目录下有一个bootstrap-1.0.0.sh脚本文件,事实上假如外网访问规格优越的事态下,直接运行该脚本即可下载所有所需的fabric镜像文件及官方指定所需的二进制文件。

开辟bootstrap-1.0.0.sh(最近风行版为1.0.0,以实际为准),找到其中对“Downloading
platform binaries”的输出行,近期所见是“echo “===> Downloading
platform binaries””,查看其针对性的下载地址,可以取得一个官网提供的离线下载网址,按照上下文意思及当前我们所选拔的版本信息,可以赢得终极的离线下载文件地方,下载该文件到本地。

遵照官网的介绍,解压后会拿到一个bin文件夹,将其解压至/opt/gopath/src/github.com/hyperledger/fabric-samples目录下即可运行first-network等品类。

 

4.2、生成公私钥、证书、创世区块等

公私钥和注明是用来Server与Server之间的日喀则通信,此外要成立channel并让其他节点参预channel就需要创世区块,这多少个不可或缺文件都得以透过一个命令生成,并且官方已经交由了本子,在如下目录中的文件:

/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/ generateArtifacts.sh

动用generateArtifacts.sh生成证书和config.tx,具体执行命令如下:

bash generateArtifacts.sh mychannel

此间创办了5台服务器,在任意一台服务器的该目录下执行此项命令即可,将会变卦五个目录,它们各自为channel-artifacts和crypto-config,多少个目录的结果和意义如下视图:

 澳门美高梅手机网站 1

在上述目录里的文书用于orderer成立channel,它们遵照configex.yaml的布置生成。

 澳门美高梅手机网站 2

 在上述目录里有orderer和peer的证件、私钥和用来通信加密的tls证书等文件,它通过configex.yaml配置文件生成。

 

3.2、运行e2e_cli项目

进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,文件结构如下图所示:

澳门美高梅手机网站 3

network_setup.sh是一件测试脚本,该脚本启动5个docker容器,其中4个容器运行peer节点和1个容器运行orderer节点,它结合一个Fabric集群。此外还有一个cli容器用于实践创立channel、参预channel、安装和进行chaincode等操作。测试用的chaincode定义了两个变量,在实例化的时候会给那六个变量赋予了起首值,并通过invoke操作可以使三个变量的值暴发变化。

由此以下命令执行测试:

bash network_setup.sh up

接下去会有不少的调试音信,具体可参考e2e_cli目录下的script/script.sh文件,当终端出现以下消息时,表达测试通过,所有部件正常干活:

澳门美高梅手机网站 4

其一命令可以在本机启动4+1的Fabric网络并且开展测试,跑Example02这么些ChainCode。大家得以看来每一步的操作,最终认同单机没有问题。确认大家的镜像和本子都是常规的,我们就可以关闭Fabric网络,继续我们的多机Fabric网络设置工作。关闭Fabric命令:

bash network_setup.sh down

 

4.3、配置多服务器

据悉4.2的方案,以及往日所述的gopath目录等布置方案,我们只要所有的服务器都听从该文档的配备来操作,所有服务器都有Fabric源码且目录为

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

 

 我们在Server1上推行如下命令生成构建Fabric网络所需的积极分子评释等必备材料:

bash generateArtifacts.sh mychannel

 

 如4.2中所述,该命令只需在其间某一台服务器上运行两遍即可,另外服务器无需重新运行。

在运转该命令的服务器/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下会生成channel-artifacts和crypto-config目录,需要把它们拷贝到其余服务器相同的e2e_cli目录下,假设在其它服务器中早已存在该目录,则先把此目录删除。

当有着服务器都有同一个channel-artifacts和crypto-config目录后,接下去就伊始布局compose文件。

 

3.3、e2e_cli与Linux内核bug

该Fabric网络集群测试环境在Linux内核低版本上恐怕会并发问题,那是旧版内核的bug,比如在实施bash
network_setup.sh up的时候会油但是生如下错误:

澳门美高梅手机网站 5

即执行chaincode开始化的时候报错,导致集群单机不能起动。

解决方案,使用新型版稳定版的docker(笔者写文档时的新型稳定版为:17.06.0-ce),将Linux内核升级到最新版,笔者原先使用的Linux内核是3.10,出现了上述问题,近日作者利用的木本版本是4.12.5-1.e17,可以系数运行Fabric集群环境。

切实可以参照Can´t specify memory limit in docker run and docker
compose

 

4.4、设置peer0.org1.example.com节点的docker-compose文件

e2e_cli中提供了三个yaml文件,我们可以依照docker-compose-cli.yaml文件创造,具体可实施如下命令:

cp docker-compose-cli.yaml docker-compose-peer.yaml

 

接下来修改docker-compose-peer.yaml,去掉orderer的安排,只保留一个peer和cli,因为大家要多级部署,节点与节点在此以前又是经过主机名通讯,所以需要修改容器中的host文件,也就是extra_hosts设置,修改后的peer配置如下:

1 peer0.org1.example.com:
2     container_name: peer0.org1.example.com
3     extends:
4       file:  base/docker-compose-base.yaml
5       service: peer0.org1.example.com
6     extra_hosts:
7      - "orderer.example.com:10.130.116.8"

 

 同样,cli也亟需可以和各样节点通讯,所以cli下边也急需添加extra_hosts设置,去掉无效的借助,并且去掉command这一行,因为大家是各样peer都会有个照应的客户端,也就是cli,所以自己只需要去手动执行一遍命令,而不是机动运行。修改后的cli配置如下:

 1 cli:
 2     container_name: cli
 3     image: hyperledger/fabric-tools
 4     tty: true
 5     environment:
 6       - GOPATH=/opt/gopath
 7       - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
 8       - CORE_LOGGING_LEVEL=DEBUG
 9       - CORE_PEER_ID=cli
10       - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
11       - CORE_PEER_LOCALMSPID=Org1MSP
12       - CORE_PEER_TLS_ENABLED=true
13       - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
14       - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
15       - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
16       - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
17     working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
18     volumes:
19         - /var/run/:/host/var/run/
20         - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
21         - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
22         - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
23         - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
24     depends_on:
25       - peer0.org1.example.com
26     extra_hosts:
27      - "orderer.example.com:10.130.116.8"
28      - "peer0.org1.example.com:10.130.116.9"
29      - "peer1.org1.example.com:10.130.116.10"
30      - "peer0.org2.example.com:10.130.116.25"
31      - "peer1.org2.example.com:10.130.116.27"

 

 在3.2演示单机形式下,4个peer会映射主机不同的端口,可是我们在多机部署的时候是不需要映射不同端口的,所以需要修改base/docker-compose-base.yaml文件,将具有peer的端口映射都改为同一的:

1 ports: 
2   - 7051:7051 
3   - 7052:7052 
4   - 7053:7053

 

 

4.5、设置peer1.org1.excmple.com节点的docker-compose文件

与peer0.org1.example.com节点compose文件配置一样,然则需要将开行的容器改为peer1.org1.example.com,并且添加peer0.org1.example.com的IP映射,对应的cli中也改成对peer1.org1.example.com的借助。这是修改后的peer1.org1.example.com上的配置示范:

 1 peer1.org1.example.com:
 2     container_name: peer1.org1.example.com
 3     extends:
 4       file:  base/docker-compose-base.yaml
 5       service: peer1.org1.example.com
 6     extra_hosts:
 7      - "orderer.example.com:10.130.116.8"
 8      - "peer0.org1.example.com:10.130.116.9"
 9 
10   cli:
11     container_name: cli
12     image: hyperledger/fabric-tools
13     tty: true
14     environment:
15       - GOPATH=/opt/gopath
16       - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
17       - CORE_LOGGING_LEVEL=DEBUG
18       - CORE_PEER_ID=cli
19       - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
20       - CORE_PEER_LOCALMSPID=Org1MSP
21       - CORE_PEER_TLS_ENABLED=true
22       - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt
23       - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key
24       - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt
25       - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
26     working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
27     volumes:
28         - /var/run/:/host/var/run/
29         - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
30         - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
31         - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
32         - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
33     depends_on:
34       - peer1.org1.example.com
35     extra_hosts:
36      - "orderer.example.com:10.130.116.8"
37      - "peer0.org1.example.com:10.130.116.9"
38      - "peer1.org1.example.com:10.130.116.10"
39      - "peer0.org2.example.com:10.130.116.25"
40      - "peer1.org2.example.com:10.130.116.27"

与上述接近,可以再度设置peer0.org2.example.com及peer1.org2.example.com节点compose配置文件。

 

4.6、设置order节点的docker-compose文件

与创立peer的配备文件类似,大家也复制一个yaml文件出来举办改动:

cp docker-compose-cli.yaml docker-compose-orderer.yaml

orderer服务器上我们只需要保留order设置,其他peer和cli设置都足以去除。orderer可以不设置extra_hosts。

以下是order
compose的安排示范:

1 orderer.example.com:
2     extends:
3       file:   base/docker-compose-base.yaml
4       service: orderer.example.com
5     container_name: orderer.example.com

 

 

本章节及后边的一章可以一贯参阅:Fabric
1.0的多机部署
,在这位教授的博客里写的异常理解,而且我也是参考那篇博客来成功多机多节点自动部署方案的,只是手动调配及后续操作在网上基本上并未可供参考的华语内容,需要查阅官网文档来渐渐实现。

发表评论

电子邮件地址不会被公开。 必填项已用*标注