Solana Testnet Validator - Di chuyển không downtime

🚀 Quy trình di chuyển không downtime

Hướng dẫn này giải thích cách di chuyển Solana testnet validator hiện tại sang máy chủ mới mà không có downtime.

Điều kiện tiên quyết

Đảm bảo hai node validator sau đã được thiết lập:
  1. Node Testnet Validator đang hoạt động (Nguồn)
  2. Node Testnet Validator mới (Đích)
⚠️ Cả hai node phải được thiết lập bằng lệnh slv v init.
Đảm bảo bạn đã có sẵn máy chủ dự phòng. Nếu bạn không có máy chủ dự phòng, việc thực hiện quy trình này có thể dừng validator đang hoạt động, gây ra sự cố hệ thống.
Cả hai node phải được đồng bộ hoàn toàn đến slot mới nhất (xác minh bằng solana catchup; chênh lệch slot phải là 0).
Trong ví dụ này, các node validator được đặt tên như sau:
  • Tên nguồn (Đang hoạt động, Từ): main-node
  • Tên đích (Mới, Đến): spare-node
⚠️ Cả hai node phải có cấu hình giống hệt nhau, ngoại trừ địa chỉ IP (ansible_host) và tên.
Public key được sử dụng cho cả hai node:
yaml
identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLV

Thiết lập node dự phòng mới

Thiết lập node dự phòng mới bằng cách thực thi:
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

Triển khai và đồng bộ node đích

Triển khai node đích trước:
bash
slv v deploy -n testnet -p spare-node
Xác minh quá trình đồng bộ hoàn tất và chênh lệch slot là 0.

Xác minh cấu hình node nguồn và đích

Xác nhận cấu hình cho cả hai node giống hệt nhau bằng:
bash
cat ~/.slv/inventory.testnet.validators.yml
⚠️ Cả hai node phải có thiết lập giống hệt nhau, ngoại trừ địa chỉ IP (ansible_host) và tên.
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

Thực thi di chuyển node validator

Thực thi di chuyển node bằng các lệnh sau:

1. Chọn mạng Solana

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

2. Nhập tên validator nguồn

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

3. Nhập tên validator đích

bash
? To Validator Name › spare-node
Khi di chuyển thành công, bạn sẽ thấy output tương tự:
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
Quá trình di chuyển node validator của bạn đã hoàn tất.