手動でfabricネットワークを構築する
22953 ワード
手動でfabricネットワークを構築する
準備作業
1.ノードを起動する前にアカウントを生成するクライアント peerノード ordererノード 2.創始ブロックとチャネル情報をプロファイルに書き込み、創世ブロックとチャネルに必要なファイルを生成する
3.docker-composeプロファイル
ノードの操作チャネルを作成し、以前に生成されたチャネルファイル に基づいてすべてのpeerノードをチャネルに追加する 作成されたスマート契約をpeerノードに インストールチェーンコードの初期化 テスト->クライアント経由 帳簿 を読む帳簿 を書く
証明書ファイルの生成
作業ディレクトリの作成
プロファイルを指定したファイルにリダイレクト
証明書テンプレートの編集
証明書ファイルの生成
創始ブロックファイルとチャネルファイルの生成
yamlにおける変数の定義と使用
定義#テイギ#
使用
アンカーノード
現在の組織を代表して他の組織と通信する通常の
プロファイルの作成テンプレート
作成ブロックファイルの生成
-profileの後のパラメータはconfigtx.yamlのProfilesの構成項目
チャネルファイルの生成
アンカーノード更新ファイルの生成
docker-composeファイルの作成
クライアントロールで使用する環境変数
cliでは
注意データボリュームを搭載する場合は、自分のディレクトリの位置に従ってマウントします.
これはスクリプトファイルを搭載しています.ここは手動で構築されているので、削除できます.
1つは
depends_onは依存関係であり,依存するノードが起動して起動する.
ここでは
ordererノードで使用する環境変数
データボリュームをロードするときも生成する
peerノードで使用する環境変数
準備作業
1.ノードを起動する前にアカウントを生成する
3.docker-composeプロファイル
ノードの操作
証明書ファイルの生成
作業ディレクトリの作成
プロファイルを指定したファイルにリダイレクト
$ cryptogen showtemplate > crypto-config.yaml
証明書テンプレートの編集
# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs: # , orderer
# ---------------------------------------------------------------------------
# Orderer
# ---------------------------------------------------------------------------
- Name: Orderer # ,
Domain: example.com # , ,
Specs:
# orderer : orderer.example.com
- Hostname: orderer # orderer , orderer
# orderer : Hostname.Domain
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1
# ---------------------------------------------------------------------------
- Name: Org1 # ,
# : Name.orderer Domain
Domain: org1.example.com #
EnableNodeOUs: false # config.yaml
Template: #
Count: 3 # peer
# peer : peer0, peer1 peer2
# peer : peer0/1/2. Domain
Users:
Count: 10 #
# : user0, user1, user2
# 10
# : admin
# ---------------------------------------------------------------------------
# Org2: See "Org1" for full specification
# ---------------------------------------------------------------------------
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: false
Template:
Count: 1
Users:
Count: 1
証明書ファイルの生成
# cryptogen generate --config
$ cryptogen generate --config crypto-config.yaml
創始ブロックファイルとチャネルファイルの生成
yamlにおける変数の定義と使用
定義#テイギ#
- &OrdererOrg #
使用
*OrdererOrg
アンカーノード
現在の組織を代表して他の組織と通信する通常の
peer
ノード、peer
組織はすべてアンカーノードであり、アンカーノードは通常のノードのすべての機能を有し、他の組織と通信する機能が多くなっている.
プロファイルの作成テンプレート
#
Organizations: # ,
# OrdererOrg
- &OrdererOrg
# Name ID
Name: OrdererOrg # orderer , ,
ID: OrdererMSP # orderer ID, , ID
# orderer
# cryptogen , crypto-config
# ==
# : : msp
MSPDir: crypto-config/ordererOrganizations/itcast.com/msp
# go
- &OrgGo
Name: OrgGoMSP # ,
ID: OrgGoMSP
#
MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
#
AnchorPeers:
# peer
- Host: peer1.orggo.itcast.com
# ,
# peer docker , 7051
Port: 7051
- &OrgCpp
Name: Org2MSP
ID: Org2MSP
MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
AnchorPeers:
- Host: peer0.org2.example.com
Port: 7051
################################################################################
#
# SECTION: Capabilities, fabric1.1 , true
#
################################################################################
Capabilities:
Global: &ChannelCapabilities
V1_1: true
Orderer: &OrdererCapabilities
V1_1: true
Application: &ApplicationCapabilities
V1_2: true
################################################################################
#
# SECTION: Application
#
################################################################################
Application: &ApplicationDefaults
Organizations:
################################################################################
#
# SECTION: Orderer
#
################################################################################
Orderer: &OrdererDefaults
# Available types are "solo" and "kafka"
#
OrdererType: solo
Addresses: # orderer
# orderer docker , 7050
- orderer.itcast.com:7050
# ,
#
BatchTimeout: 2s
BatchSize:
# >=100,
MaxMessageCount: 100
# >=99M ,
AbsoluteMaxBytes: 99 MB ==> 32M, 64M
#
PreferredMaxBytes: 512 KB
# solo,
Kafka:
Brokers:
- 127.0.0.1:9092
Organizations:
################################################################################
#
# Profile
#
################################################################################
Profiles:
#
Genesis: # ,
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums: # ,
SampleConsortium: # ,
Organizations: # peer , ,
- *OrgGo
- *OrgCpp
#
Channel: # ,
Consortium: SampleConsortium # 102
Application:
<<: *ApplicationDefaults
Organizations:
- *OrgGo
- *OrgCpp
Capabilities:
<<: *ApplicationCapabilities
作成ブロックファイルの生成
-profileの後のパラメータはconfigtx.yamlのProfilesの構成項目
# -outputBlock:
# Genesis configtx.yaml profiles
configtxgen -profile Genesis -outputBlock genesis.block
チャネルファイルの生成
# Channel configtx.yaml profiles
# outputCreateChannelTx:
# channelID: , , : testchainid
configtxgen -profile Channel -outputCreateChannelTx channel.tx -channelID itcastchannel
アンカーノード更新ファイルの生成
# ,
# peer ,
# ,
# -outputAnchorPeersUpdate:
# -asOrg:
# go
configtxgen -profile Channel -outputAnchorPeersUpdate goAnchor.tx -channelID itcastchannel -asOrg OrgGoMSP
# cpp
configtxgen -profile Channel -outputAnchorPeersUpdate cppAnchor.tx -channelID itcastchannel -asOrg OrgCppMSP
docker-composeファイルの作成
クライアントロールで使用する環境変数
cliでは
tty
がtrueを書くと1つの端末に関連付けられ、stdin_open
がtrueを書くと標準入力が開きます- GOPATH=/opt/gopath # go gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock # docker ,
- CORE_LOGGING_LEVEL=INFO # , , info
- CORE_PEER_ID=cli # ,
# ->
- CORE_PEER_ADDRESS=peer0.orggo.itcast.com:7051 # peer
# configtx.yaml -> Organizations -> ID
- CORE_PEER_LOCALMSPID=OrgGoMSP # peer ID
- CORE_PEER_TLS_ENABLED=true # , true: , false:
# :
# crypto-config/peerOrganizations/ peer ( )/peers/ peer /tls
# tls
- 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
#
- 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
# ca
- 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
# ,
# crypto-config/peerOrganizations/ peer ( )/users/ /msp
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/orggo.itcast.com/users/[email protected]/msp
注意データボリュームを搭載する場合は、自分のディレクトリの位置に従ってマウントします.
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scrip ts/
これはスクリプトファイルを搭載しています.ここは手動で構築されているので、削除できます.
1つは
channel-artifacts
で、自分でディレクトリを作成し、創始ブロックファイル、チャネルファイル、アンカーノード更新ファイルをこのディレクトリに入れ、データボリュームのマウントが成功することを保証します.depends_onは依存関係であり,依存するノードが起動して起動する.
ここでは
orggo
のcliが生成されただけで、orgcppはまだなく、後でcli環境変数を変更する方法で操作を切り替えるノードordererノードで使用する環境変数
# ,critical | error | warning | notice | info | debug,
# docker logs / ID
- ORDERER_GENERAL_LOGLEVEL=INFO # orderer
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # orderer
# , == file,
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP # orderer ID-> configtx.yaml
# orderer
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_GENERAL_TLS_ENABLED=true #
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
データボリュームをロードするときも生成する
crypto-config
の中からパスを探すpeerノードで使用する環境変数
- CORE_PEER_ID=peer1.org1.example.com # peer , ,
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051 # peer
# ->
# ,
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
# , ,
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP # peer ID -> configtx.yaml