I will be posting a few videos discussing cluster computing with the Raspberry Pi in the Raspberry Pi in the next few weeks, and I’m going to post the video + transcript to my blog so you can follow along even if you don’t enjoy sitting through a video đ
This is a Raspberry Pi Compute Module.
>E isto Ă© uma pilha de 7 Raspberry Pi Compute Modules.
Ă a mesma coisa que um Raspberry Pi modelo B, mas ele deixa cair todas as portas IO para fazer um fator de forma mais flexĂvel, que a Rasbperry Pi Foundation diz ser “adequado para aplicaçÔes industriais”. Mas no meu caso, estou interessado em usĂĄ-lo para construir um cluster de Raspberry Pis.
I’m going to explore the concept of cluster computing using Raspberry Pis, and I’m excited to be in posession of a game-changing Raspberry-Pi based cluster board, the Turing Pi.
I’ll get to the Turing Pi em breve, mas neste primeiro episĂłdio, eu queria cobrir porque eu amo usar Raspberry Pis para clusters.
Mas primeiro, o que Ă© um cluster?
Cluster Computing
Muitas pessoas tentam resolver problemas complexos com computadores. Por vezes fazem coisas como servir uma pĂĄgina web a uma enorme quantidade de visitantes. Isto requer muita largura de banda, e muitos computadores ‘backend’ para lidar com cada um dos milhĂ”es de pedidos. Algumas pessoas, como os meteorologistas, precisam encontrar os resultados de bilhĂ”es de pequenos cĂĄlculos.
Hå duas maneiras de acelerar este tipo de operaçÔes:
- Por meio de escalonamento vertical, onde vocĂȘ tem um Ășnico servidor, e vocĂȘ coloca uma CPU mais rĂĄpida, mais memĂłria RAM, e conexĂ”es mais rĂĄpidas.
- Por meio de escalonamento horizontal, onde vocĂȘ divide as tarefas e usa mĂșltiplos computadores.
Atualmente ligado, sistemas como supercomputadores Cray levaram o escalonamento vertical ao extremo. Um computador enorme que custou milhÔes de dólares foi o computador mais råpido por um tempo. Mas essa abordagem tem alguns limites, e ter tudo investido em uma måquina significa tempo parado quando ela precisa de manutenção, e atualizaçÔes limitadas (muitas vezes dolorosamente caras).
Na maioria dos casos, Ă© mais acessĂvel – e Ă s vezes, a Ășnica maneira possĂvel – de escalar horizontalmente, usando muitos computadores para lidar com grandes cĂĄlculos ou muito trĂĄfego web.
O clustering tornou-se mais fåcil com o advento do Beowulf- clusters estilo nos anos 90 e software mais recente como o Kubernetes, que distribui sem problemas aplicaçÔes em muitos computadores, em vez de colocar aplicaçÔes manualmente em computadores diferentes.
Com este software, hĂĄ dois grandes problemas com o escalonamento horizontal-especialmente se vocĂȘ estiver em um orçamento:
- Cada computador custa um pouco de dinheiro, e requer energia individual e rede. Para alguns computadores isso nĂŁo Ă© um grande problema, mas quando vocĂȘ começa a ter cinco ou mais computadores, Ă© difĂcil manter as coisas arrumadas e frias.
- Gerenciar os computadores, ou ‘nĂłs’ em linguagem de cluster, Ă© fĂĄcil quando hĂĄ um ou dois. Mas escalar atĂ© cinco ou dez, mesmo fazendo coisas simples como reiniciar servidores ou iniciar um novo trabalho requer software para coordenar tudo.
The Raspberry Pi Dramble
Em 2015, eu decidi configurar o meu primeiro ‘bramble’. Um bramble Ă© um cluster de servidores Raspberry Pi. “Por que se chama ‘bramble’?” vocĂȘ pode perguntar? Bem, porque um cluster natural de framboesas que vocĂȘ poderia comer Ă© chamado de ‘bramble’.
EntĂŁo eu comecei a construir um bramble usando um software chamado Ansible to install a common software stack across the servers to run Drupal. Eu configurei Linux, Apache, MySQL e PHP, que Ă© comumente conhecido como ‘LAMP’ stack.
Desde que meu bramble rodou Drupal, eu inventei o portmanteau ‘dramble’, e assim nasceu o Raspberry Pi Dramble.
A primeira versĂŁo do cluster tinha seis nĂłs, e eu tinha um monte de cabos micro USB conectados a um adaptador de energia USB, mais um monte de cabos Ethernet conectados a um switch ethernet de 8 portas.
Quando o Raspberry Pi modelo 3 saiu, eu o cortei para 5 nĂłs.
EntĂŁo, quando o Raspberry Pi Zero foi introduzido, que Ă© do tamanho de um bastĂŁo de chiclete, eu comprei cinco deles e fiz um pequeno cluster usando adaptadores WiFi USB, mas percebi rapidamente que o antigo processador no Zero estava extremamente sub-potente, e desisti desse cluster.
E hoje o Dramble, que é composto por quatro placas Raspberry Pi modelo 4, utiliza a placa oficial Power-over-Ethernet (PoE), que me permitiu largar o emaranhado de cabos de alimentação USB, mas requer um switch PoE mais caro.
O Pi Dramble não é tudo sério, no entanto. Eu me diverti com ele, inclusive fazendo uma homenagem a um filme antigo que gostei:
Por toda essa experiĂȘncia, eu documentei todos os aspectos da compilação, incluindo todos os Ansible playbooks, como um projeto de cĂłdigo aberto que estĂĄ ligado do pidramble.com, e muitos outros seguiram esses planos e construĂram o Pi Dramble por conta prĂłpria!
Por que Raspberry Pi?
Isto Ă© tudo para dizer, eu gastei muito tempo gerenciando um cluster de Raspberry Pis, e a primeira pergunta que normalmente me fazem Ă© “por que vocĂȘ escolheu Raspberry Pis para seu cluster?”
Ă uma pergunta muito boa.
Um Raspberry Pi individual nĂŁo Ă© tĂŁo rĂĄpido quanto a maioria dos computadores modernos. E tem uma RAM limitada (mesmo o Ășltimo modelo Pi 4 tem, no mĂĄximo, 4 GB de RAM). E nĂŁo Ă© Ăłtimo para acesso rĂĄpido ou confiĂĄvel ao disco, seja.
Ă um pouco mais econĂŽmico e normalmente mais eficiente para construir ou comprar uma pequena mĂĄquina NUC (“Next Unit of Computing”) que tem mais desempenho de CPU bruta, mais RAM, um SSD rĂĄpido e mais capacidades de expansĂŁo.
Mas estĂĄ construindo algumas VMs para simular um cluster em uma diversĂŁo NUC?
Eu diria, “NĂŁo”. Bem, nĂŁo tanto quanto construir um cluster de Raspberry Pis!
E gerenciar servidores ‘bare metal’ ao invĂ©s de mĂĄquinas virtuais tambĂ©m requer mais disciplina para provisionamento, rede e orquestração. Essas trĂȘs habilidades sĂŁo muito Ășteis em muitos trabalhos de TI modernos!
Ainda, enquanto vocĂȘ pode querer otimizar para desempenho puro, hĂĄ momentos, como na construção de clusters Kubernetes, onde vocĂȘ quer otimizar para a contagem do nĂșcleo da CPU. Se vocĂȘ quisesse construir um Ășnico computador com 32 nĂșcleos de CPU, vocĂȘ pode considerar o AMD ThreadRipper 3970x, que tem 32 nĂșcleos. O problema Ă© que o processador custa quase $2.000, e isso Ă© apenas o processador – o resto dos componentes do computador colocaria vocĂȘ alĂ©m dos $3.000 totais para esta plataforma.
Para o Raspberry Pi, cada placa de computador tem uma CPU de 4 nĂșcleos, e juntando 7 redes Pis vocĂȘ terĂĄ 28 nĂșcleos. Quase o mesmo nĂșmero de nĂșcleos, mas custa menos de $300 no total. Mesmo com o custo adicional de um Turing Pi e uma fonte de alimentação, esse Ă© o mesmo nĂșmero de nĂșcleos de CPU por 1/4 do custo!
Sim, eu sei 1 nĂșcleo ThreadRipper â 1 nĂșcleo CM Pi; mas em muitas aplicaçÔes K8s, um nĂșcleo Ă© um nĂșcleo, e quanto mais, melhor. Nem todas as operaçÔes sĂŁo ligadas Ă CPU e se beneficiariam de ter 4-8x mais rĂĄpido de produção bruta, ou as muitas outras pequenas gentilezas que o ThreadRipper oferece (como mais cache).
Finalmente, uma das liçÔes mais importantes que aprendi trabalhando com Arduinos e Raspberry Pis Ă© esta: trabalhar com restriçÔes de recursos como RAM limitada ou IO lenta destaca ineficiĂȘncias no seu cĂłdigo, de uma forma que vocĂȘ nunca notaria se vocĂȘ sempre constrĂłi e trabalha no Ășltimo Core i9 ou ThreadRipper CPU com gobs de RAM e 100s de milhares de IOPS!
Se vocĂȘ nĂŁo consegue obter algo para rodar bem em um Raspberry Pi, considere o seguinte: muitos smartphones e computadores de baixo custo tĂȘm restriçÔes similares, e as pessoas que usam esses dispositivos teriam o mesmo tipo de experiĂȘncia.
Adicionalmente, mesmo em casos de computação em nuvem rĂĄpida, vocĂȘ vai encontrar gargalos de rede e IO de tempos em tempos, e se sua aplicação falhar nessas situaçÔes, vocĂȘ pode estar em um mundo de dor. FazĂȘ-los rodar em um Raspberry Pi pode ajudĂĄ-lo a identificar esses problemas rapidamente.
Por que Turing Pi?
EntĂŁo, voltando ao Turing Pi: o que torna isso melhor do que um cluster de Raspberry Pis padrĂŁo, como o Pi Dramble?
Se inscreva no meu canal no YouTube – vou explorar o que faz o Turing Pi funcionar e como configurar um novo cluster no meu prĂłximo vĂdeo! Se vocĂȘ gostou deste conteĂșdo e quer ver mais, considere me apoiar no GitHub ou Patreon.