paint-brush
Como construir um cluster Raspberry Pi de 32 núcleos a partir do zeropor@alejandroduarte
29,185 leituras
29,185 leituras

Como construir um cluster Raspberry Pi de 32 núcleos a partir do zero

por Alejandro Duarte9m2022/07/18
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

Um Raspberry Pi é uma placa de minicomputador à qual você pode conectar um monitor, mouse e teclado e instalar um sistema operacional baseado em Linux com uma GUI. Você pode usá-lo no modo “headless” sem GUI e executar, por exemplo, um servidor de banco de dados. Um cluster como esse é uma ótima maneira de experimentar sistemas distribuídos. Neste artigo, mostrarei como construir um cluster Raspberry Pi com: 8 nós com 32 núcleos, 64 GB de RAM e 2 TB de armazenamento.

Company Mentioned

Mention Thumbnail
featured image - Como construir um cluster Raspberry Pi de 32 núcleos a partir do zero
Alejandro Duarte HackerNoon profile picture

Um Raspberry Pi é uma placa de minicomputador à qual você pode conectar um monitor, mouse e teclado e instalar um sistema operacional baseado em Linux com uma GUI. Ou você pode usá-lo no modo “headless” sem GUI e executar, por exemplo, um servidor de banco de dados. Existem muitos usos que você pode dar a um Raspberry Pi - desde a construção de um servidor Minecraft até espelhos inteligentes, as possibilidades são infinitas.


Placa de minicomputador


Desde que comecei a descobrir o MariaDB e aprendi sobre clusters de banco de dados, SQL distribuído e Xpand , a ideia de construir um cluster Raspberry Pi estava na minha cabeça. Um cluster como esse é uma ótima maneira de experimentar sistemas distribuídos.


Neste artigo, mostrarei como criar um cluster Raspberry Pi com:


  • 8 nós
  • 32 núcleos
  • 64GB de RAM
  • 2 TB de armazenamento

O que você precisa

Se você deseja construir seu próprio cluster, não precisa comprar 8 dispositivos Raspberry Pi. Mesmo um dispositivo é suficiente para aprender coisas. As instruções neste artigo são úteis mesmo se você planeja configurar apenas um Raspberry Pi. Meu conselho, no entanto, é ter pelo menos três dispositivos para construir seu cluster se você realmente deseja aumentar suas habilidades em administração Linux , Ansible , Docker , Kubernetes , clusters de banco de dados… o que você quiser!


8 x Raspberry Pi 4 Modelo B (8 GB RAM)


Com isso em mente, substitua 8 por qualquer que seja o seu número. Faça o mesmo com as especificações dos dispositivos Raspberry Pi se você tiver modelos diferentes com menos ou mais RAM ou armazenamento. Aqui está o que eu usei:



Adapte as quantidades à sua configuração. Você pode obter uma ou mais fontes de alimentação Raspberry Pi se tiver poucos dispositivos (digamos, 1 ou 2) ou um carregador multi-USB. Se você for com um carregador multi-USB, certifique-se de que cada porta pode fornecer pelo menos 2,4 am (5 V). Escolha cartões microSD que atendam às suas metas e orçamento também. Eu recomendo usar cartões SD de pelo menos 32 GB.


No lado dos cabos e do gabinete, escolha qualquer coisa que acomode sua configuração. Você não precisa necessariamente de ventiladores de resfriamento, mas eu os recomendo se planeja deixar seus dispositivos ligados por períodos prolongados.


Também recomendo obter todos os ingredientes antes de começar a “cozinhar”, especialmente se você quiser usar vários dispositivos Raspberry Pi.

Instalando o Raspberry Pi OS (sem cabeça)

O sistema operacional (SO) que usaremos é o Raspberry Pi OS , um sistema operacional baseado em Debian otimizado para placas Raspberry Pi. O Raspberry Pi OS é instalado nos cartões microSD usando seu computador. Mais tarde, você conecta esses cartões microSD aos seus dispositivos Raspberry Pi e os inicializa.


Obtenha todos os cartões microSD e caixas Raspberry Pi em sua mesa. Você precisará de um adaptador de cartão SD (eles geralmente vêm com cartões microSD) ou um leitor USB de cartão SD se o seu computador de trabalho não tiver um slot para cartões SD. Traga um Sharpie também.


Baixe o aplicativo Raspberry Pi Imager e instale-o em seu computador. Pegue um cartão microSD e conecte-o ao seu computador. Abra o aplicativo Raspberry Pi Imager e clique em ESCOLHER SO . Na lista, clique em Raspberry Pi OS (outros) e selecione Raspberry Pi OS Lite (64 bits) se seus dispositivos Raspberry Pi forem de 64 bits ou Raspberry Pi OS Lite (32 bits) , caso contrário:


