聲明:本文由內(nèi)容合作伙伴 巴比特 授權(quán)發(fā)布。
本文作者為Libra協(xié)會成員之一區(qū)塊鏈架構(gòu)公司Bison Trails。在這篇文章中,Bison Trails分享了Libra節(jié)點運作者可以為運行驗證者和全節(jié)點所做的準(zhǔn)備,并給出了三個建議。
作為Libra協(xié)會的成員,Bison Trails獲得了在Libra測試網(wǎng)上運行首個非Calibra驗證者節(jié)點的深入體驗。在這篇文章中,我們詳細(xì)介紹了從實踐中獲得的經(jīng)驗教訓(xùn),并就如何優(yōu)化節(jié)點性能為其他驗證節(jié)點運作者提供了建議。
為運行驗證節(jié)點做準(zhǔn)備(簡化版)
在詳細(xì)介紹我們學(xué)到的一些經(jīng)驗之前,我們建議你下載并運行Libra網(wǎng)絡(luò)軟件。Libra項目團(tuán)隊在GitHub上提供了這個開源軟件,并在Libra項目開發(fā)人員的站點上提供了優(yōu)秀的文檔。文檔內(nèi)容是Libra區(qū)塊鏈的指南,對Move編程語言進(jìn)行了介紹,詳細(xì)說明了如何構(gòu)建和運行驗證節(jié)點。在這篇文章中,我們不會深入討論,但是通過Docker運行一個節(jié)點的簡化版就像檢查源代碼一樣簡單,可以參照以下兩種形式:
1. 參考Libra core測試網(wǎng)分類中“Docker”目錄的說明,通過Docker在本地運行
2. 使用Terraform在AWS上運行網(wǎng)絡(luò),同樣的,可以參考Libra core測試網(wǎng)分類中“Terraform”目錄的說明
無論是哪一種情況,你都應(yīng)該使用代碼的測試網(wǎng)分類,因為這更穩(wěn)定,而且是Libra區(qū)塊鏈開發(fā)者文檔推薦的。
使用上述任何一種方法運行驗證節(jié)點都比較簡單。我們建議你首先通過Docker在本地運行,了解節(jié)點的配置,使用Docker logs命令查看其日志,并了解驗證節(jié)點是如何發(fā)現(xiàn)彼此的。一旦你適應(yīng)了本地環(huán)境,Terraform部署將啟動一個更逼真的驗證者網(wǎng)絡(luò),這些驗證節(jié)點可以通過互聯(lián)網(wǎng)相互通信。
對于那些已經(jīng)嘗試過使用這兩種方法來運行軟件的人來說,我們下面的建議將很有意義。
為主網(wǎng)做準(zhǔn)備,有這三個方法
接下來,我們將根據(jù)我們運行Libra節(jié)點的經(jīng)驗和我們之前使用其他區(qū)塊鏈網(wǎng)絡(luò)的經(jīng)驗,給出三個建議。
1. 持久化區(qū)塊鏈
當(dāng)Libra網(wǎng)絡(luò)啟動時,隨著賬戶數(shù)量的增加,賬本狀態(tài)將隨時間增長,驗證交易的執(zhí)行將創(chuàng)建新的賬本狀態(tài)。存儲賬本狀態(tài)的數(shù)據(jù)庫也將相應(yīng)地增長。重要的是,驗證者和全節(jié)點能夠在重新啟動驗證者進(jìn)程的情況下快速恢復(fù)——無論出于何種原因。在最壞的情況下,從理論上講,一個節(jié)點總是可以從創(chuàng)世區(qū)塊開始重新同步整個歷史記錄,但是這種昂貴且耗時的同步可以通過將區(qū)塊鏈存儲在一個持久化卷(persistent volume)上來避免。
按照慣例,Libra驗證者通常配置為將區(qū)塊鏈數(shù)據(jù)存儲在目錄“/opt/ Libra /data”中;你可以通過更改/opt/libra/etc/node.config.toml的存儲部分來在其他地方存儲區(qū)塊鏈數(shù)據(jù)。但是我們建議你使用默認(rèn)位置。
圖1. 推薦的存儲配置來自node.config.toml
dir = "/opt/libra/data"
無論你的節(jié)點使用哪個系統(tǒng)目錄來存儲區(qū)塊鏈,你都需要在目錄樹中的特定位置掛載(mount)一個持久化卷。當(dāng)通過Docker運行時(我們推薦使用Docker),這就像使用—volume(卷)或—mount(掛載)標(biāo)記來指定掛載細(xì)節(jié)一樣簡單。例如,假設(shè)你在主機(jī)/data上掛載了幾個T的持久卷,并且你的配置文件在一個安全卷/libra-config上可用,你可以調(diào)用Docker來使用該卷,如下所示:
圖2. 使用卷標(biāo)志進(jìn)行持久化
$ docker run -v /data:/opt/libra/data -v /config:/opt/libra/etc libra_e2e
實際上,Libra區(qū)塊鏈源代碼中提供的Terraform模板使用這樣的配置將Libra區(qū)塊鏈數(shù)據(jù)存儲在一個EBS(彈性塊存儲)卷中。
在Bison Trails,我們也有專門的系統(tǒng)定期快照區(qū)塊鏈數(shù)據(jù),如果我們失去了一個卷或者一個特定的數(shù)據(jù)中心變得不可用(在全世界運行著成千上萬的區(qū)塊鏈節(jié)點,這并不罕見),我們可以快速地用一個新卷啟動一個新節(jié)點或在一個不同的位置啟動一個新節(jié)點。也就是說,我們自己的Libra驗證節(jié)點所做的第一件事就是將區(qū)塊鏈目錄存儲在一個持久的位置,它與這些高級設(shè)置的系統(tǒng)是分離的。
2. 指標(biāo)和警報
在Bison Trails,我們習(xí)慣了在運行區(qū)塊鏈軟件的同時添加一個監(jiān)控層,這樣我們就可以預(yù)見并采取網(wǎng)絡(luò)正常發(fā)展所需的任何行動,并可以對所有預(yù)料之外的事件做出反應(yīng)。
以Libra區(qū)塊鏈為例,核心開發(fā)團(tuán)隊為所有驗證者提供了一個有利的開端,他們已經(jīng)通過Prometheus(普羅米修斯)發(fā)布了非常有用的標(biāo)準(zhǔn)。Prometheus是一個非常好的時間序列數(shù)據(jù)解決方案,正在成為開發(fā)團(tuán)隊的黃金度量標(biāo)準(zhǔn),并可以發(fā)出警報。體驗這些指標(biāo)的最佳方法是在開始運行驗證者時,通過上面描述的Terraform方法運行驗證者網(wǎng)絡(luò)。正如以下截圖所示,它提供了一個即開即用的儀表板,其中包含許多針對個人和網(wǎng)絡(luò)節(jié)點的關(guān)鍵指標(biāo)。
圖3. 附帶運作指標(biāo)和示例儀表板的Libra core
通過在很多網(wǎng)絡(luò)上運行節(jié)點的經(jīng)驗,我們建立了一個相當(dāng)全面和嚴(yán)格的方法來監(jiān)控我們的節(jié)點。我們在三個大概分類中查看度量指標(biāo):
- 系統(tǒng)指標(biāo),例如CPU/內(nèi)存/磁盤利用率
- 區(qū)塊鏈節(jié)點,例如進(jìn)程健康狀態(tài)、節(jié)點連接狀況、數(shù)據(jù)傳輸
- 區(qū)塊鏈應(yīng)用,例如出塊速度、交易速率以及驗證數(shù)據(jù)
我們跟蹤的每個指標(biāo)都有警報通知,大致可以分為重要和非重要。由于Libra主網(wǎng)還沒有發(fā)布,核心開發(fā)正快速進(jìn)行,如果驗證節(jié)點進(jìn)程停止,Bison Trails不會收到警報。然而,隨著發(fā)布的臨近,我們將收緊警報閾值和嚴(yán)重程度,我們建議由所有運行節(jié)點的Libra協(xié)會成員監(jiān)控關(guān)鍵性能指標(biāo),并在適當(dāng)?shù)牡胤皆O(shè)置警報。
3. 保護(hù)你的密鑰
我們給出的最后一個建議和Libra節(jié)點的密鑰管理有關(guān)。首先,要注意的是:驗證者密鑰管理的操作在不斷演變,所以我們在這里所指出的并不能直接用于主網(wǎng),而是為協(xié)會成員和其他節(jié)點運作者提供密鑰管理的思路。下述方法肯定會變,因為一些關(guān)于密鑰、密鑰循環(huán)(key rotation)、HSMs和其他安全問題的操作問題將在未來幾個月解決。
Libra驗證者目前運行的三個密鑰對存儲在兩個配置文件中:
- 一個存儲在/opt/libra/etc/consensus_keypair.config.toml的共識密鑰
- 存儲在/opt/libra/etc/network_keypair.config.toml的網(wǎng)絡(luò)身份和簽名密鑰
在Bison Trails,我們使用分層的方法來確保能使用密鑰。因為Libra驗證者需要從文件中讀取密鑰,所以有以下兩個建議:
1. 限制密鑰文件權(quán)限:無論用戶是誰,驗證者進(jìn)程是唯一需要讀取這些文件的進(jìn)程,并且沒有進(jìn)程需要對它們進(jìn)行寫入,所以我們建議將權(quán)限模式設(shè)置為“400”,這意味著用戶可以讀取,而其他人不能讀取或?qū)懭搿?/p>
2. 不要接觸磁盤:我們建議您至少為Docker圖像使用tmpfs卷,并包含引導(dǎo)代碼以使配置文件在tmpfs卷上可用。
如果你只是在本地測試驗證節(jié)點,那么就不需要保護(hù)密鑰,但是一定要注意區(qū)分開發(fā)模式和你在生產(chǎn)環(huán)境中的活動,以便為啟動主網(wǎng)做好準(zhǔn)備。