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