1. 程式人生 > >容器技術在錢包節點部署中的優化策略_Kubernetes中文社群

容器技術在錢包節點部署中的優化策略_Kubernetes中文社群

因為業務需要,需要部署各種區塊鏈公鏈需要支援的節點,也就是錢包服務,和全球開放的節點進行同步。大部分錢包程式都不成熟,所以經常需要手工維護和節點資料的備份處理。這在同行的經驗分享的時候發現大家都在全量的使用容器技術來部署錢包節點。所以,我也在這裡和大家分享一下容器技術在單體的錢包服務部署過程中應該注意什麼,如何優化。

1、映象的優化,作為基礎映象,一般會選擇alpine映象作為基準。在一般的容器優化推薦中,大量的實踐推薦都是以短小精悍的OS體積作為評判標準。這個本身沒有錯,但是我們也要考慮錢包服務目前都是不成熟的元件,很少有在alpine上做過基準測試的,很難發揮完整錢包的能力。這塊,我的策略是以官方提供的Dockerfile作為基準構建自己的映象,不要去浪費精力在映象構建上。

2、映象分發和構建有可能會遇到GFW拉不下來的情況,尤其是依賴環境元件包拉不下來。所以我的策略是在香港丟一臺做構建就可以。

3、錢包是各種語言構建的,版本又很多。網上構建好的映象又千奇百怪。所以,能自己構建的,就不要用別人的。就是有比較好的,也依據Dockerfile自己構建一遍。這樣可以幫你梳理清楚步驟並在遇到問題的時候可以心裡有一個線索。

4、最好部署一次,就可以重複的複用部署指令碼。這塊網上現成的大多也不完整,我整理了一份放在github上,大家可以參考。目前區塊都在1T一下的,所以要提前準備好掛載資料的盤的大小。支援k8s. https://github.com/xiaods/ethereum-client-k8s-setup

5、本來我已經作為節點同步,流量會比較大,把UDP埠給遮蔽了。但是後來發現關閉UDP就沒有人來連線我的錢包節點。細想一下,P2P網路不開放udp掃描埠肯定不能帶來節點拓撲圖的,應該開放。注意對於公有云上,udp的網路埠是很容易被遮蔽的,合理的辦法是和服務商通氣,瞭解規則。

6、因為每個錢包就是一個RPC服務,所以按照業務需求,對於有大量請求的錢包可以部署多個錢包,前面擋一個LB就可以負載RPC 請求。

7、SSD的盤是必須的,不然可能一個月都不一定能同步完像Ethererum這樣的超級火爆的公鏈。其他公鏈可以忽略,都不是很熱,包括BitCoin鏈都很快。所以目前最難吭的就是以太坊,其他都還好。

8、使用集群系統如Kubernetes來管理叢集是最好的解決方案。俗話說的好,工具用的好,下班回家早。這裡很多第一次接觸Kubernetes的,對編寫deployment,statefulset不太熟,這個沒有辦法,唯一的辦法就是多練手。或者參考我的部署指令碼。https://github.com/xiaods/ethereum-client-k8s-setup

9、對於儲存這塊,最重要的是node節點資料,非常重要。所以可以備份一份,方便複製節點的時候可以直接copy。因為錢包都是單點P2P,可以直接使用複製過來的資料,很方便。

10、因為大量的Docker版本都已經進入18年的新版本,當前映象的構建裡面都會加上USER指令。在這個的目的是限制容器程序用非root賬戶執行,以防安全資訊的權利洩露。所以你在掛載目錄的時候,一定要在叢集層面指定使用userid為1000的使用者來執行,不然會失敗。這裡1000是一個經驗值,不是什麼特別的設定。請注意,你直接賦值nobody也可以。

容器技術在雲端計算領域已經鋪天蓋地的大量採用,但是真正能使用好,大家都是要結合自己的場景來做優化的。工具都是死的,只有在業務需求的歷練下,容器技術才能發揮出威力。