Hyperledger Fabric 1.0 從零開始(八)——Fabric多節點集羣生產部署

6.1平臺特定使用的二進制文件配置

該方案與Hyperledger Fabric 1.0 從零開始(五)——運行測試e2e相似,根據企業須要,能夠控制各節點的域名,及聯盟鏈的統一域名。能夠指定單獨節點的訪問,生成指定的公私鑰、證書等文件。具體的參數配置能夠參考generateArtifacts.sh文件,可執行自動化生成,也能夠按照該腳本里的命令手動生成。html

參照3.1、運行fabric-samples的問題說明,首先咱們在/opt/gopath/src/github.com/hyperledger/fabric下建立一個自定義目錄,該目錄名稱應與實際生產環境中組織節點的名稱一致,如:example。node

咱們計劃將在orderer服務器中生成必要的證書等文件,所以在example下將繼續建立一個orderer目錄,咱們將下載好的bin目錄上傳至/opt/gopath/src/github.com/hyperledger/fabric/example/orderer目錄下,具體效果以下視圖:git

 

 正如3.1小節所述,在bin目錄中是Fabric平臺特定使用的二進制文件cryptogen,configtxgen,configtxlator, 以及peer。github

咱們能夠經過configtxgen和cryptogen手動生成證書/密鑰以及各項配置文件。服務器

