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