Configurando um Nó na Rede Avalanche com Amazon Web Services (AWS)
Aprenda a executar um nó na rede Avalanche usando um grande provedor de serviços em nuvem para garantir que você atenda aos requisitos de tempo de atividade mínima para validação no Avalanche.
O protocolo de consenso do Avalanche atraiu muita atenção de fanáticos simbólicos. O protocolo descentralizado permite recompensas de Proof of Stake (Prova de Stake) de uma forma que os detentores de tokens nunca viram antes. Com a rede sendo verde, exigindo computação muito baixa para executar seu nó de staking e com a falta de um limite para o número de stakers na rede, muitos recém-chegados estão interessados em iniciar seu nó com alta disponibilidade.
Percorreremos o processo de configuração de pares de chaves, grupos de segurança e lançamento de um nó no Amazon Web Services (AWS) . Em seguida, faremos login neste nó e instalaremos o software Avalanche como um serviço para garantir que nosso nó funcione enquanto a máquina estiver funcionando. Este tutorial não presume absolutamente nada sobre nosso ambiente de hospedagem AWS e passará por cada etapa com o mínimo de suposições possíveis.
A Logística da Nuvem Hospedando Um Nó
Provedores de nuvem, como DigitalOcean , Azure , Rackspace e AWS fornecem ambientes de alta disponibilidade. Embora os nós domésticos sejam uma opção sólida, esses serviços são bons candidatos para executar um nó que tem garantia de atingir os requisitos de tempo de atividade mínimo (60% no momento da escrita) . Com várias regiões e uma grande variedade de máquinas disponíveis, a AWS é a escolha mais comum para provedores de nuvem nos EUA hoje.
A melhor parte? Você não precisa colocar suas chaves privadas em um nó para começar a validar nesse nó. Mesmo se alguém invadir seu ambiente de nuvem e obter acesso ao nó, o pior que pode fazer é desligar o nó. No entanto é aconselhável fazer backup de todos os certificados de staking apenas no caso de uma reconstrução completa do nó ser necessária. Isso só afetará as recompensas quando a própria máquina estiver em tal situação (ou totalmente desligada) que uma reconstrução completa seja necessária.
Para começar, precisamos:
- uma conexão de Internet
- uma conta AWS
- a capacidade de fazer SSH em uma máquina (este tutorial usa Openssh e uma linha de comando, mas PuTTy no Windows pode funcionar da mesma forma)
- um bom lugar para armazenar e fazer backup de certificados de staking e arquivos de par de chaves * .pem
Etapa 1 — Faça Login no AWS
Precisamos de uma conta AWS. Este processo de inscrição está fora do escopo deste artigo, mas a Amazon tem instruções aqui .
Também é altamente recomendável que configuremos a Autenticação multifator em nossa conta de usuário root para protegê-la. Novamente, a Amazon tem documentação para isso, encontrada aqui:
Depois de concluído, podemos começar a criar nossa instância EC2. EC2 é um serviço fornecido pela AWS para permitir que os usuários da AWS iniciem instâncias de máquina virtual na nuvem. Essas máquinas virtuais são pequenos ambientes de computação que executam um sistema operacional de sua escolha. Para entrar no painel EC2 após fazer login na AWS, clique no link EC2 no console de gerenciamento.
O retângulo vermelho indica em qual link clicar.
Etapa 2 — Criar Pares de Chaves da AWS
Para fazer login na instância do nosso nó na AWS, devemos baixar os pares de chaves da AWS, que nos concederão acesso ao nosso host. Os arquivos de pares de chaves são usados por programas como OpenSSH ou PuTTy para acessar nossos hosts. Vamos primeiro gerar este par de chaves para que possamos atribuí-lo à nossa instância AWS posteriormente no tutorial. Começamos selecionando o link Key Pairs na barra lateral do console EC2.
Vamos clicar em “Criar par de chaves” para iniciar o assistente de criação de par de chaves.
Nomearemos nosso par de chaves e selecionaremos um formato de arquivo. Nesta imagem, chamamos nosso par de chaves de “avalanche” e selecionamos o formato de arquivo “pem”, pois o restante do tutorial usará OpenSSH. Se quiséssemos usar PuTTy no Windows, o formato de arquivo “ppk” seria a melhor opção. Se quisermos, podemos opcionalmente adicionar tags para nosso par de chaves para auxiliar no rastreamento. No par de chaves abaixo, demos a ele a tag “Nome” e o valor “Par de Chaves de Avalanche”.
Em seguida, clicamos em “Criar par de chaves” e se tudo estiver bem, veremos a seguinte mensagem de sucesso.
Tada! Agora, temos um par de chaves que podemos usar para fazer login em nossa instância AWS mais tarde. No processo de criação deste par de chaves, um arquivo foi baixado. No exemplo acima, nomeamos nosso par de chaves “avalanche.pem”, mas o nome refletirá tudo o que inserimos no formulário.
Este arquivo de par de chaves é muito importante. É a única maneira de fazer login em nossa instância que criaremos mais tarde. Se perdermos isso, será muito difícil recuperar o acesso à nossa máquina. Qualquer pessoa com este arquivo de par de chaves terá acesso ao nosso host, portanto, é essencial fazer o backup desse arquivo de par de chaves em um local seguro.
Etapa 3 — Criar Um Grupo de Segurança
Grupos de segurança na AWS são modelos usados para bloquear permissões de firewall em um host. Como queremos habilitar algum tráfego de entrada e desabilitar todo o outro tráfego, precisaremos criar um grupo de segurança personalizado nosso. Para começar, selecionaremos “Grupos de segurança” na barra lateral da página de gerenciamento do EC2.
Isso deve abrir o painel Security Groups na página. A seguir, iniciaremos o processo de criação de um novo grupo de segurança. Para fazer isso, clicaremos no botão “Criar grupo de segurança” no canto superior direito do painel Grupos de segurança.
Agora precisaremos abrir algumas portas essenciais para o tráfego de entrada na AWS em nosso novo grupo de segurança. Manteremos o SSH aberto, embora, opcionalmente, possamos restringi-lo ao nosso endereço IP. Isso só pode funcionar se tivermos um endereço IP estático. Já que, como a maioria das pessoas, não temos um endereço IP estático, não aceitaremos essa opção e deixaremos a “Fonte” aberta para todos. Também queremos abrir o tráfego TCP de entrada para 9650 se quisermos usar APIs em nosso nó. Por último, devemos abrir o tráfego para 9651 para que nosso nó possa se comunicar com outros nós da rede. Esta é a aparência de nossas Regras de entrada finais para nosso novo Grupo de segurança.
Também devemos abrir 3000, 9090, 9100 se quisermos habilitar os recursos de monitoramento de nó. Porém, está fora do escopo deste tutorial.
Adicionaremos uma tag ao nosso novo grupo de segurança. A chave é “Nome” e o valor é “Avalanche Security Group”. Isso nos permitirá saber o que é esse grupo de segurança quando o virmos na lista de grupos de segurança.
Clicaremos em “Criar grupo de segurança” e, se tudo tiver corrido bem, veremos nosso grupo de segurança na lista de grupos de segurança. Se selecionarmos nosso grupo de segurança, o painel de detalhes na parte inferior será aberto com suas informações. Se fizermos tudo certo, os detalhes da guia Entrada ficarão assim:
Como observação, não fizemos nada para modificar as regras de saída. Isso ocorre porque as regras de saída padrão são que nossa máquina pode alcançar qualquer outra máquina. Deixamos isso como está porque confiamos em nossa máquina e também queremos deixá-la aberta para conversar com qualquer outro nó da rede.
Etapa 4 — Iniciar Uma Instância AWS
Finalmente! Não há mais configuração, agora é todo o conteúdo! Estamos prontos para lançar nossa instância AWS para hospedar nosso nó. Para começar, a partir do EC2 Dashboard, clicamos no botão que diz “Launch instance”.
Em seguida, selecionamos o sistema operacional. Vamos usar “Ubuntu 20.04 LTS (HVM), tipo de volume SSD” ou “Ubuntu 18.04 LTS (HVM), tipo de volume SSD”. Os requisitos mínimos do AvalancheGo são para o Ubuntu 18.04, mas o 20.04 também funciona bem. Para este tutorial, vamos com 18.04, mas não deve fazer nenhuma diferença estética nos procedimentos que estamos passando.
A próxima etapa é selecionar nosso tipo de instância. AvalancheGo pode ser executado em muitos hardwares e tem requisitos de CPU muito baixos. No entanto, a rede funciona tão rápido quanto a máquina mínima, e o Avalanche sempre solicitou pelo menos 2 vCPUs e 4 GB de memória. Isso torna “c5.large” um tipo de instância ideal para nosso nó. Para criar uma instância c5.large, selecionamos a opção “Compute-optimized” no menu suspenso “Filter by All instance types”.
Em seguida, marcamos a caixa de seleção ao lado da instância c5.large na tabela.
E, finalmente, clicamos no botão “Next: Configure Instance Details” no canto inferior direito.
Na próxima etapa, vamos configurar nossos detalhes de instância. Quase tudo nesta página pode permanecer igual. No entanto, há uma maneira de economizar algum dinheiro nesta página que muitas pessoas não aproveitam. É chamado de “Instâncias Spot”. Instâncias spot são instâncias que não têm garantia de estar sempre ativas, mas a desvantagem é que custam muito menos em média do que instâncias persistentes. No momento deste tutorial, uma instância c5.large custa $ 0,085 USD por hora na AWS. Isso totaliza ~ $ 745 USD por ano. No momento deste artigo, as instâncias spot podem economizar 62%, reduzindo esse total para $ 462.
Opcional: Economizando Um Pouco de Dinheiro Com Instâncias Spot
As instâncias spot usam uma estrutura de preço de mercado de oferta e demanda. Conforme a demanda por instâncias aumenta, o preço da instância spot aumenta. Podemos definir um preço máximo que estamos dispostos a pagar pela instância spot como 0,08499 e definir a instância como “Stop” em vez de “Terminate”, e obtemos qualquer valor de mercado atual do poder de computação para nossa instância por a hora. Se o valor de mercado ultrapassar $ 0,08499 por uma hora, nossa instância será interrompida e teremos que reiniciá-la.
Isso parece arriscado até olharmos para os números por trás desse cenário. Há uma chance muito baixa de desligamento. Muito menos que 5%, e como exigimos 60% de tempo de atividade, podemos lidar com o risco com 62% de economia.
Para configurar uma instância spot, clicamos na caixa “Solicitar instâncias spot”, definimos nosso preço máximo para $ 0,08499, marcamos a caixa ao lado de “Solicitação persistente” e, muito importante , alteramos o “Comportamento de interrupção” para “Parar”. Super!
Continuando Em Frente, Adicionando Armazenamento, Adicionando Tags, Concluindo!
Agora clicamos no botão “Avançar: Adicionar armazenamento” no canto inferior direito da tela para avançar para adicionar armazenamento.
Precisamos adicionar espaço adicional ao nosso volume SD para que nosso nó funcione sem problemas no SSD. Colocamos 40 GB neste exemplo, mas pode ser mais se você se sentir mais seguro com mais espaço. Lembre-se de que o banco de dados do Avalanche crescerá continuamente até que a poda seja habilitada, portanto, é mais seguro ter uma alocação de disco rígido maior por enquanto.
Para continuar, clicamos em “Next: Add Tags” no canto inferior direito da tela para adicionar tags à nossa instância. As tags nos permitem associar metadados à nossa instância. Como essa instância precisa de um nome, vamos dar a ela a chave “Nome” e o valor “Meu Nó Avalanche”. Isso deixará claro qual é esse nó em nossa lista de instâncias do EC2.
Agora vamos atribuir o grupo de segurança que criamos anteriormente com nossa instância. Escolhemos “Selecionar um grupo de segurança existente ” na opção “Atribuir um grupo de segurança”. Agora escolhemos o grupo de segurança Avalanche que criamos na Etapa 3 deste tutorial.
Por fim, clicamos em “Revisar e lançar” no canto inferior direito. Uma página de revisão aparecerá com os detalhes do que estamos prestes a lançar. Podemos revisá-los e, se tudo estiver certo, clicaremos no botão azul “Iniciar” no canto inferior direito da tela.
Isso nos solicitará que selecione um par de chaves para esta instância. Vamos selecionar “Escolha um par de chaves existente” e, em seguida, selecionar o par de chaves “avalanche” que fizemos anteriormente no tutorial. Marcamos a caixa reconhecendo que temos acesso ao nosso arquivo “pem” ou “ppk” criado anteriormente e clicamos em “Iniciar instâncias” no canto inferior direito.
Devemos ver uma nova página pop-up que confirma que nossa instância está sendo iniciada!
A AWS usa IPs dinâmicos para cada instância por padrão. Isso significa que nosso endereço IP pode mudar para nosso nó. É muito melhor não lidar com isso, então vamos usar um Elastic IP. Este não é um requisito difícil, mas se quisermos manter seu tempo de atividade, é importante que nossos scripts de nó tenham o endereço IP. Em vez de modificar isso toda vez que nosso nó é reiniciado, o Elastic IP o mantém estático no futuro. O primeiro passo é entrar no gerenciador Elastic IPs e clicar em “Allocate Elastic IP address” no canto superior direito da tela.
Em seguida, selecione a região em que estamos, escolha no pool de endereços IPv4 da Amazon e clique no botão “Alocar”.
Isso cria um novo endereço IP elástico. Selecionamos o IP elástico que acabamos de criar no gerenciador Elastic IP. No botão “Actions” no canto superior direito, escolhemos “Associate Elastic IP address”.
Por fim, estamos selecionando a instância que acabamos de criar, conforme mostrado abaixo. Isso associará o novo Elastic IP à nossa instância e fornecerá a ele um endereço IP estático que não mudará.
Etapa 5 — Configurando o Nó
Para continuar, vamos precisar ter certeza de que nossa instância está em execução, e vamos precisar do nome DNS público de nossa instância para fazer o login via SSH. Isso pode ser visto no painel EC2 clicando em “Executando instâncias”. Além disso, ao iniciar nosso nó, precisaremos do endereço “IP público IPv4” para colocar a instância em execução.
Em seguida, examinamos nossa lista de instâncias em execução e selecionamos nosso nó Avalanche recém-criado. Isso abre o painel de detalhes na parte inferior da tela. Vamos procurar o campo “DNS Público” e copiar esse endereço. Esse é o endereço que podemos usar para fazer login em nossa instância AWS.
Vamos copiar este endereço agora e continuar em frente.
NOTA: Este artigo foi escrito por mim, Collin Cusce, e eu executo uma máquina Ubuntu. O login no host e a cópia dos arquivos serão informados da perspectiva de um usuário Ubuntu. Existem diferentes etapas para esses procedimentos se estiver usando Mac OS ou Windows, mas são bastante fáceis de traduzir para as operações que estamos executando aqui. Se alguém quiser fornecer instruções para esses sistemas operacionais, terei prazer em criar um link para eles neste artigo.
Usando nosso valor de DNS público que copiamos anteriormente, vamos fazer o login em nossa instância AWS de nosso computador local. Agora vamos abrir um terminal no Ubuntu, navegar até o local onde baixamos o arquivo “pem” e digitar os seguintes comandos:
chmod 400 avalanche.pem
ssh -i avalanche.pem ubuntu @ PUBLICDNS
Precisaremos substituir o valor “PUBLICDNS” pelo DNS público copiado anteriormente.
A primeira linha define a permissão adequada em nosso arquivo “pem”. Se as permissões não estiverem configuradas corretamente, veremos o seguinte erro.
Para corrigir isso, basta seguir exatamente as nossas instruções e alterar as permissões no arquivo “pem”.
Opcionalmente, podemos querer mover o arquivo “pem”. O diretório ~ / .ssh é sempre uma escolha popular, mas para este tutorial, vamos supor que estamos trabalhando no mesmo diretório que nosso arquivo “pem”.
A segunda linha nos conecta à própria instância.
Agora que estamos em nosso nó, é uma boa ideia atualizá-lo com os pacotes mais recentes. Para fazer isso, execute os seguintes comandos, um de cada vez, na ordem:
sudo apt update
sudo apt upgrade -y
sudo reboot
Isso tornará nossa instância atualizada com os patches de segurança mais recentes para nosso sistema operacional. Isso também reinicializará o nó. Daremos ao nó um ou dois minutos para inicializar novamente e, em seguida, efetuar login novamente, como antes.
Agora vamos precisar configurar nosso nó Avalanche. Para fazer isso, precisaremos buscar o pacote de nó das versões mais recentes no Github:
cd ~
curl -s https://api.github.com/repos/ava-labs/avalanchego/releases/latest \
| grep "avalanchego-linux -. * tar \ (. gz \) * \" "| cut -d: -f 2,3 | tr -d \" | wget -P ~ / -qi -
Isso fará o download do arquivo * .tar.gz da versão mais recente em nosso diretório inicial (/ home / ubuntu). A seguir, vamos extrair o arquivo * .tar.gz em um diretório chamado “avalanchego” em nosso diretório inicial e remover o arquivo * .tar.gz, pois não precisamos mais dele.
mkdir -p ~ / avalanchego
tar xvf ~ / avalanchego-linux - *. tar.gz -C ~ / avalanchego --strip-components = 1
rm ~ / avalanchego-linux - *. tar.gz
Nosso próximo passo é configurar o AvalancheGo como um serviço executado em nossa máquina sob o usuário “ubuntu”. Para fazer isso, vamos criar um arquivo de serviços para o systemd ler.
sudo nano /etc/systemd/system/avalanchego.service
Isso abre o editor de texto “nano”. Agora copiamos e colamos o seguinte no editor de texto. Editamos o arquivo no local onde está escrito “IPv4PublicIPAddress” e colocamos nosso “IPv4 Public IP” copiado anteriormente nesta etapa (Etapa 5) e, em seguida, pressionamos Ctrl-x para salvar o arquivo e sair.
[Unidade]
Descrição = serviço AvalancheGo systemd.
StartLimitIntervalSec = 0[Serviço]
Tipo =
usuário simples = ubuntu
ExecStart = / home / ubuntu / avalanchego / avalanchego --plugin-dir = / home / ubuntu / avalanchego / plugins --public-ip = IPv4PublicIPAddress --http-host =
Reiniciar = sempre
RestartSec = 1[Instalar]
WantedBy = multi-user.target
NOTA: Por padrão, este endereço IP público IPv4 pode mudar sempre que a instância for iniciada ou interrompida. Caso isso aconteça, “/etc/systemd/system/avalanchego.service” deve ser editado novamente para adicionar o novo IPv4PublicIPAddress gerado. Para evitar esse problema, podemos considerar a alocação de um “Elastic IP” que nos fornecerá um endereço IP permanente para uso. Como esses são recursos limitados, escolheremos a opção genérica, mas também seria uma boa ideia considerar a atribuição de um Elastic IPs. O tutorial da AWS sobre isso começa aqui: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
NOTA2: Um membro da super comunidade, Patricio López, apontou que o artigo original não tinha a opção “http-port”.
apenas um pequeno complemento … se você estiver executando seu nó com um ip elástico, você também precisa definir o parâmetro http-port para o IP privado (não o elástico), se você deseja conectar o nó com Postman ou CURL
Isso agora foi adicionado. Obrigado Patricio!
Por fim, executamos os seguintes comandos para dar ao arquivo de serviço as permissões corretas e iniciar nosso serviço AvalancheGo.
sudo chmod 644 /etc/systemd/system/avalanchego.service
sudo systemctl start avalanchego
sudo systemctl enable avalanchego
Etapa 6 — Concluir!
Nosso nó agora deve iniciar a inicialização! Podemos executar o seguinte comando para dar uma olhada no status mais recente do nó avalanchego:
sudo systemctl status avalanchego
Isso inicia o processo de bootstrap em nosso nó. Para verificar o status do bootstrap, precisaremos fazer uma solicitação ao RPC local usando “curl”. Esta solicitação é a seguinte:
curl -X POST --data '{
"jsonrpc": "2.0",
"id": 1,
"method": "info.isBootstrapped",
"params": {
"chain": "X"
}
}' -H 'content-type: application / json;' 127.0.0.1:9650/ext/info
Se o nó tiver concluído o bootstrap, a resposta será:
{
"jsonrpc": "2.0",
"result": {
"isBootstrapped": true
},
"id": 1
}
Sempre podemos usar “sudo systemctl status avalanchego” para ver o status mais recente de nosso serviço como antes.
Precisamos absolutamente obter nosso NodeID se planejamos fazer qualquer validação neste nó. Isso também é recuperado do RPC. Chamamos o seguinte comando curl para obter nosso NodeID.
curl -X POST --data '{
"jsonrpc": "2.0",
"id": 1,
"método": "info.getNodeID"
}' -H 'content-type: application / json;' 127.0.0.1:9650/ext/info
Se tudo estiver bem, a resposta deve ser algo como:
{"jsonrpc": "2.0", "result": {"nodeID": "NodeID-DznHmm3o7RkmpLkWMn9NqafH66mqunXbM"}, "id": 1}
Aquela parte que diz, “NodeID-DznHmm3o7RkmpLkWMn9NqafH66mqunXbM” é nosso NodeID, a coisa toda. Copie e mantenha em nossas notas. Não há nada de confidencial ou seguro sobre este valor, mas é uma necessidade absoluta para quando enviamos este nó para ser um validador.
Existem outras APIs, como a API Health disponível para nosso nó. Para habilitar essas APIs, devemos modificar a seção ExecStart de nosso arquivo “/etc/systemd/system/avalanchego.service” criado na Etapa 5 para incluir sinalizadores que habilitem esses terminais. Cuidado: essa porta está aberta para o mundo, portanto, se habilitarmos um RPC, o mundo poderá consultar esses dados de nosso nó, o que pode consumir nossa largura de banda e recursos de computação.
A última coisa que deve ser feita é fazer backup de nossas chaves de piquetagem no caso de nossa instância ser corrompida ou encerrada. É uma boa prática guardarmos essas chaves. Para fazer o backup, usamos o seguinte comando:
scp -i avalanche.pem -r ubuntu @ PUBLICDNS: /home/ubuntu/.avalanchego/staking ~ / aws_avalanche_backup
Como antes, precisaremos substituir “PUBLICDNS” pelo valor apropriado que recuperamos. Isso faz o backup de nossa chave de piquetagem e certificado de piquetagem em uma pasta https://medium.com/avalabs/setting-up-an-aws-instance-with-avalanche-1effec72c666 chamada “aws_avalanche_backup” em nosso diretório inicial.
Atualizando Nosso Nó
AvalancheGo é um projeto em andamento. As atualizações são regularmente necessárias e são essenciais para manter nosso nó atualizado. Para atualizar nosso nó para o patch mais recente, precisamos fazer o SSH em nossa instância AWS como antes e usar os seguintes comandos:
cd ~
curl -s https://api.github.com/repos/ava-labs/avalanchego/releases/latest \
| grep "avalanchego-linux -. * tar \ (. gz \) * \" "| cut -d: -f 2,3 | tr -d \" | wget -P ~ / -qi -
mkdir -p ~ / avalanchego
tar xvf ~ / avalanchego-linux - *. tar.gz -C ~ / avalanchego --strip-components = 1
rm ~ / avalanchego-linux - *. tar. gz
sudo systemctl avalanche parar
sudo systemctl avalanche iniciar
Isso é tudo. Nossa instância Está Preparada!
Ufa. Muitos passos, mas eles correm bem. Agora que temos um nó, é hora de configurar nosso nó para ser um validador na rede. Já existe um tutorial sobre isso escrito por Eduardo Monteiro , então iremos até lá a seguir e declararemos nosso nó como um validador para Avalanche!
Mantenha-se informado sobre as novidades do projeto Avalanche ao aderir o grupo do Telegram utilizando o link abaixo:
Sobre Ava Labs:
A Companhia Ava Labs simplifica o lançamento de aplicativos financeiros usando a tecnologia blockchain — com redes altamente escalonáveis e eficientes, blockchains públicos e privados personalizáveis, capacidade de criar qualquer ativo digital e muito mais. Estamos capacitando as pessoas a construir uma Internet de finanças aberta, simples e democrática.
Website | Whitepapers | Twitter | Discord | GitHub | Documentação | Explorer | Avalanche-X| Telegram | Facebook | LinkedIn | Reddit | YouTube
Aviso Legal
“Esse artigo é meramente informativo e não é uma recomendação de investimento, o mercado de criptomoedas é bastante volátil e você deve pesquisar e decidir por si mesmo em que investir, especialmente em mercados de alto risco”.