(注:英文閱讀能力好的同窗能夠直接參考官方文檔網絡

在正式使用上述兩個文件以前,咱們須要在bin目錄下先建立兩個yaml文件,分別是crypto-config.yaml和configtx.yaml,這兩個文件具體能夠在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli這個目錄下找到對應的官方示例,以官方示例爲基礎進行修改,改爲咱們生產上所需的具體內容。工具

 

6.2、生成組織證書與私鑰

咱們假定要組建一個名爲example的聯盟,且咱們本身的組織名稱爲Demo,咱們會建立一個Orderer排序服務節點,同時還會建立一個peer節點。測試

那麼修改後的crypto-config.yaml以下:ui

 1 OrdererOrgs:
 2   - Name: Orderer
 3     Domain: example.com
 4     Specs:
 5       - Hostname: orderer
 6 PeerOrgs:
 7   - Name: Demo
 8    Domain: demo.example.com
 9    Template:
10      Count: 1
11    Users:
12      Count: 1

 

 這裏咱們使用crytogen工具給咱們不一樣的網絡實體(peer/client)生成加密證書(X509 certs)。這些證書表明了身份,當咱們的網絡實體在進行通訊以及transact的時候進行簽名與驗證身份。this

crypto-config.yaml配置文件將被crytogen工具調用,文件中包括了網絡拓撲,同時容許咱們給organization(Demo)以及component(隸屬於organization的組件)生成一個證書與私鑰的集合。每個organization(Demo)被分配一個惟一的根證書(綁定了隸屬於organization(Demo)的具體的component,包括peers與orderers)。Hyperledger Fabric的transaction與通訊均被節點的私鑰(keystore)進行簽名,截止被公鑰進行驗證(signcerts)。 這個配置文件中有一個計數(count)的變量,咱們使用其定義organization(Demo)中peer的數量,在本例中咱們定義Demo組織有一個peer。

在crypto-config.yaml配置文件中,咱們能夠看到在ordererOrgs頭下面的「Name」, 「Domain」 以及 「Specs」這三個參數,命名規則約定以下:「{{.Hostname}}.{{.Domain}}」。使用官方提供的的crypto-config.yaml中的ordering node做爲參考,咱們能看到一個名稱爲 - orderer.example.com的ordering node,該node與Orderer的MSP ID關聯。

接下來開始使用crytogen工具執行crypto-config.yaml配置文件,crytogen工具在bin目錄下,咱們須要先進入該目錄,並執行crypto-config.yaml配置文件,具體命令以下:

cd /opt/gopath/src/github.com/hyperledger/fabric/example/orderer/bin
./bin/cryptogen generate --config=./crypto-config.yaml

 

 根據上述命令,能夠看出crypto-config.yaml被上傳至bin目錄下,執行結果以下視圖:

 

 此過程當中可能會提示權限不足,以下視圖:

 

 這裏使用chmod +x來賦權便可,不作詳細說明。

完成以後會在bin目錄下生成一個新的目錄crypto-config,其中會有ordererOrganizations和peerOrganizations兩個目錄,具體結果視圖以下:

 

 

6.3、定義configtx.yaml配置文件

接下來,咱們須要使用configtxgen工具來執行configtx.yaml文件建立orderer Genesis block,在此以前須要爲configtxgen工具指定configtx.yaml文件的路徑,咱們須要設置一個環境變量,執行以下命令:

export FABRIC_CFG_PATH=$PWD

 

 隨後能夠打印查看該目錄是否正確,具體執行命令以下:

echo $PWD

結果以下視圖:

 

 bin目錄下建立channel-artifacts目錄,用來存放各類渠道的源文件。

編輯configtx.yaml文件,結果以下:

 1 Profiles:
 2 
 3     ExampleOrdererGenesis:
 4         Orderer:
 5             <<: *OrdererExample
 6             Organizations:
 7                 - *OrdererDemo
 8         Consortiums:
 9             ExampleConsortium:
10                 Organizations:
11                     - *Demo12     ExampleChannel:
13         Consortium: ExampleConsortium
14         Application:
15             <<: *ApplicationExample
16             Organizations:
17                 - *Demo18 Organizations:
19 
20     - &OrdererDemo
21         Name: OrdererDemo
22         ID: OrdererMSP
23         MSPDir: crypto-config/ordererOrganizations/example.com/msp
24 
25     - &Demo26         Name: DemoMSP
27         ID: DemoMSP
28         MSPDir: crypto-config/peerOrganizations/demo.example.com/msp
29         AnchorPeers:
30             - Host: peer0.demo.anti-moth.com
31               Port: 7051
32 
33 Orderer: &OrdererExample
34 
35     OrdererType: solo
36 
37     Addresses:
38         - orderer.example.com:7050
39 
40     BatchTimeout: 2s
41     BatchSize:
42         MaxMessageCount: 10
43         AbsoluteMaxBytes: 99 MB
44         PreferredMaxBytes: 512 KB
45 
46     Kafka:
47         Brokers:
48             - 127.0.0.1:9092
49     Organizations:
50 
51 Application: &ApplicationExample
52 
53     Organizations:

 

 在該文件中,咱們定義了組織名稱、組織排序服務名稱、組織渠道名稱、應用渠道名稱、應用聯盟名稱等。

 

6.4、生成orderer源文件

根據6.3中配置文件的描述,咱們將生成的orderer源爲ExampleOrdererGenesis。

本步驟將生成genesis.block文件,具體執行命令以下:

./bin/configtxgen -profile ExampleOrdererGenesis -outputBlock ./channel-artifacts/example_genesis.block

 

 該命令會在/opt/gopath/src/tk/bin/channel-artifacts目錄下生成一個genesis.block文件,根據官方demo中的configtx.yaml文件描述,該文件名因爲未知緣由,不得命名爲order.genesis.block。

完成命令後的視圖以下:

 

 具體官方指定方案截圖以下,可參考官網實現:

 

 

6.5、生成channel源文件

根據6.3中配置文件的描述,咱們將生成的channel源爲ExampleChannel。

本步驟將生成channel.tx文件,具體執行命令以下:

./bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/example_channel.tx -channelID channel01

 

 完成命令後的視圖以下:

 

 按照官方給定的方案,執行該方法前能夠先指定channel的環境變量,以下視圖:

 

 上圖官方描述的具體執行命令以下:

1 export CHANNEL_NAME=mychannel
2 
3 # this file contains the definitions for our sample channel
4 ../bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

該步驟最終執行結果視圖以下:

 

 

6.6、生成channel下節點集合認證文件

根據6.3中配置文件的描述,咱們將生成的channel源爲ExampleChannel。

本步驟將生成channel.tx文件,具體執行命令以下:

./bin/configtxgen -profile ExampleChannel -outputAnchorPeersUpdate ./channel-artifacts/DEMOMSPanchors.tx -channelID channel01 -asOrg DemoMSP

 

 完成命令後的視圖以下:

 

具體官方指定方案截圖以下,可參考官網實現:

最終咱們能夠在channel-artifacts目錄下看到成功建立了TKMSPanchors.tx文件,以下視圖:

 

【注:請無視這其中目錄等名稱的一些小細節,這一章主要是講述如何經過官方給定的二進制文件來生成咱們須要的生產證書等配置資源】

相關文章
相關標籤/搜索