Hyperledger Caliper

Stella981
• 阅读 470

在这个教程中,我们将学习如何使用Hyperledger Caliper对包含多个排序节点的Fabric网络进行基准测试,我们使用Docker Swarm作为容器编排工具。

Hyperledger Fabric区块链开发教程:

1、待测Fabric网络的基本配置

测试环境使用3台虚拟机,配置如下:

  • Google cloud VM instance (n1-standard-4)
  • 4 vCPUs, 15 GB memory
  • Ubuntu 18.04.2 LTS

每台虚拟机需要提前安装以下软件:

  • Docker version 18.09.8, build 0dd43dd87f or above
  • docker-compose version 1.17.1 or above
  • Node.js v8.16.0
  • NPM 6.4.1

2、待测Fabric网络的拓扑结构

需要测试的Hyperledger Fabric网络中包含3个参与机构,共3个排序节点采用Raft共识算法, 每个机构提供1个排序节点和1个对等节点,对等节点使用GoLevelDB作为状态数据库。

3、安装Hyperledger Caliper

首先参考官方文档在HOST1上安装Hyperledger Caliper。

然后在单机模式下运行基准测试以确认Hyperledger Caliper安装正确。

在所有参与Fabric网络的虚拟机上克隆Hyperledger Caliper软件仓库,或者创建HOST1的镜像。

在所有虚拟机上将本文提供的测试网络配置文件 克隆到本地以下目录:

~/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft

现在,我们已经准备好了进行Hyperledger Caliper基准测试的Fabric网络环境。下图展示了本文 示例基准测试的架构(Fabric version 1.4.1, 3org1peergoleveldb, Fabric-CCP adaptor):

Hyperledger Caliper

查看虚拟机的内部IP,确保虚拟机之间可以彼此通信。你可能需要配置防火墙规则以放行Caliper使用的某些端口,例如7050,7051,7054,8051,8054等。

4、运行Caliper基准测试

我们使用Docker Swarm来管理容器。

4.1 创建Docker Swarm

首先在我们运行基准Caliper测试的虚拟机上创建一个Docker Swarm。如果你的所有主机在同一个网段,你也可以使用主机的内部IP。

$ docker swarm init --listen-addr HOST1-REACHABLE-PUBLIC-IP:2377

注意:在上面的命令中,需要将IP换成你自己的IP。

运行上述命令后应当可以看到如下输出显示:

# To add a worker to this swarm, run the following command:
#    docker swarm join --token xxxxxxxxxxxxx IP:2377

这意味着你的Host1已经作为管理者加入了Swarm。

4.2 将其他节点加入Swarm集群

将以下命令复制到其他主机并执行:

docker swarm join --token xxxxxxxxxxxxx IP:2377

上述命令执行后将输入如下内容,表示该主机已经加入Swarm集群:

# This node joined a swarm as a worker.

在所有需要运行Caliper基准测试的机器上运行上述命令以加入Swarm集群。

注意:所有参与Hyperledger Caliper基准测试的主机上,Caliper仓库的目录都应该和HOST1上的一致,因为系统需要在此路径定位密码学材料。例如:

#home/HOST1/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/
#home/HOST2/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/
#home/HOST3/caliper/packages/caliper-samples/network/fabric-v1.4.1/swarm-3org1peer-raft/

4.3 检查Docker Swarm状态

在HOST1上运行以下命令查看Swarm集群中的主机清单:

$ docker node ls

结果如下:

ID        HOSTNAME         STATUS   AVAILABILITY     MANAGER STATUS 
xxx *   caliper-latest      Ready     Active             Leader   
xxx     caliper-latest2     Ready     Active
xxx     caliper-latest3     Ready     Active

4.4 将Fabric服务容器分配到主机

在编辑器里打开 docker-swarm-compose-tls.yaml文件,该文件中Services下定义了Peer/Order/CA容器。在Service定义的末尾部分可以找到容器部署的细节:

deploy:
    placement:
        constraints: [node.hostname ==  YOUR-HOSTNAME]

YOUR-HOSTNAME修改为你希望该服务部署的目标主机名。

4.5、运行Hyperledger Caliper基准测试

现在在HOST1的Caliper目录下运行如下命令启动基准测试:

$ caliper benchmark run -w ./packages/caliper-samples \
          -c benchmark/simple/config.yaml \
          -n network/fabric-v1.4.1/swarm-3org1peer-raft/fabric-ccp-go-tls.yaml

原文链接:Hyperledger Caliper多排序节点基准测试 — 汇智网

点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
1年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
1年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
1年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Stella981 Stella981
1年前
Angular material mat
IconIconNamematiconcode_add\_comment_addcommenticon<maticonadd\_comment</maticon_attach\_file_attachfileicon<maticonattach\_file</maticon_attach\
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
7个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为