快速部署 Hyperledger Fabric 測試網(wǎng)絡(luò) - 脫離 Docker 部署

一、為什么要脫離 Docker 部署 Fabric 網(wǎng)絡(luò)其掂?

1油挥、使用 Docker 部署相對比較復(fù)雜,不適合入門學(xué)習(xí)

?在我開始學(xué)習(xí) Fabric 的時(shí)候款熬,由于之前沒有學(xué)習(xí)使用過 Docker深寥,所以光是弄明白如何在我的系統(tǒng)上安裝 Docker 以及如何使用 Docker 就折騰了一段時(shí)間,在加上之后因?yàn)楦鞣N Docker 鏡像下載問題和 Docker 數(shù)據(jù)緩存贤牛、Docker鏡像版本等問題惋鹅,又是一頓折騰。

雖然使用 Docker 有諸多優(yōu)勢和便利殉簸,但我認(rèn)為這樣添加了很多概念闰集,對入門學(xué)習(xí) Docker 的人來說實(shí)在是不友好,容易讓初學(xué)者迷失自己要學(xué)習(xí)的重點(diǎn)問題般卑。我認(rèn)為多就是沒有武鲁,能讓人一下子抓住重點(diǎn)問題的方法會是一個(gè)很有效的方法。

2蝠检、脫離 Docker 部署更容易調(diào)試 Fabric 的源碼

?很多時(shí)候當(dāng)我們遇到問題沐鼠,一通搜索詢問無法解決的時(shí)候,最直接的方法就是查看源碼蝇率。通過調(diào)試源碼可以更直接更準(zhǔn)確的定位到問題迟杂。

?另外刽沾,如果使用 Docker 部署 Fabric 測試網(wǎng)絡(luò)的調(diào)試代碼話,我們每次不得不重新 make docker排拷。每次 make docker 我都要等幾分鐘侧漓,甚至十幾分鐘,這讓我很抓狂监氢,而 go build 去編譯一個(gè)節(jié)點(diǎn)程序僅僅需要幾秒鐘布蔗,便捷之處不言而喻。

?對代碼調(diào)試方面更無需多說浪腐,每次修改代碼纵揍、添加日志輸出之后,我只需重新啟動下節(jié)點(diǎn)即可议街。我甚至可以在 IDE 里面直接 debug 節(jié)點(diǎn)程序泽谨。這對于調(diào)試源碼來說太方便了。

3特漩、脫離 Docker 運(yùn)行 Fabric 網(wǎng)絡(luò)可以節(jié)省系統(tǒng)性能

?這一點(diǎn)其實(shí)也是我琢磨脫離 Docker 部署 Fabric 的初衷吧雹。最初是想主機(jī)上如果不運(yùn)行 Docker,那意味著少了一些程序來和節(jié)點(diǎn)程序競爭計(jì)算機(jī)的資源涂身,理論上應(yīng)該會提升 Fabric 網(wǎng)絡(luò)的系統(tǒng)性能雄卷。我測試后的數(shù)據(jù)也驗(yàn)證了我的猜測。

4蛤售、Fabric 2.0 的新特性使得完全脫離 Docker 部署更容易

?Fabric 2.0 添加了 chaincode external builder 功能丁鹉,可以使 chaincode 以一個(gè)獨(dú)立的外部服務(wù)形式運(yùn)行。在 2.0 之前的版本中悴能,chaincode 必須被編譯成一個(gè) Docker 鏡像才可以運(yùn)行揣钦。有了這個(gè)新特性之后 Fabric 就可以完全脫離開 Docker 去運(yùn)行了。

二搜骡、使用腳本自動部署脫離 Docker 的 Fabric 網(wǎng)絡(luò)

?需要說明的是當(dāng)前腳本僅支持 LinuxMacOS 操作系統(tǒng)拂盯,對 Windows 操作系統(tǒng)的支持我會在以后添加,請持續(xù)關(guān)注我的項(xiàng)目记靡。

1谈竿、Clone 腳本代碼到本地

git clone https://github.com/yiwenlong/fabric-samples-nodocker

2、配置環(huán)境依賴

?對于依賴這些東西我是想了很多方法盡量減少依賴摸吠,除非非常必要空凸,我覺得沒必要讓新入門學(xué)習(xí) Fabric 的同學(xué)去花時(shí)間搞明白 Fabric 之外的其他東西,焦點(diǎn)聚焦在 Fabric 上面是最重要的寸痢。

在自己的主機(jī)上安裝 supervisor呀洲,并啟動 supervisor

考慮在不同系統(tǒng)上的可移植性,我在這里使用 supervisor 用于做進(jìn)程管理。