Raspberry Pi Imager


Clique em ESCOLHER ARMAZENAMENTO e selecione o cartão microSD. Verifique novamente se você selecionou a unidade correta e clique no ícone de “engrenagem” (opções avançadas). Para o nome do host, use rpi01 ou algo semelhante. Você estará nomeando os dispositivos como rpi01 , rp02 , rp03 , etc.


Marque as opções Ativar SSH e Usar autenticação de senha . Defina um nome de usuário (deixarei o pi padrão) e defina uma senha segura.


Marque a opção Configurar LAN sem fio e digite o nome e a senha da sua conexão WiFi. Defina suas configurações de localidade também.


Como temos que fazer isso uma vez com cada cartão microSD, certifique-se de definir o campo Opções de personalização de imagem para: sempre usar . Assim as configurações serão salvas, e o processo será mais fácil para os próximos cartões:


Opções avançadas do Raspberry Pi Imager


Agora, você pode clicar em SALVAR e depois ESCREVER para iniciar o processo. Depois de concluído, ejete o cartão e conecte-o a um dos dispositivos Raspberry Pi, coloque-o de volta em sua caixa e marque a caixa com o número 01 . Repita este processo para todos os dispositivos.

Montando o Cluster

Dependendo do tipo de caso de cluster que você possui, o processo de montagem pode variar. Siga as instruções que acompanham o seu estojo ou procure fotos online para ter uma ideia clara de como os dispositivos devem ser colocados nas camadas.


Montando o cluster


Eu recomendo olhar para frente para decidir quais peças montar primeiro. Por exemplo, com o gabinete que escolhi, tive que instalar os ventiladores de resfriamento antes de montar os dispositivos Raspberry Pi nas camadas.


Depois de montar um Raspberry Pi, use um Sharpie para escrever seu número na camada. Isso o ajudará no futuro se você precisar retirar um cartão microSD para reconfiguração ou qualquer outra tarefa administrativa que envolva tocar no hardware.


Todos os dispositivos montados


Depois de montar todos os dispositivos, conecte os cabos USB aos dispositivos Raspberry Pi e ao carregador multi-USB. Você pode opcionalmente usar Power over Ethernet e um switch de rede em vez do carregador USB, se preferir, mas deixarei isso para você explorar; definitivamente vale a pena conferir.


Você pode ter o carregador (ou comutador de rede, se quiser) ao lado do rack Raspberry Pi ou conectado a ele. Usei elásticos para manter o carregador preso na lateral do estojo. Funcionou bem.


Com os cabos USB conectados, você está pronto para iniciar todos os minicomputadores! Conecte o carregador e ligue-o. Dependendo dos modelos de Raspberry Pi que você usa, eles podem levar algum tempo para inicializar, então seja paciente. Enquanto isso, aproveite os LEDs piscando e os ventiladores ligando.


LEDs piscando e ventiladores ligando

Conexão via SSH

Se tudo correr bem, você poderá acessar os dispositivos Raspberry Pi por meio do SSH. Experimente executando o seguinte no seu computador:


 ssh [email protected]


Apresente sua senha e responda sim para adicionar o dispositivo à lista de hosts conhecidos. Parabéns! Seu cluster está ativo agora.


Cluster ao vivo

Você pode querer executar comandos para verificar as informações de hardware. Por exemplo:


  • lscpu : Informações sobre a arquitetura da CPU
  • df -H : Uso do espaço em disco do sistema de arquivos
  • sudo fdisk -l : informações de partição
  • free -m : Quantidade de RAM usada, livre e total
  • cat /proc/version : informações do kernel do Linux

Configuração manual com raspi-config

Se você tiver um Raspberry Pi, poderá se conectar a ele por meio de SSH conforme descrito acima e usar o programa utilitário raspi-config para definir várias configurações. Você pode modificar a conexão WiFi ( S1 ), alterar o nome do host ( S4 ) e a senha do usuário ( S3 ) e expandir o sistema de arquivos ( A1 ), entre muitas outras coisas.


Configuração manual com raspi-config

Configuração automatizada com Ansible

Se você tiver mais de um Raspberry Pi em seu cluster, convém automatizar o processo de configuração usando uma ferramenta como Ansible . Com o Ansible, você pode executar um comando em várias máquinas sem precisar realizar tarefas repetitivas. Por exemplo, digamos que queremos expandir o sistema de arquivos em cada Raspberry Pi. Isso pode ser feito a partir da linha de comando da seguinte maneira:


 sudo raspi-config --expand-rootfs


