Solana Mainnet Validator - Kesintisiz Taşıma
🚀 Kesintisiz Taşıma Prosedürü
Bu kılavuz, mevcut bir Solana mainnet validatörünün kesinti olmadan yeni bir sunucuya nasıl taşınacağını açıklar.
Ön Koşullar
Aşağıdaki iki validatör düğümünün zaten kurulmuş olduğundan emin olun:
- Aktif Mainnet Validatör Düğümü (Kaynak, From)
- Yeni Mainnet Validatör Düğümü (Hedef, To)
⚠️ Her iki düğüm de
slv v init komutuyla kurulmuş olmalıdır.Kullanılabilir bir yedek sunucunuz olduğundan emin olun. Yedek sunucunuz yoksa bu prosedürü uygulamak aktif validatörünüzü durdurabilir ve sistemin çökmesine neden olabilir.
Her iki düğüm de en son slota tamamen senkronize olmalıdır (
solana catchup komutuyla doğrulayın; slot farkı 0 olmalıdır).Bu örnekte validatör düğümleri şu şekilde adlandırılmıştır:
- Kaynak (Aktif, From) Adı:
main-node - Hedef (Yeni, To) Adı:
spare-node
⚠️ Her iki düğüm de IP adresleri (ansible_host) ve adlar dışında aynı yapılandırmaya sahip olmalıdır.
Her iki düğüm için kullanılan açık anahtarlar:
yaml
identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVidentity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVYeni Yedek Düğümü Kurma
Yeni yedek düğümü şu komutu çalıştırarak kurun:
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 › hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVslv 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 › hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVHedef Düğümü Dağıtma ve Senkronize Etme
Önce hedef düğümü dağıtın:
bash
slv v deploy -n mainnet -p spare-nodeslv v deploy -n mainnet -p spare-nodeSenkronizasyonun tamamlandığını ve slot farkının 0 olduğunu doğrulayın.
Kaynak ve Hedef Düğümlerin Yapılandırmasını Doğrulama
Her iki düğümün yapılandırmasının aynı olduğunu şu komutla doğrulayın:
bash
cat ~/.slv/inventory.mainnet.validators.ymlcat ~/.slv/inventory.mainnet.validators.yml⚠️ Her iki düğüm de
ansible_host (IP adresi) ve name dışında aynı ayarlara sahip olmalıdır.yaml
mainnet_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
...mainnet_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
...Validatör Düğümü Taşımasını Yürütme
Düğüm taşımasını aşağıdaki komutlarla yürütün:
1. Solana Ağı Seçimi
bash
slv v switch
? Select Solana Network (mainnet)
testnet
❯ mainnetslv v switch
? Select Solana Network (mainnet)
testnet
❯ mainnet2. Kaynak Validatörün Adını Girin
bash
✨ Switching Mainnet Validator Identity...
? From Validator Name › main-node✨ Switching Mainnet Validator Identity...
? From Validator Name › main-node3. Hedef Validatörün Adını Girin
bash
? To Validator Name › spare-node? To Validator Name › spare-nodeTaşıma başarılı olduğunda aşağıdakine benzer bir çıktı görürsünüz:
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 mainnet_validators
✅ Successfully Switched Validator IdentityPLAY 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 mainnet_validators
✅ Successfully Switched Validator IdentityValidatör düğümü taşımanız artık tamamlandı.