caliper1
caliper1

Caliper Multihost Benchmark Setup For Hyperledger Fabric

Introduction

 

 

This tutorial is indent to help you setup fabric in multiple machine and taking benchmark using caliper.

Block chain has emerged as a public ledger that records all transactions in the network and it is distributed among all the participants. It is decentralised hence no one controls the blockchain,but every individual user can inspect transaction at any time.

Later blockchain enters in the enterprise domain, where it is decentralised and at the same time the administrator of the organisation can determine the roles and permissions of each node.

Hyperledger fabric is a private blockchain framework developed by IBM and it is the first project hosted by Linux foundation.

Hyperledger caliper is a blockchain benchmark tool,its is also hosted by linux foundation.Caliper is used to measure the performance of a specific blockchain implementation such as TPS(Transaction Per Second),transaction latency,resource utilisation

 

Prerequisites

 

 

  • You should be familiar with basic hyperledger fabric.
  • Make sure your machine has the following
  • Docker version 18.09.8,
  • docker-compose version 1.17.1
  • Node.js v8.16.0
  • NPM 6.4.1

 

 

hyperledger caliper

 

Caliper Installation

 

After installing the  prerequisites, clone the caliper repository from github.

Run the command below to clone latest caliper repository.

 

Git clone https://github.com/hyperledger/caliper.git

 

Once the cloning is finished go to the caliper folder and install the required packages.

 

To install required packages go to caliper root directory follow the steps below.

npm install

npm run bootstrap

cd packages/caliper-tests-integration

npm run start_verdaccio

npm run publish_packages

npm run install_cli



 

Go to caliper-samples folder which is inside the caliper folder and run the command to ensure that caliper installation is successful.

 

caliper benchmark run --caliper-workspace ./ --caliper-benchconfig benchmark/simple/config.yaml --caliper-networkconfig network/fabric-v1.4.1/2org1peercouchdb/fabric-node.yaml

 

The above command will generate benchmark report in html format and stores it in the working directory.

 

We can setup fabric network easily by using the samples provided in the caliper-samples folder.

For this tutorial we will be using 2org1peercouchdb  of fabric 1.4.1.

As the name suggest we will be having the code to set up fabric network with two organisations each having one peer.You can also experiment with other samples with tls enabled or disabled as you prefer.For this tutorial the minimal approach is taken for basic understanding.

 

Caliper requires a benchmark configuration file and fabric network configuration file.The benchmark configuration file defines the arguments such as workload and monitoring settings. The network configuration file or the blockchain configuration file specifies the information required to interact with the backend blockchain network.

For this tutorial we will be using simple benchmark config which is provided in the samples.We need to modify the fabric network configuration file to specify ip address of the other physical machine.If you want to create more number of organisation and peers you must edit crypto-config.yaml and configtx.yaml with with required changes and generate artifacts.

 

Initially we will edit fabric-node.yaml in the first machine.This is our network configuration file that caliper requires.In the caliper samples under the network directory open  fabric1.4.1 and edit fabric-node.yaml.After editing the file should be like the following.

 

1st machine fabric-node.yaml


<script src="https://gist.github.com/devilbits/8a50cf4ea7cc0f8332238528c765e1c8.js"></script>


 

 

As mentioned earlier our first machine consist of an organisation with one peer,an orderer and a certificate authority.According to this we modify docker-compose.yaml 

 

 

1st machine docker-compose.yaml <script src="https://gist.github.com/devilbits/4cec3b568a2281ea3cc3bfd2e489c2f7.js"></script>

 

 

In the second machine we need to setup a fabric network having one organisation with single peer.We can use the samples provided in the caliper-samples directory.To do that we have to install caliper on second machine.Follow the caliper installation steps given above to install caliper on second machine

 

On the second machine we have another organisation having single peer.Here we only need to edit the docker-compose.yaml. We need to add peer from first organisation as an extra hosts so that the two peers can establish a channel and communicate.

 

After editing the file should be as below :

docker-compose.yaml

<script src="https://gist.github.com/devilbits/b600c7e1d9d6d9f59ee409410941875d.js"></script>

 

 

Run the below command to start the peer.

Docker-compose up -d

 

We have to run caliper in first machine.The second machine will join the network.

After completing all the above steps,In first machine enter the command below to get benchmark readings.We assume that you are in caliper-sample directory.if not then please make sure the path for the files in the command are entered correctly.

 

caliper benchmark run

 --caliper-workspace ./ --caliper-benchconfig benchmark/simple/config.yaml --caliper-networkconfig network/fabric-v1.4.1/2org1peergoleveldb/fabric-node.yaml


 

 Automated Caliper multi host network setup using script:

 

Prerequisites

  • Docker version 18.09.8,
  • docker-compose version 1.17.1
  • Node.js v8.16.0
  • NPM 6.4.1
  • Before running the scripts make sure you have installed the prerequisites with latest version except node,we recommend using node 8.
  • These steps are automated using shell script , there are two scripts,one for setting up the first machine and one for setting up the second machine.

 

In your first machine create a new file first_machine_setup.sh or any name you like ending with an extension .sh and copy the code below 

 

<script src="https://gist.github.com/devilbits/050d124a833681695a6e774e70f1ad81.js"></script>

 

 

If your newly created script is not executable use the command below to make it executable and run it.

 

Sudo chmod 777 first_mechine_setup.sh

 

 

In the second machine create a file second_machine_setup.sh and copy the code below

 

<script src="https://gist.github.com/devilbits/0fb6b14c97a4dcb47cc73baa77c0f10f.js"></script>

 

Run below commands to make it executable and to run.

 

Sudo chmod 777 second_mechine_setup.sh




./second_machine_setup.sh

 

To run caliper go to the caliper-samples directory and enter the code below

 

caliper benchmark run --caliper-workspace ./ --caliper-benchconfig benchmark/simple/config.yaml --caliper-networkconfig network/fabric-v1.4.1/2org1peergoleveldb/fabric-node.yaml

 

 

 

At QuillHash, we understand the Potential of Blockchain and have a good team of developers who can develop any blockchain applications like Smart Contracts, dApps, DeFi, DEX on the any Blockchain Platform like EthereumEOS and Hyperledger.

contact us button

To be up to date with our work, Join Our Community :-

Telegram | Twitter | Facebook | LinkedIn

 

Get The Latest Research And Case Studies On Blockchain Technology Delivered Directly In Your Inbox. 

JOIN OUR NEWSLETTER