Sem a automação, você teria que fazer SSH para rpi01.local , executar o comando acima e encerrar a sessão SSH. Você teria que repetir todas essas etapas para rpi02.local , pr03.local , rp04.local e assim por diante. Em vez disso, você pode simplesmente dizer ao Ansible para executar o comando para você em todas as máquinas. Vamos ver como fazer isso.


Você precisa instalar o Ansible em um nó de controle conectado à sua rede local. Pode ser um dos dispositivos Raspberry Pi, seu laptop de trabalho ou qualquer outra máquina, desde que execute um sistema operacional baseado em Unix, como Linux ou macOS.


Acontece que tenho um laptop antigo que reaproveitei como um banco de dados dedicado conectado à minha rede, então usei-o como nó de controle (mostrei como instalar um banco de dados com replicação nos dispositivos Raspberry Pi em um artigo futuro).


Não vou passar pelas instruções de instalação do Ansible, pois o processo é diferente em diferentes sistemas operacionais. Verifique a documentação oficial e instale-a em seu laptop ou em qualquer dispositivo que você deseja atribuir como nó de controle.


Antes de começar, recomendo gerar um arquivo de configuração de exemplo que você pode ajustar posteriormente como desejar:


 sudo su ansible-config init --disabled -t all > /etc/ansible/ansible.cfg exit


Nesse arquivo, desative a verificação da chave do host para simplificar o processo. Não faça isso em ambientes de produção! Altere a seguinte linha:


 ;host_key_checking=True


para isso:


 host_key_checking=False


Em seguida, você precisa definir um inventário. Esta é uma lista de máquinas que você deseja controlar com o Ansible. O inventário é definido no arquivo /etc/ansible/hosts . Por exemplo, você pode adicionar as seguintes máquinas ao inventário usando seus endereços IP ou nomes de host:


 [mymachines] foo.example.com bar.example.com 192.0.2.50 192.0.2.51


Se as máquinas tiverem algum tipo de padrão em seus endereços IP ou nomes de host, você pode usar intervalos como alternativa. Isso é o que você pode fazer com seus dispositivos Raspberry Pi. Edite o arquivo /etc/ansible/hosts adicionando o seguinte ao final:


 [rpis] rpi[01-08].local


Altere o padrão para corresponder aos seus nomes de host e números. Isso é equivalente a:


 [rpis] rpi01.local rpi02.local rpi03.local rpi04.local rpi05.local rpi06.local rpi07.local rpi08.local


Neste inventário, rpis é um nome arbitrário que você pode usar para se referir a todos os dispositivos Raspberry Pi ao executar comandos neles usando o Ansible.


Você precisa configurar o nome de usuário SSH que o Ansible usará ao se conectar às máquinas. Adicione o seguinte ao arquivo /etc/ansible/hosts :


 [rpis:vars] ansible_user=pi


Hora de controlar as máquinas. Um bom começo é pingá -los:


 ansible rpis -m ping --ask-pass


Digite a senha SSH. Você deve ver na saída como o “ping” é respondido por um “pong” para cada máquina (estou mostrando apenas uma aqui):


 rpi01.local | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python": "/usr/bin/python3"  },  "changed": false,  "ping": "pong" }


Vamos voltar para a expansão do sistema de arquivos (embora eu ache que hoje em dia isso não seja mais necessário, deixe-me saber nos comentários se você puder confirmar isso). Para executar esta ação em todas as máquinas, execute:


 ansible rpis -m shell -a "raspi-config --expand-rootfs" --become --ask-pass


E simples assim, todos os seus dispositivos Raspberry Pi possuem um sistema de arquivos expandido. Este é um bom momento para atualizar o sistema em todas as máquinas:


 ansible rpis -m shell -a "apt update -y" --become --ask-pass ansible rpis -m shell -a "apt upgrade -y" --become --ask-pass


Você pode reiniciar todos os dispositivos da seguinte maneira:


 ansible rpis -m shell -a "reboot" --become --ask-pass


E quando terminar e quiser desligar todas as máquinas com segurança, basta executar:


 ansible rpis -m shell -a "poweroff" --become --ask-pass

Qual é o próximo?

Este é apenas o começo. Agora você tem um cluster de pequenos computadores prontos para serem controlados pelo Ansible. Você pode tentar configurar qualquer tipo de software de servidor, incluindo servidores web ou bancos de dados ( veja este exemplo ). Também há muito mais sobre o Ansible.


Eu apenas arranhei a superfície aqui usando comandos ad-hoc , mas você pode, por exemplo, criar playbooks que contenham o estado em que deseja que seu cluster esteja. Explore a documentação e divirta-se!


Também publicado aqui