Validador da Solana Mainnet - Migração em tempo zero
Procedimento de Migração em Tempo Zero
Este guia explica como migrar um validador de rede principal Solana existente para um novo servidor sem tempo de inatividade.
Pré-requisitos
Certifique-se de que os seguintes dois nós validadores já estão configurados:
- Não de Validador Mainnet Active (Fonte, De)
- Novo Não de Validador da Mainnet (Destino, Para)
Ambos os nós devem ser configurados usando o
slv v init Comando.Certifique-se de que já tem um servidor disponível. Se não tiver um servidor sobressalente, a execução deste procedimento poderá interromper o seu validador activo, causando uma falha no sistema.
Ambos os nós devem ser totalmente sincronizados com o último slot (verificar com
solana catchup comando; a diferença de slot deve ser 0).Neste exemplo, os nós validadores são nomeados da seguinte forma:
- Fonte (Ativa, De) Nome:
main-node - Destino (Novo, Pará) Nome:
spare-node
Ambos os nós devem ter configurações idênticas, exceto para endereços IP (ansible host) e nomes.
Chaves públicas usadas para ambos os nós:
yaml
identity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVidentity_account: FgYddqZuWLWiHCxWGG3J7VdzD2TGcCzKEZTHWdeHSLV
vote_account: oY4zjHQuRE1MQYAnQmfrodoXukBkfGVfYWUZNrn7SLV
authority_account: hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVConfigurar o Novo Nó Sobressalente
Configurar o novo nó sobressalente executando:
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 › hY9VpH6ahHLS4uhegd16cQ5wNaicejVtv2PxrzRySLVColocando e sincronizando o nó de destino
Implantar primeiro o nó de destino:
bash
slv v deploy -n mainnet -p spare-nodeslv v deploy -n mainnet -p spare-nodeVerificar a sincronização está completa e a diferença de slot é 0.
Verificar a Configuração dos Nós de Origem e Destino
Confirme que as configurações de ambos os nós são idênticas usando:
bash
cat ~/.slv/inventory.mainnet.validators.ymlcat ~/.slv/inventory.mainnet.validators.ymlAmbos os nós devem ter configurações idênticas, exceto
ansible_host (endereço IP) e name.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
...Executando a Migração do Nó do Validador
Execute a migração de nós com os seguintes comandos:
1. Selecione Solana Network
bash
slv v switch
? Select Solana Network (mainnet)
testnet
❯ mainnetslv v switch
? Select Solana Network (mainnet)
testnet
❯ mainnet2. Digite o nome do validador de código fonte
bash
✨ Switching Mainnet Validator Identity...
? From Validator Name › main-node✨ Switching Mainnet Validator Identity...
? From Validator Name › main-node3. Digite o nome do validador do destino
bash
? To Validator Name › spare-node? To Validator Name › spare-nodeApós a migração bem sucedida, você verá uma saída semelhante a:
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 IdentitySua migração de nó validador está agora concluída.