對于 MacOS
# 首先去定已經(jīng)安裝了 homebrew道逗,如果沒有兵罢,執(zhí)行以下腳本
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install supervisor
brew services start supervisor
對于 Ubuntu
apt install supervisor
systemctl start supervisor
對于 CentOS
yum install supervisor
systemctl start supervisor

配置 SUPERVISOR_CONFD_DIR 環(huán)境變量

我寫了腳本自動去配置 supervisor,當(dāng)節(jié)點(diǎn)程序需要啟動的時(shí)候滓窍,boot.sh 啟動腳本會在 supervisor 的配置目錄下創(chuàng)建節(jié)點(diǎn)進(jìn)程的啟動配置文件卖词。因此需要使用 $SUPERVISOR_CONFD_DIR 環(huán)境變量指向 supervisor 的配置目錄。詳細(xì)實(shí)現(xiàn)可以查看代碼 scripts/config-scripts.sh

# MacOS
export SUPERVISOR_CONFD_DIR=/usr/local/etc/supervisor.d
# CentOS
export SUPERVISOR_CONFD_DIR=/etc/supervisord.d
# Ubuntu
export SUPERVISOR_CONFD_DIR=/etc/supervisor/conf.d

3吏夯、執(zhí)行 config.sh 腳本

cd $fabric-samples-nodocker
./config.sh

config.sh 主要是去下載 Fabric 和 一個(gè)Demo chaincode 的二進(jìn)制程序此蜈,執(zhí)行成功后會生成以下目錄:

./build/bin
./build/config
./build/chaincode

4、啟動測試網(wǎng)絡(luò)

網(wǎng)絡(luò)配置我都是設(shè)置成可配置的噪生,可以參照 samples/network-single-org 的配置自行配置網(wǎng)絡(luò)節(jié)點(diǎn)裆赵。后面我會詳細(xì)介紹如何配置以及如何使用。
使用測試網(wǎng)絡(luò)前請先配置 /etc/hosts 文件跺嗽,添加以下內(nèi)容:

127.0.0.1   peer0.org1.example.com
127.0.0.1   peer1.org1.example.com
127.0.0.1   orderer0.example.com
127.0.0.1   orderer1.example.com
127.0.0.1   orderer2.example.com

如果僅僅是使用測試網(wǎng)絡(luò)战授,可以直接執(zhí)行以下腳本:

cd samples/network-single-org
./network up

這個(gè)腳本會自動啟動節(jié)點(diǎn)程序、創(chuàng)建一個(gè) channel 并安裝一個(gè)名為 tpschaincode抛蚁。最后腳本會調(diào)用腳本的 init invoke query 函數(shù)測試 chancode 的運(yùn)行情況陈醒。如圖:

chaincode invoke 結(jié)果

三惕橙、寫在后面

因?yàn)槟芰蜁r(shí)間問題瞧甩,文檔寫得很粗略,如果有疑問弥鹦,歡迎大家留言交流肚逸,我會盡我所能回答各位遇到的問題,腳本代碼可能會有一些問題彬坏,歡迎大家 pr 和 提issue朦促。

https://github.com/yiwenlong/fabric-samples-nodocker

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栓始,隨后出現(xiàn)的幾起案子务冕,更是在濱河造成了極大的恐慌,老刑警劉巖幻赚,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禀忆,死亡現(xiàn)場離奇詭異,居然都是意外死亡落恼,警方通過查閱死者的電腦和手機(jī)箩退,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佳谦,“玉大人戴涝,你說我怎么就攤上這事。” “怎么了啥刻?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵奸鸯,是天一觀的道長。 經(jīng)常有香客問我可帽,道長府喳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任蘑拯,我火速辦了婚禮钝满,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘申窘。我一直安慰自己弯蚜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布剃法。 她就那樣靜靜地躺著碎捺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贷洲。 梳的紋絲不亂的頭發(fā)上收厨,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音优构,去河邊找鬼诵叁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钦椭,可吹牛的內(nèi)容都是我干的拧额。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼彪腔,長吁一口氣:“原來是場噩夢啊……” “哼侥锦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起德挣,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤恭垦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后格嗅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番挺,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年吗浩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了建芙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懂扼,死狀恐怖禁荸,靈堂內(nèi)的尸體忽然破棺而出右蒲,到底是詐尸還是另有隱情,我是刑警寧澤赶熟,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布瑰妄,位于F島的核電站,受9級特大地震影響映砖,放射性物質(zhì)發(fā)生泄漏间坐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一邑退、第九天 我趴在偏房一處隱蔽的房頂上張望竹宋。 院中可真熱鬧,春花似錦地技、人聲如沸蜈七。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飒硅。三九已至,卻和暖如春作谚,著一層夾襖步出監(jiān)牢的瞬間三娩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工妹懒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雀监,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓彬伦,卻偏偏與公主長得像滔悉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子单绑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353