Solana 測試網驗證者 - 零停機遷移

🚀 零停機遷移步驟

本指南說明如何在不停機的情況下,將現有的 Solana 測試網驗證者遷移到新伺服器。

前提條件

請確保以下兩個驗證者節點皆已設定完成:
  1. 運作中的測試網驗證者節點(來源節點)
  2. 新的測試網驗證者節點(目標節點)
⚠️ 兩個節點都必須使用 slv v init 命令進行設定。
請確認您已備妥一台備用伺服器。若沒有備用伺服器,執行本流程可能會使運作中的驗證者停止,導致系統當機。
兩個節點都必須完全同步至最新的 slot(使用 solana catchup 確認;slot 差值必須為 0)。
本例中,驗證者節點的名稱如下:
  • 來源節點(運作中,From)名稱:main-node
  • 目標節點(新節點,To)名稱:spare-node
⚠️ 除 IP 地址(ansible_host)與名稱外,兩個節點的設定必須完全相同。
兩個節點使用的公鑰:
yaml
identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLV

設定新的備用節點

執行以下命令,設定新的備用節點:
bash
slv v init
.
.
? Do you want to create a new identity key now? (Y/n) › No
? Please Enter Your Identity Public Key › FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
? Enter Inventory Name (FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV) › epics-spare-node
? Do you want to create a new vote account key now? (Y/n) › No
? Please Enter Your Vote Account Public Key › oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
? Please Enter Your Vote Account's Authority Key › hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLV

部署並同步目標節點

首先部署目標節點:
bash
slv v deploy -n testnet -p spare-node
確認同步已完成,且 slot 差值為 0。

確認來源節點與目標節點的設定

使用以下命令,確認兩個節點的設定相同:
bash
cat ~/.slv/inventory.testnet.validators.yml
⚠️ 除 IP 地址(ansible_host)與名稱外,兩個節點的設定必須完全相同。
yaml
testnet_validators:
  hosts:
    main-node:
      name: main-node
      ansible_host: XXX.XXX.XXX.XXX
      ansible_user: solv
      ansible_ssh_private_key_file: ~/.ssh/id_rsa
      identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
      vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
      authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLV
      validator_type: agave
    spare-node:
      name: spare-node
      ansible_host: YYY.YYY.YYY.YYY
      ansible_user: solv
      ansible_ssh_private_key_file: ~/.ssh/id_rsa
      identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
      vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
      authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLV
      validator_type: agave

執行驗證者節點遷移

使用以下命令執行節點遷移:

1. 選擇 Solana 網路

bash
slv v switch
? Select Solana Network (testnet)
❯ testnet
  mainnet

2. 輸入來源驗證者名稱

bash
✨ Switching Testnet Validator Identity...
? From Validator Name › main-node

3. 輸入目標驗證者名稱

bash
? To Validator Name › spare-node
遷移成功後,您會看到類似以下的輸出:
bash
PLAY RECAP ********************************************************************
main-node : ok=3 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
spare-node : ok=4 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0

Successfully swapped hosts spare-node and main-node in testnet_validators
✅ Successfully Switched Validator Identity
至此,您的驗證者節點遷移已完成。