caliper 설치Network 실행caliper/networks/fabric/test-network.yamlcaliper/benchmarks/scenario/simple/config.yamlcaliper 실행다중 Caliper 구성(Master-Worker)Master Worker 공통 설정Worker 설정 & 실행Master 실행Master-Worker 실행법
- chaincode : simple.go - open
mdl-2.2-testnet/caliper 이름으로 clone
cd mdl-2.2-testnet git clone https://github.com/hyperledger/caliper-benchmarks.git mv caliper-benchmarks caliper cd caliper
caliper 설치
- Node version → 14.19.0 이상 필요, make, gcc
( @hyperledger/caliper-core@0.5.0: wanted: {"node":">=14.19.0","npm":">=6.14.16"} )
# /bin/bash sudo apt install -y make sudo apt install -y gcc npm install -g --only=prod @hyperledger/caliper-cli@0.5.0 caliper bind --caliper-bind-sut fabric:2.2 --caliper-bind-args=-g npm install npm install @hyperledger/caliper-core@0.5.0
Network 실행
# /bin/bash cd ../docker ./network.sh down ./network.sh up createChannel -ca -s couchdb ./network.sh deployCC -ccn simple -ccv 1 -ccl go -ccp ../caliper/src/fabric/scenario/simple/go cd ../caliper
caliper/networks/fabric/test-network.yaml
name: Caliper Benchmarks version: "2.0.0" caliper: blockchain: fabric channels: # channelName of mychannel matches the name of the channel created by test network - channelName: mychannel # the chaincodeIDs of all the fabric chaincodes in caliper-benchmarks contracts: - id: simple organizations: - mspid: Org1MSP # Identities come from cryptogen created material for test-network identities: certificates: - name: 'Admin' clientPrivateKey: path: '../docker/organizations/peerOrganizations/org1.themedium.io/users/Admin@org1.themedium.io/msp/keystore/ece14808bd3bc5ecefbfd2aa75ec785bee5d3f10332581fb194aa938f4f63ec1_sk' clientSignedCert: path: '../docker/organizations/peerOrganizations/org1.themedium.io/users/Admin@org1.themedium.io/msp/signcerts/cert.pem' connectionProfile: path: '../docker/organizations/peerOrganizations/org1.themedium.io/connection-org1.yaml' discover: true
- clientPrivateKey, clientSignedCert, connectionProfile경로의 key 파일을 local 설정에 맞춰 변경.
- channel name, certificates name, contracts ID 등도 local 설정에 맞춰준다.
- connectionProfile를 설정하여 페브릭 네트워크 정보를 제공해 주어야 한다.
# simple한 connectionProfile
---
name: test-network-org1
version: 2.0.0
client:
organization: peerorg4
connection:
timeout:
peer:
endorser: '3000'
organizations:
peerorg4:
mspid: peerorg4-caMSP
peers:
- peer4
certificateAuthorities:
- peerorg4-ca
orderers:
# caliper_orderer.yaml
orderer1:
url: grpcs://orderer1:7050
grpcOptions:
ssl-target-name-override: orderer1
hostnameOverride: orderer1
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICIjCCAcigAwIBAgIUMgY7CI7k7ci+c0gvpR5h1qTtNVkwCgYIKoZIzj0EAwIw
ZTELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK
EwtIeXBlcmxlZGdlcjEPMA0GA1UECxMGRmFicmljMRYwFAYDVQQDEw1vcmRlcmVy
b3JnLWNhMB4XDTIzMDEyNjA0MzEwMFoXDTM4MDEyMjA0MzEwMFowZTELMAkGA1UE
BhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQKEwtIeXBlcmxl
ZGdlcjEPMA0GA1UECxMGRmFicmljMRYwFAYDVQQDEw1vcmRlcmVyb3JnLWNhMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbpcc0MHWXAz/zW7dUiG4y/nMwmqKKF80
qjXsOaosztREyDvGesgTmY6ug94aD6v5QYoHDZ/hMhDI8R2yqSe4KKNWMFQwDgYD
VR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFCdOChqV
CdqEvi17RCOA+tSAhbnlMA8GA1UdEQQIMAaHBAAAAAAwCgYIKoZIzj0EAwIDSAAw
RQIhANB2GHverhZjfWI/TzZ8+AmIb2jdYR6GoBu4Te5046ZbAiBOIWuXQmpgA5vm
qAN8x4N2+GJVUBcyhsnEa+fr702WRQ==
-----END CERTIFICATE-----
peers:
peer4:
url: grpcs://peer4:7051
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICHjCCAcSgAwIBAgIUbcVEaGtlNSpqwyKJjDclCpq+/E0wCgYIKoZIzj0EAwIw
YzELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK
EwtIeXBlcmxlZGdlcjEPMA0GA1UECxMGRmFicmljMRQwEgYDVQQDEwtwZWVyb3Jn
NC1jYTAeFw0yMzAxMjYwNDMxMDBaFw0zODAxMjIwNDMxMDBaMGMxCzAJBgNVBAYT
AlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEUMBIGA1UEChMLSHlwZXJsZWRn
ZXIxDzANBgNVBAsTBkZhYnJpYzEUMBIGA1UEAxMLcGVlcm9yZzQtY2EwWTATBgcq
hkjOPQIBBggqhkjOPQMBBwNCAARluwkb/iBg8TU2UonrhBDLAAUNQGDBlCnhI01C
vZSXOEzF9ZKAasi29W/uVTqghDoYpnsSJT1FTQnBGHWBb7Fho1YwVDAOBgNVHQ8B
Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQUaYiS9vgGSbV/
rkYkimeeh2HeUUIwDwYDVR0RBAgwBocEAAAAADAKBggqhkjOPQQDAgNIADBFAiEA
6y+8nWGC/IVO1sKy0sD6Q/RiAgLQo/eOUyQMnX8hz5ECIBftCd+rUGeniQ8KCEye
NjCKVVJ6Gz5xrCHTBY8/AIYN
-----END CERTIFICATE-----
grpcOptions:
ssl-target-name-override: peer4
hostnameOverride: peer4
certificateAuthorities:
peerorg4-ca:
url: grpcs://peerorg4-ca:7054
caName: peerorg4-ca
tlsCACerts:
pem: |
-----BEGIN CERTIFICATE-----
MIICHjCCAcSgAwIBAgIUbcVEaGtlNSpqwyKJjDclCpq+/E0wCgYIKoZIzj0EAwIw
YzELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK
EwtIeXBlcmxlZGdlcjEPMA0GA1UECxMGRmFicmljMRQwEgYDVQQDEwtwZWVyb3Jn
NC1jYTAeFw0yMzAxMjYwNDMxMDBaFw0zODAxMjIwNDMxMDBaMGMxCzAJBgNVBAYT
AlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEUMBIGA1UEChMLSHlwZXJsZWRn
ZXIxDzANBgNVBAsTBkZhYnJpYzEUMBIGA1UEAxMLcGVlcm9yZzQtY2EwWTATBgcq
hkjOPQIBBggqhkjOPQMBBwNCAARluwkb/iBg8TU2UonrhBDLAAUNQGDBlCnhI01C
vZSXOEzF9ZKAasi29W/uVTqghDoYpnsSJT1FTQnBGHWBb7Fho1YwVDAOBgNVHQ8B
Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQUaYiS9vgGSbV/
rkYkimeeh2HeUUIwDwYDVR0RBAgwBocEAAAAADAKBggqhkjOPQQDAgNIADBFAiEA
6y+8nWGC/IVO1sKy0sD6Q/RiAgLQo/eOUyQMnX8hz5ECIBftCd+rUGeniQ8KCEye
NjCKVVJ6Gz5xrCHTBY8/AIYN
-----END CERTIFICATE-----
httpOptions:
verify: false
caliper/benchmarks/scenario/simple/config.yaml
simpleArgs: &simple-args initialMoney: 10000 moneyToTransfer: 100 numberOfAccounts: &number-of-accounts 20000 test: name: simple description: >- This is an example benchmark for Caliper, to test the backend DLT's performance with simple account opening & querying transactions. workers: type: local number: 3 rounds: - label: open description: >- Test description for the opening of an account through the deployed contract. txNumber: *number-of-accounts rateControl: type: fixed-rate opts: tps: 2500 workload: module: benchmarks/scenario/simple/open.js arguments: *simple-args
- Caliper 밴치마크 설정 파일.
- 여기서 setting attribute를 찾을 수 있다.
caliper 실행
npx caliper launch manager \ --caliper-workspace . \ --caliper-benchconfig benchmarks/scenario/simple/config.yaml \ --caliper-networkconfig networks/fabric/test-network.yaml
다중 Caliper 구성(Master-Worker)
Master Worker 공통 설정
- caliper.yaml (마스터-워커 모두 공통 설정)
worker:
remote: true
communication:
method: mqtt
address: mqtt://<master ip>:1883
- config.yaml (simple 시나리오의 config.yaml 파일)
workers.type: remote
Worker 설정 & 실행
- caliper-worker.sh
manager workers 갯수만큼 For문 숫자를 입력
※실행 뒷편에 & 입력 필수
for n in {1..15}; do
npx caliper launch worker \
--caliper-workspace $CALIPER_HOME \
--caliper-benchconfig ./benchmarks/scenario/smallbank/config.yaml \
--caliper-networkconfig ./networks/fabric/fabric-v1.4.1/1org1peergoleveldb/fabric-go.yaml &
done
Master 실행
- simple 시나리오의 config.yaml에서 workers.number 개수가 Worker에서 설정한 값과 같아야 함
- 예) master 1대, worker 3대로 구성한 경우
- master caliper의 simple 시나리오 config.yaml의 workers.number: 80 이면,
- worker1 caliper의 simple 시나리오 config.yaml의 workers.number: 25
- worker2 caliper의 simple 시나리오 config.yaml의 workers.number: 25
- worker3 caliper의 simple 시나리오 config.yaml의 workers.number: 30
- worker 3대 노드의 workers.number 총합 (25 + 25 + 30 = 80) 과 Master 노드의 workers.number 가 같아야 함
npx caliper launch master \
--caliper-workspace $CALIPER_BENCHMARKS \
--caliper-benchconfig $CHAINCODE_DIR/config.yaml \
--caliper-networkconfig $NETWORK_DIR/fabric-go.yaml
Master-Worker 실행법
- 먼저 Master Caliper 실행 후, Worker Caliper 실행
Share article