Skip to content

哨兵節點

設定哨兵節點

設定驗證器時,有無數種方法可以配寘您的設定。 本指南旨在展示其中之一,即哨兵節點設計。 這個設計主要是為了預防DDOS

網絡佈局

網絡佈局

該圖是基於AWS的,其他雲提供商也會有類似的解決方案來設計解決方案。 運行節點不僅限於雲提供商,您也可以在裸機系統上運行節點。 無論您决定採用哪種設定,架構都將是相同的。

所提出的網絡圖類似於企業環境中經典的後端/前端服務分離。 在這種情況下,“後端”是資料中心中驗證器的專用網絡。 資料中心網絡可能涉及多個子網、防火牆和冗餘設備,在此圖中未詳細說明。 重要的一點是資料中心允許直接連接到所選的雲環境。 亞馬遜AWS有“Direct Connect”,而穀歌雲有“合作夥伴互連”。 這是與雲提供商的專用連接(通常直接連接到某個區域中的虛擬私有雲實例)。

所有哨兵節點(“前端”)都使用此私有連接連接到驗證器。 驗證者沒有公共IP地址來提供服務。

亞馬遜在一個區域內有多個可用區。 其他地區也可以安裝哨兵節點。 在這種情況下,第二個、第三個和更多區域需要具有到驗證器節點的私有連接。 這可以通過VPC對等互連(Google Cloud中的“VPC網絡對等互連”)來實現。 在這種情況下,第二、第三和更多區域哨兵節點將被定向到第一區域並通過直接連接到資料中心,到達驗證器。

更持久的解決方案(圖中未詳細說明)是從資料中心到不同區域的多個直接連接。 這樣,VPC對等連接不是強制性的,但仍然有利於哨兵節點。 這克服了依賴一個地區的風險。 它的成本更高。

本地配寘

本地配寘

驗證器只會與提供的哨兵通信,哨兵節點將通過秘密連接與驗證器通信,並通過正常連接與網絡的其餘部分通信。 哨兵節點也可以選擇相互通信。 當config.toml初始化節點時,可能需要更改五個參數。

  • pex: 布尔值。 這將打開或關閉節點的對等網絡資訊交換器。 當pex=false時,只有persistent_ peers清單可用於連接.
  • persistent_peers: 逗號分隔的nodeID@ip:port值清單,定義預期始終線上的對等點清單。 這在第一次啟動時是必要的,因為通過設定pex=false節點將無法加入網絡.
  • unconditional_peer_ids: 逗號分隔的節點ID清單。 無論入站和出站對等點的限制如何,這些節點都將連接到。 當哨兵節點具有完整的地址簿時,這非常有用。
  • private_peer_ids: 逗號分隔的節點ID清單。 這些節點不會被傳播到網絡上。 這是一個重要的欄位,因為您不希望您的驗證器IP被傳播到網絡上。
  • addr_book_strict: 布尔值。 默認情况下,具有可路由地址的節點將被考慮進行連接。 如果關閉此設定(false),則可以將不可路由的IP地址(例如專用網絡中的地址)添加到地址簿中。
  • double_sign_check_height int64 高度。 在加入共識之前要回顧多少個區塊來檢查節點共識投票的存在。 當非零時,如果使用相同的共識金鑰來簽署{double_sign_check_height}最後一個區塊,節點將在重新啟動時出現恐慌。 囙此,驗證者應該停止狀態機,等待一些塊,然後重新啟動狀態機以避免恐慌。

驗證器節點配寘

配置選項 設定
pex false
persistent_peers 哨兵節點清單
private_peer_ids none
unconditional_peer_ids 可選哨兵節點ID
addr_book_strict false
double_sign_check_height 10

驗證器節點應該具有這樣的特性pex=false,這樣它就不會向整個網路傳播八卦。 持久對等點將是您的哨兵節點。 私有節點可以留空,因為驗證器不會試圖隱藏正在與誰通信。 對於驗證者來說,設定無條件對等點是可選的,因為它們沒有完整的地址簿。

哨兵節點配寘

配置選項 設定
pex true
persistent_peers 驗證者節點,可選其他哨兵節點
private_peer_ids 驗證者節點ID
unconditional_peer_ids 驗證者節點,可選其他哨兵節點
addr_book_strict false

哨兵節點應該能够與整個網路通信,這就是為什麼pex=true。 哨兵節點的持久對等點將是驗證者,也可以是其他哨兵節點。 哨兵節點應確保它們不會傳播驗證器的IP,為此,您必須將驗證器的nodeID設定為私有對等點。 無條件對等ID將是驗證者ID和可選的其他哨兵節點。

注意:設定節點時不要忘記保護節點的防火牆.

獲取節點nodeid

首先進入stcd命令所在的目錄下,然後運行以下命令獲取NodeId

./stcd tendermint show-node-id

nodeid是長度40的字串,例如:

b86863115efa5ded87ec36d0ad287aaee050e4d2

節點通訊埠默認為26656,假如當前節點IP為8.8.8.8的話,那麼節點的最終地址組合應該如下:

b86863115efa5ded87ec36d0ad287aaee050e4d2@8.8.8.8:26656

更多資訊可以在以下連結中找到: