這篇文章主要介紹Fabric2.0啟動(dòng)網(wǎng)絡(luò)腳本配置的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了什邡免費(fèi)建站歡迎大家使用!
查看byfn.sh找到up模式主要做了什么,如下圖可見(jiàn),執(zhí)行networkUp這個(gè)function來(lái)實(shí)現(xiàn)fabric網(wǎng)絡(luò)啟動(dòng)。
接下來(lái)進(jìn)入networkUp詳細(xì)閱讀: networkUp這個(gè)function里面核心腳本主要為以上紅色框住的部分,分別為: 1. 檢查二進(jìn)制文件是否可用以及對(duì)應(yīng)版本docker鏡像是否存在。 2. 假如當(dāng)前sh所在父目錄不存在crypto-config目錄就執(zhí)行生成區(qū)塊、通道以及證書腳本,詳情請(qǐng)查看Fabric2.0 first-network 生成配置說(shuō)明 3. 使用docker-compose命令啟動(dòng)fabric網(wǎng)絡(luò)。 4. 加載go合約依賴包 5. 使用cli客戶端執(zhí)行腳本操作
其中在默認(rèn)條件下啟動(dòng)yaml文件包括: docker-compose-cli.yaml docker-compose-etcdraft2.yaml
為了看清楚docker-compose-cli.yaml具體啟動(dòng)了什么,我們將文件拆分執(zhí)行 首先打開(kāi)控制臺(tái),輸入以下命令
cd first-network docker-compose -f docker-compose-cli.yaml up -d 2>&1
執(zhí)行結(jié)果如下圖所示: 總共啟動(dòng)了6個(gè)容器分別是: 5個(gè)排序節(jié)點(diǎn)中的其中一個(gè)節(jié)點(diǎn) orderer.example.com
兩個(gè)組織org1、org2的節(jié)點(diǎn) - peer0.org1.example.com- peer1.org1.example.com- peer0.org2.example.com- peer1.org2.example.com
fabric客戶端 cli
orderer.example.com 從排序節(jié)點(diǎn)入手: 一般來(lái)說(shuō),我會(huì)從啟動(dòng)日志入手,先看結(jié)果再看配置,打開(kāi)控制臺(tái),輸入以下命令
docker logs -f orderer.example.com --tail=300
控制臺(tái)輸出了orderer.example.com的啟動(dòng)日志如下
由于太長(zhǎng)我分開(kāi)幾個(gè)部分來(lái)說(shuō)
(1)排序節(jié)點(diǎn)配置項(xiàng)輸出: 排序節(jié)點(diǎn)啟動(dòng)的時(shí)候,會(huì)根據(jù)環(huán)境變量輸出相應(yīng)的配置,包括證書配置、監(jiān)聽(tīng)端口配置等, 而這些配置對(duì)應(yīng)就是docker-compose-cli.yaml的以下配置: 我們繼續(xù)追蹤base/docker-compose-base.yaml,找到orderer.example.com服務(wù)
從上圖來(lái)看,orderer的配置還是引入peer-base.yaml中的orderer-base服務(wù)
從上圖來(lái)看與日志輸出配置匹配,就是yaml里面加了ORDERER_前綴,其余配置的修改也可通過(guò)這種方式。詳細(xì)排序節(jié)點(diǎn)配置說(shuō)明,晚點(diǎn)補(bǔ)充。
(2)加載創(chuàng)始區(qū)塊,啟動(dòng)排序節(jié)點(diǎn)。 好的系統(tǒng)的一個(gè)好的日志輸出,fabric的日志輸出還是很優(yōu)秀的,從日志輸出可以跟蹤排序節(jié)點(diǎn)啟動(dòng)究竟干了什么,通過(guò)上圖日志輸出,可以讀到:
1.根據(jù)1的配置初始化排序節(jié)點(diǎn) 2. 創(chuàng)建本地賬本目錄 3. 設(shè)置排序節(jié)點(diǎn)服務(wù)監(jiān)聽(tīng)端口 4. 根據(jù)創(chuàng)始區(qū)塊文件初始化本地賬本 5. 啟動(dòng)fabric系統(tǒng)通道 6. 啟動(dòng)raft服務(wù)
(3)raft服務(wù)啟動(dòng) 上圖已經(jīng)標(biāo)識(shí)了核心日志并且進(jìn)行說(shuō)明,有一點(diǎn)還是很清晰的就是,(對(duì)于沒(méi)仔細(xì)研究fabric2.0 raft的人來(lái)說(shuō))一個(gè)通道就是一個(gè)raft服務(wù)集群。紅色的日志是錯(cuò)誤,在分配完raft集群節(jié)點(diǎn)后,其余節(jié)點(diǎn)沒(méi)啟動(dòng),所以都是失敗的,后面一直在做重連操作。
以上就是orderer.example.com啟動(dòng)剖析過(guò)程。
然后我們來(lái)看以下peer0.org1.example.com 打開(kāi)控制臺(tái),輸入以下命令
docker logs -f peer0.org1.example.com --tail=300
控制臺(tái)輸出結(jié)果如下: peer節(jié)點(diǎn)啟動(dòng)主要是 1. 啟動(dòng)peer grpc服務(wù) 2. 初始化gossip服務(wù) 3. 初始化本地賬本 4. 安裝系統(tǒng)鏈碼,這里比起1.x,2.0多了一個(gè)系統(tǒng)鏈碼就是_lifecycle,是跟智能合約相關(guān)的鏈碼,我們下一篇進(jìn)行詳解。 5. 基于gossip對(duì)同組織節(jié)點(diǎn)進(jìn)行交互
同樣的套路,首先打開(kāi)控制臺(tái),輸入以下命令:
cd first-network docker-compose -f docker-compose-etcdraft2.yaml up -d 2>&1
控制臺(tái)輸出結(jié)果如下: 由上圖可知,主要啟動(dòng)了其余4個(gè)排序節(jié)點(diǎn)
先不看新啟動(dòng)的排序節(jié)點(diǎn),查看原本開(kāi)始啟動(dòng)的orderer.example.com 控制臺(tái)輸入以下命令
docker logs --tail=300 -f orderer.example.com
控制臺(tái)輸出結(jié)果如下: 由日志可以觀察到,orderer.example.com以及成功連接其他raft節(jié)點(diǎn),并且在raft 的term2 leader 從orderer.example.com (0)變成orderer5.example.com(5)
接下來(lái)我們看一下orderer5.example.com節(jié)點(diǎn)的情況 控制臺(tái)輸入以下命令:
docker logs --tail=300 -f orderer5.example.com
控制臺(tái)輸出: 由日志可見(jiàn),在term2 經(jīng)過(guò)一輪投票后,orderer5獲得5票回應(yīng)成為了term2的raft leader。 整體網(wǎng)絡(luò)處于完全啟動(dòng)狀態(tài)。
以上是“Fabric2.0啟動(dòng)網(wǎng)絡(luò)腳本配置的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!