如何優(yōu)化Libra驗(yàn)證器的節(jié)點(diǎn)性能
掃描二維碼
隨時(shí)隨地手機(jī)看文章
作為Libra協(xié)會(huì)的成員,Bison Trails在Libra testnet網(wǎng)絡(luò)上運(yùn)行了第一個(gè)非Calibra驗(yàn)證節(jié)點(diǎn),獲得了深入的經(jīng)驗(yàn)。 在這篇文章中,我們詳細(xì)介紹了從這個(gè)練習(xí)中學(xué)到的知識(shí),并就如何優(yōu)化節(jié)點(diǎn)性能為其他驗(yàn)證者節(jié)點(diǎn)操作員提供了建議。
開始運(yùn)行驗(yàn)證節(jié)點(diǎn)
在詳細(xì)介紹一些經(jīng)驗(yàn)開始之前,我們建議您下載并運(yùn)行Libra網(wǎng)絡(luò)軟件。Libra項(xiàng)目團(tuán)隊(duì)在GitHub上提供了開源軟件,并在Libra項(xiàng)目開發(fā)人員的網(wǎng)站上提供了出色的指導(dǎo)文檔。Move編程語言的介紹,以及如何構(gòu)建和運(yùn)行驗(yàn)證者的詳細(xì)說明。
1. 按照Libra Core的testnet分支的“ docker”目錄中的說明在本地通過Docker運(yùn)行https://github.com/libra/libra/tree/testnet/docker
2. 使用Terraform在AWS上運(yùn)行網(wǎng)絡(luò),再次遵循Libra core的testnet分支的“Terraform”目錄中的說明
在這兩種情況下,您都應(yīng)該使用代碼的testnet分支,因?yàn)樗€(wěn)定,并且由Libra區(qū)塊鏈開發(fā)人員文檔推薦。
使用上述任一方法運(yùn)行驗(yàn)證者節(jié)點(diǎn)都相對(duì)簡單。我們建議您首先在本地通過Docker運(yùn)行,以了解節(jié)點(diǎn)的配置,使用docker logs命令查看其日志,并了解如何引導(dǎo)驗(yàn)證程序來發(fā)現(xiàn)彼此。Terraform部署將啟動(dòng)一個(gè)更真實(shí)的驗(yàn)證者網(wǎng)絡(luò),驗(yàn)證者將通過網(wǎng)絡(luò)相互通信。
對(duì)于那些已經(jīng)嘗試通過這兩種方法來運(yùn)行軟件的人來說,下面的建議將是最有意義的。
準(zhǔn)備迎接主網(wǎng)的三種方法
接下來,我們想根據(jù)我們運(yùn)行Libra驗(yàn)證器的初步經(jīng)驗(yàn)以及我們與其他區(qū)塊鏈網(wǎng)絡(luò)的先前經(jīng)驗(yàn)分享三個(gè)建議。
1、堅(jiān)持到底
當(dāng)Libra網(wǎng)絡(luò)啟動(dòng)時(shí),隨著新帳戶的添加和已驗(yàn)證的事務(wù)執(zhí)行創(chuàng)建新版本的分類帳狀態(tài),分類帳狀態(tài)將隨著時(shí)間的推移而增長。存儲(chǔ)分類帳狀態(tài)的數(shù)據(jù)庫將相應(yīng)增加。重要的是,無論出于何種原因重新啟動(dòng)驗(yàn)證者進(jìn)程,驗(yàn)證者節(jié)點(diǎn)和完整節(jié)點(diǎn)都必須能夠快速恢復(fù)。在最壞的情況下,從理論上講,節(jié)點(diǎn)始終可以僅從創(chuàng)世塊開始重新同步整個(gè)歷史記錄,但是可以通過將區(qū)塊鏈存儲(chǔ)在持久卷上,可以輕松避免這種昂貴且耗時(shí)的同步。
按照慣例,Libra驗(yàn)證器通常配置為將區(qū)塊鏈數(shù)據(jù)存儲(chǔ)在目錄“ / opt / libra / data”中;您可以通過更改/opt/libra/etc/node.config.toml的存儲(chǔ)部分將區(qū)塊鏈數(shù)據(jù)存儲(chǔ)在其他位置,但是我們建議您堅(jiān)持使用默認(rèn)位置。
從node.config.toml中摘錄的推薦存儲(chǔ)配置
dir = “/opt/libra/data”
無論您的節(jié)點(diǎn)使用哪個(gè)系統(tǒng)目錄來存儲(chǔ)區(qū)塊鏈,都將需要在該目錄樹的該位置掛載一個(gè)永久卷。 當(dāng)我們建議通過Docker運(yùn)行時(shí),這就像使用--volume或--mount標(biāo)志指定安裝詳細(xì)信息一樣簡單。 例如,假設(shè)您已在/ data主機(jī)上安裝了多TB持久卷,并且配置文件在安全卷/ libra-config上可用,則可以調(diào)用Docker來使用該卷,如下所示:
**使用volume標(biāo)志來持久化**
$ docker run -v /data:/opt/libra/data -v /config:/opt/libra/etc libra_e2e
而且,實(shí)際上Libra源代碼中提供的Terraform模板使用這種配置將Libra區(qū)塊鏈數(shù)據(jù)存儲(chǔ)在EBS卷上。
在Bison Trails,我們還擁有專有系統(tǒng),可以定期對(duì)區(qū)塊鏈數(shù)據(jù)進(jìn)行快照,以便在丟失卷或特定數(shù)據(jù)中心不可用時(shí)(在全球運(yùn)行的數(shù)十萬個(gè)區(qū)塊鏈節(jié)點(diǎn)中很少發(fā)生),我們可以快速使用新卷或在其他位置啟動(dòng)新節(jié)點(diǎn)。就是說與這些高級(jí)類型的系統(tǒng)不同,我們用自己的Libra驗(yàn)證者所做的第一件事就是將區(qū)塊鏈目錄存儲(chǔ)在一個(gè)持久的位置。
2、指標(biāo)和警報(bào)
在Bison Trails,我們習(xí)慣于在運(yùn)行的區(qū)塊鏈軟件旁邊添加監(jiān)視層,以便我們可以預(yù)測并采取通過網(wǎng)絡(luò)正常演進(jìn)所需的任何擴(kuò)展操作,并對(duì)任何意外事件做出反應(yīng)。
以Libra區(qū)塊鏈為例,核心開發(fā)團(tuán)隊(duì)通過Prometheus發(fā)布了非常有用的指標(biāo)的軟件,為所有驗(yàn)證者提供了巨大的開端。Prometheus是一個(gè)出色的時(shí)間序列數(shù)據(jù)解決方案,它已成為衡量指標(biāo)和提醒開發(fā)人員團(tuán)隊(duì)的金標(biāo)準(zhǔn)。體驗(yàn)這些指標(biāo)的最佳方法是通過上面運(yùn)行驗(yàn)證者入門中所述的Terraform方法來運(yùn)行驗(yàn)證者網(wǎng)絡(luò)。如下面的屏幕快照所示,它提供了一個(gè)現(xiàn)成的儀表板,其中包含針對(duì)各個(gè)節(jié)點(diǎn)以及整個(gè)網(wǎng)絡(luò)范圍的節(jié)點(diǎn)的許多關(guān)鍵指標(biāo)。
Libra Core隨附了工作指標(biāo)和示例儀表板
通過跨多個(gè)網(wǎng)絡(luò)運(yùn)行節(jié)點(diǎn),我們已經(jīng)建立了一種相當(dāng)廣泛而嚴(yán)格的方法來監(jiān)視我們的節(jié)點(diǎn)。 我們以三種常規(guī)類別查看指標(biāo):
系統(tǒng)指標(biāo):例如 CPU /內(nèi)存/磁盤利用率
區(qū)塊鏈節(jié)點(diǎn):例如 流程運(yùn)行狀況,節(jié)點(diǎn)連接性,數(shù)據(jù)傳輸
區(qū)塊鏈應(yīng)用:例如 凍結(jié)率,交易率和驗(yàn)證統(tǒng)計(jì)
對(duì)于我們跟蹤的每個(gè)指標(biāo),我們可以將警報(bào)大致分為嚴(yán)重或非嚴(yán)重警報(bào)。由于Libra主網(wǎng)尚未啟動(dòng),并且核心開發(fā)工作以非常激進(jìn)的速度推進(jìn),如果驗(yàn)證程序停頓,Bison Trails的任何人都不會(huì)得到調(diào)用。但是隨著啟動(dòng)的臨近,我們將收緊警報(bào)閾值和嚴(yán)重性,我們建議由運(yùn)行節(jié)點(diǎn)的任何Libra Association成員監(jiān)視關(guān)鍵性能指標(biāo),并在適當(dāng)?shù)牡胤浇⒕瘓?bào)。
3、保護(hù)您的密鑰
我們的最終建議與您的Libra節(jié)點(diǎn)的密鑰管理有關(guān)。首先,一個(gè)警告:驗(yàn)證者密鑰管理的方法正在推進(jìn),因此我們在此描述的內(nèi)容并不打算用于主網(wǎng),而是要讓AssociaTIon成員和其他節(jié)點(diǎn)操作員考慮驗(yàn)證者密鑰。隨著有關(guān)密鑰,密鑰輪換,HSM和其他安全性問題的一些操作問題在未來幾個(gè)月內(nèi)得到解決,以下方法肯定會(huì)發(fā)生變化。
當(dāng)前Libra驗(yàn)證者使用存儲(chǔ)在兩個(gè)配置文件中的三個(gè)密鑰對(duì)運(yùn)行:
1. 共識(shí)密鑰存儲(chǔ)在/opt/libra/etc/consunsion_keypair.config.toml
2. 網(wǎng)絡(luò)標(biāo)識(shí)和簽名密鑰存儲(chǔ)在/opt/libra/etc/network_keypair.config.toml
在Bison Trails,我們使用分層方法來確保對(duì)密鑰的訪問。由于Libra驗(yàn)證程序需要從文件讀取密鑰,因此以下兩種做法適用:
1. 限制密鑰文件的權(quán)限:無論用戶是誰,驗(yàn)證者進(jìn)程都是唯一需要讀取這些文件的進(jìn)程,并且不需要向其寫入文件,因此我們建議將權(quán)限模式設(shè)置為“ 400”,這意味著用戶可以讀取,并且沒有其他人可以讀或?qū)憽?/p>
2. 磁盤隔離:至少我們建議您將tmpfs卷用于Docker映像,并包括引導(dǎo)代碼以使配置文件在tmpfs卷上可用。
如果您只是在本地試驗(yàn)驗(yàn)證者節(jié)點(diǎn),則不需要密鑰保護(hù),但是請務(wù)必注意開發(fā)模式與生產(chǎn)模式中要執(zhí)行的操作之間的根本是有差異的,做好所有準(zhǔn)備工作,迎接Libra主網(wǎng)的到來。