O Super Computador Raspberry Pi no Java One 2022
por Chris Bensen
Se preferir, você pode ler este post no GitHub aqui .
O Raspberry Pi Super Computer foi originalmente construído para o Oracle Open World em outubro de 2019. Existem 1050 Raspberry Pi 3b+ em quatro racks de servidor configurados em uma grande caixa quadrada que lembra uma caixa da polícia britânica popularizada em uma certa série de TV da BBC. Avanço rápido para hoje, e o supercomputador Raspberry Pi (Pi Cluster) foi enviado para o lixo eletrônico, algumas peças foram retiradas dele e ficaram inativos por dois anos até maio deste ano, quando chegaram à minha garagem para um revisão completa.
Para uma história temporal de como o 1050 Raspberry Pi surgiu, você pode ler A Temporal History of The World's Largest Raspberry Pi Cluster .
Começa com Gerald Venzl na Oracle Suíça trazendo o cluster de 12 nós à minha atenção, então nós discutimos um grande cluster com Stephen Chin. Saiba como o Pi Cluster foi para o lixo eletrônico durante os bloqueios do COVID e os incêndios na Califórnia e como Eric Sedlar o resgatou, armazenando-o no Oracle Labs. Se você achar que é muito longo, assista ao vídeo de construção original do The World's Largest Raspberry Pi Cluster que conhecemos , este Building the world's maior Raspberry Pi cluster de Gerald Venzl, e este vídeo do Big Pi Cluster In My Garage — Parte I .
E, a propósito, se você está lendo isso, há uma grande probabilidade de você ser um grande luminar. O que é um Luminar? É o nosso grupo de desenvolvedores recém-lançado que conecta desenvolvedores como você a conteúdo técnico exclusivo, brindes gratuitos e uma comunidade para ajudá-lo a construir algo tão legal quanto este cluster, torne-se um Luminary hoje .
Ressurreição
Quando o CloudWorld foi anunciado, imediatamente propusemos ressuscitar o maior supercomputador Raspberry Pi do mundo (que conhecemos) . Quem não gosta de uma boa história de ressurreição? As propostas foram mais ou menos assim:
1. Doe-o ao Computer History Museum como uma peça de arte não funcional para o Pi-Day.
2. Os Raspberry Pi são valiosos agora. Sorteie um pedaço do Pi para ganhar um Raspberry Pi 3B+ grátis de um dos maiores clusters de Raspberry Pi do mundo.
3. Temos uma oportunidade de fazer história. Nós o consertamos para o CloudWorld, adicionamos ventiladores para que não superaqueça e o executamos como um dispositivo “no local” e “de ponta” exibindo a tecnologia que está sendo construída nos laboratórios. Incluiremos GraalPython , Java e Oracle Linux 9 em execução em todos os dispositivos do Pi Cluster. Está tudo conectado ao Oracle Cloud Infrastructure (OCI) por meio do Site-to-Site (role até o final para obter instruções sobre isso)VPN para microsserviços locais e via instâncias de computação, banco de dados autônomo, gateway de serviços e balanceador de carga. As visualizações AR seriam ideais e poderíamos executar algo legal nelas - como quando executamos o SETI@home no Raspberry Pi Mini Super Computer, um Cluster 84-Pi. Tive a ideia de configurar um serviço para que qualquer pessoa no mundo pudesse enviar código ao cluster para executar uma carga de trabalho, enquanto exibimos nossos serviços Digital Twin AR/VR e criamos blogs e vídeos para inspirar desenvolvedores e alunos. Podemos mostrar às pessoas por que desenvolvedores e alunos estão se divertindo muito aprendendo e usando o Free Tier da Oracle . Além disso, podemos obter um recorde mundial do Guinness Book.
Escolhemos a opção três e a busca por um novo laboratório começou. Falei com a liderança de várias equipes de produtos mencionadas acima, bem como com líderes da comunidade Raspberry Pi, como Jeff Geerling e Eben Upton, e estabeleci um plano. Não posso falar sobre todo o plano porque acabamos de definir a base para ele, mas há muito mais por vir. Esta é apenas a história de levar o Pi Cluster ao DevNucleus no CloudWorld e uma breve menção do que acontece depois. Acontece que uma adjudicação do Guinness Book é muito cara!
O primeiro passo foi identificar um orçamento e uma estimativa da obra para ver se era viável. Sabíamos que precisávamos:
1. Fãs. Muitos fãs.
2. Para substituir as peças que faltam.
3. Para testar tudo.
4. Para escrever um novo software.
Toda rede Pi é inicializada. Em 2019, eu tinha o Oracle Linux 7 rodando em todo o cluster, mas ainda funcionou? Tínhamos todo o código-fonte, endereços MAC e tudo o que era necessário para fazer tudo de novo?
O segundo passo foi conseguir um local para trabalhar no Pi Cluster. Tente encontrar um local com portas duplas, perto de um elevador de carga, com energia e espaço suficientes para trabalhar nele e uma rede que não esteja totalmente bloqueada - não é fácil! Eu olhei para as instalações da Oracle em todo o mundo. A logística de trabalhar remotamente em algo assim e todo o trabalho físico que teria que ser feito significava que qualquer lugar do mundo funcionaria apenas se certos requisitos fossem atendidos. Eu teria que viajar até lá, montar tudo e ter uma dúzia de pessoas para ajudar. Nós o configuramos para acesso remoto, mas alguém teria que estar disponível pessoalmente quando as coisas não funcionassem direito. Depois de um bom almoço com minha incrível esposa, decidimos que nossa garagem funcionava melhor, e foi aí que #BigPiClusterInMyGarage começou.
Adicionando Ventiladores — Resfriando o Raspberry Pi
Depois de entregue, comecei a trabalhar para garantir que nosso orçamento fosse preciso, corrigindo e testando as coisas enquanto solicitava peças de reposição (principalmente ventiladores). Muitos fãs: 250 novos fãs para ser exato. O cluster acabou com 257 ventiladores e isso sem contar os ventiladores que estão em cada um dos switches, do servidor ou das fontes de alimentação. Isso exigia que eu desmontasse todo o cluster e o remontasse. Nem todos os parafusos foram removidos, mas todos os 21 bancos Pi 2U foram desmontados, cada 5º Pi removido e substituído, o que significava que 250 novos Pi caddies com suportes para ventiladores deveriam ser impressos. Você pode aprender sobre isso aqui . Victor Agreda usou sua Ultimaker S5 recém-comprada para imprimir algumas dezenas da versão para fãs dos caddies. Todos os fãs precisavam de energia e muito obrigado a Eli Schillingpara criar muitos dos chicotes elétricos. Além disso, adicionamos alguns ovos de páscoa. Eu sei que não é muito um ovo de páscoa se eu contar ao mundo sobre isso, mas vou explicar com mais detalhes na seção Warble abaixo (porque é muito legal não dizer nada). Tenho alguns vídeos documentando alguns dos trabalhos que podem ser encontrados em A Temporal History of The World's Largest Raspberry Pi Cluster .
Sistema Operacional — O Sistema Operacional Mais Inteligente do Mercado
Acho que muitos de nós subestimamos o valor de um bom sistema operacional ao construir infraestrutura e hardware, e o Oracle Linux é excelente. Entro em mais detalhes sobre o sistema operacional em A Temporal History of The World's Largest Raspberry Pi Cluster (e tenho algumas outras coisas nas quais estou trabalhando para que você possa configurar a inicialização de rede do Pi em casa).Como tínhamos todo esse trabalho para construir, tivemos que atualizar do Oracle Linux 7 para o Oracle Linux 9. Vou lhe contar um segredo: não foi tão simples assim. No entanto, foi incrível trabalhar com a equipe do Oracle Linux e realmente merece todo o crédito por configurar o sistema operacional para o Pi Cluster. Confira o Oracle Linux 9, vale a pena usar ou atualizar. Houve alguns soluços, como a camada adicional de segurança, que significava que a conta root não tinha mais acesso SSH por padrão.
Vale a pena mencionar aqui como inicializamos o Pi. Cada Pi no cluster é inicializado em rede a partir de uma única montagem NFS somente leitura no servidor, e adicionamos um serviço systemd para executar um script bash sempre que o servidor ou Pi é inicializado. Isso torna a configuração do que executamos quase sem esforço.
Software e serviços em nuvem — GraalVM é executado rapidamente no cliente ou na nuvem
Todo o software é de código aberto e pode ser encontrado aqui em nosso repositório DevRel GitHub. Algumas coisas vêm dos laboratórios e não estão disponíveis nem mesmo como uma visualização técnica (eu tentei, elas simplesmente não estavam prontas) , então elas não estão incluídas. Esteja avisado, a maior parte desse código foi escrita rapidamente. O que você encontra pode não fazer muito sentido, então deixe-me explicar.
Primeiro, há o software no cluster. O servidor executa um contêiner Docker composto por GraalPython sobre GraalVM . Esse Dockerfile está passando por melhorias contínuas, então não recomendo copiá-lo ainda. Forneci alguns relatórios de bugs, mas assim que as variáveis de ambiente Graal e CTRL+C funcionarem (e talvez uma nova imagem para GraalPython seja criada) , você vai querer mergulhar de cabeça. Fazendo. Eu vi um aumento de 8x no desempenho ao executar código Python puro em GraalVM . Isso é bem impressionante!
Cada dispositivo no cluster executa um serviço da web. O servidor transmite uma mensagem UDP com seu endereço IP e porta para qualquer dispositivo ouvir e se comunicar com o servidor para descoberta automática. Isso é novo em relação aos anos anteriores, em que o endereço IP do servidor foi colocado em uma variável de ambiente. O endereço IP não muda para que possamos codificá-lo, mas havia dois problemas: qualquer pessoa trabalhando nisso precisa executar um sistema de teste com sua área de trabalho e uma simulação de um Pi ou alguns Pis em sua mesa, e o as variáveis de ambiente são perdidas quando você sudo. Na verdade, isso resolve muitos problemas! Depois que um Pi é inicializado, ele executa seu servidor web, escuta a mensagem UDP, registra seu endereço IP e endereço MAC com o servidor e escuta o trabalho. Nos intervalos,
A cada cinco segundos, cada Pi envia todos os seus dados ( CPU, memória, temperatura etc.) A documentação pode ser encontrada aqui . Eu coloquei algum código onde, se o Pi falhar em enviar seus dados, ele espera um pouco mais na próxima vez, aumentando para 60 segundos. Acontece que é uma montanha de dados que o Autonomous Database manipula sem esforço. Eu tentei alguns outros bancos de dados que não devem ser nomeados e vamos apenas dizer que eles não conseguiram lidar com isso, às vezes resultando em atrasos superiores a cinco segundos.
Gêmeo Digital com AR/VR — Visualize seus Dados
Criei um modelo 3D bastante detalhado do Pi Cluster que pode ser encontrado aqui e aberto em seu programa 3D favorito. Nossos especialistas em AR/VR e nuvem Wojciech Pluta , Victor Martin , Bogdan Farca e Stuart Coggins começaram a trabalhar criando experiências incríveis de AR e VR. Eles ajustaram bancos de dados, escreveram aplicativos APEX e executaram socket.io para streaming. Eles aproveitaram um cluster Kubernettes chamado OCI OKEpara que as experiências 3D possam ser dimensionadas sem cair, o que significa que qualquer pessoa pode colocar um Digital Twin do Pi Cluster em sua sala de estar. Temos iPads para AR e códigos QR impressos para que o iPad possa rastrear o cluster com precisão milimétrica, permitindo que os participantes visualizem os acontecimentos do cluster de forma interativa. A equipe também construiu uma versão Meta VR, cujos detalhes serão revelados em breve. Não havia energia suficiente para executar todo o cluster na minha garagem, então vamos integrá-lo e testá-lo antes que as portas se abram no CloudWorld. Pode funcionar, pode cair. Aconteça o que acontecer, será uma boa história! Adicionarei um link aqui quando tivermos algo escrito no AR/VR Digital Twin.
Serviços OCI — No centro de cada projeto está a infraestrutura de nuvem
Na minha garagem, o Pi Cluster está configurado como um servidor “no local”. Criei uma sub-rede isolada no meu Ubiquity Dream Machine Pro, configurei uma VPN site a site para OCI usando um Bastion , e usei uma caixa de salto local que possui duas interfaces de rede (uma para a sub-rede Pi Cluster e outra para o Pi Cluster ) . Assim, o Pi Cluster aparece para o mundo exterior como um endereço IP. Apareça, conecte a energia da rede e pronto. Eu gostaria que a configuração fosse tão fácil e eu não tivesse que testar tudo - certificando-se de que os cabos não saíssem da posição - mas vamos apenas dizer que é fácil porque parece mais divertido.
Não teremos controle da rede no CloudWorld, então o Pi Cluster é um “dispositivo de ponta”. Ele usa serviços de nuvem, como Services Gateway , Load Balancer e Domain Management . Sim, temos um domínio. Eu vou chegar a isso na próxima seção.
A rede fica assim:
Se você tiver alguma dúvida sobre isso, acesse o canal Slack público da Oracle para desenvolvedores. Faça qualquer pergunta que quiser. Como configurá-lo, quais serviços usar. Você encontrará suas respostas lá!
IoT — Tarefas leves específicas com microcontroladores pequenos e baratos
Também temos um par de Arduinos rodando no cluster. O primeiro Arduino é um Arduino Mega com um Ethernet HAT. O código original pode ser encontrado aqui . Ele executa um serviço da Web e ativa dois solenóides para acesso remoto aos botões físicos de reinicialização e energia do servidor. Eu mudei um pouco o software em relação ao repositório e ainda não publiquei, então deixei essa versão mais antiga. A versão que não publiquei se registra e espera por um comando de inicialização simples quando um desenvolvedor faz SSH no Bastion.
O segundo Arduino é o mesmo hardware, mas executa um servidor REST ouvindo uma carga útil JSON e está conectado a uma dúzia de NeoPixels na luz no topo da caixa de polícia.
Warble - uma linguagem de programação personalizada projetada para o Pi Cluster
Estamos hospedando o domíniohttps://warble.withoracle.cloudem OCI, apoiado por gerenciamento de domínio , um balanceador de carga e uma instância de computação . A instância de computação está executando o mesmo software que está sendo executado no Pi Cluster: um Docker Container com GraalPython e um serviço da web. Ainda não está pronto para o horário nobre, mas volte aqui ou no Twitter de 18 a 20 de outubro porque será ao vivo durante o CloudWorld e acho que será muito divertido.
Criamos uma linguagem de programação projetada para o Twitter ser executada no Pi Cluster chamada Warble . Warble não é uma linguagem de programação completa e eu peguei muitos atalhos. Ele é feito para usar o mínimo de caracteres possível para que você possa postar um Warble no Twitter e executá-lo no Pi Cluster. Eu tenho um script Python em execução em uma instância de computador usando a API do Twitter para pesquisar a hashtag #pi . Se o próximo caractere for uma chave aberta e o último caractere for uma chave fechada, teremos um Warble e ele será armazenado em um banco de dados. Por exemplo:
> #pi{PRINT(“hello cluster”)}
< hello cluster
Não seria legal ver quem pode calcular Pi com mais dígitos em um dos maiores clusters de Raspberry Pi do mundo?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
O Twitter será muito divertido, apesar de limitar a API e é por isso que temos o domínio hospedado. Vou fornecer um endpoint REST para postar Warbles. Talvez alguém descubra como calcular Pi com Bailey–Borwein–Plouffe_formula usando Warble ou alguma outra forma.
Não vou escrever uma gramática de sintaxe, mas darei alguns exemplos.
Warble suporta variáveis:
> #pi{x=0PRINT(x)}
< 0
> #pi{x=1/16.0²*(4.0/(8*k+1)-2.0/(8*k+4)-1.0/(8*k+5)-1.0/(8*k+6)}
<
> #pi{i=0;WHILE(i<10){PRINT(i);i++}}
< 0
< 1
< 2
< 3
< 4
< 5
< 6
< 7
< 8
< 9
> #pi{FOR(i=0;i<10;i++){PRINT(i)}}
< 0
< 1
< 2
< 3
< 4
< 5
< 6
< 7
< 8
< 9
Além disso, você pode salvar valores e carregá-los novamente. Eles são específicos do usuário:
> #pi{SAVE(“pi”,1)}
<
> #pi{x=LOAD(“pi”);x++;SAVE(“pi”,x);PRINT(x)}
< 2
> #pi{PLAYSOUND(”http://downloads.bbc.co.uk/doctorwho/sounds/tardis.mp3");}
<
> #pi{LIGHTS(0,255,0,0)}
<
> #pi{LIGHTS(23,0,255,0)}
<
> #pi{LIGHTS(0,0,255,0);SLEEP(20);LIGHTS(0,0,255,0)}
<
> #pi{FOR(i=0;i<24;i++){LIGHTS(i,0,255,0)}SLEEP(20);FOR(i=0;i<24;i++){LIGHTS(i,0,0,255)}}
<
No Ubiquity Dream Machine Pro, com a ajuda de Tim Clegg , criei uma nova sub-rede. Aqui está um esboço das etapas que seguimos. Não fornecerei capturas de tela específicas ou um vídeo porque as opções no Ubiquity e no Oracle Cloud serão alteradas. Em vez disso, aqui estão alguns destaques do que você precisa e o que fazer:
Em redes, crie uma nova rede com um nome, escolho “pi”.
ID da VLAN: 3
Tipo de rede: Padrão
Crie um VPN site a site
Nome da rede: pivpn Chave
pré-compartilhada: ***********************
Endereço do servidor: <Endereço IP do roteador> ( o padrão deve ser bom)
Gateway remoto/sub-redes: 10.0.0.0/24
Endereço IP remoto: <Endereço IP da VPN remota>
Avançado:
Perfil IPsec manual:
Distância de rota personalizada: 30
Versão de troca de chave: IKEv1
Criptografia: AES-256
Hash: SHA1
Grupo IKE DH: 5 Grupo
ESP DH: 5
Perfect Forward Secrecy: ativado
Roteamento Dinâmico: ativado
Eu criei três regras de firewall:
1. bloco pi 192.168.3.1 (gateway)
Tipo: LAN Local
Action: Drop
Source, Souce Type: Network
Source, Network: pi
Destination, Source Type: Network
Destination, Network: pi
Destination, Network Type: Gateway IP Address
2. Aceitação padrão para pi
Tipo: LAN Em
ação: Aceitar
fonte, Tipo de fonte: Fonte de rede, Rede: Destino
padrão , Tipo de fonte: Destino de rede, Rede: pi
3. Bloco pi para padrão
Tipo: Saída LAN
Ação:
Fonte de queda, Tipo de fonte:
Destino de rede, Rede: Destino pi
, Tipo de fonte:
Fonte de rede, Rede: Padrão
Avançado: Manual
Verificar estado de correspondência Novo
Verificar estado de correspondência inválido
4. Em OCI, vá para Rede e Site-to-Site VPN
Criar conexão IPSec.
Dê-lhe um nome.
Você vai querer isso para obter seu endereço IP público.
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Você precisará criar dois túneis, então configurei ambos para apontar para a mesma VPN, pois o OCI requer dois e expus apenas um na minha rede. Você adicionará isso à VPN.
5. Configure um Gateway de Roteamento Dinâmico
6. Configure uma VCN, adicione uma Regra de Entrada com o CIDR que é sua sub-rede local, por exemplo, a minha é 192.168.3.0/24.
O futuro
Depois de passar pelos passos do DevNucleus no Oracle CloudWorld, o Pi Cluster está indo para o Oracle Labs, onde… bem, a próxima parte é um pouco secreta por enquanto. Os usos potenciais incluem:
1. execução de testes adicionais para GraalVM e Java
2. Projetos de computação de borda
3. Robôs e processamento paralelo (ou seja, redes neurais)
5. Atividades sugeridas a nós por você, o desenvolvedor
Com o Pi Day 2023 chegando, você definitivamente vai querer ficar atento ao próximo estágio de evolução desta incrível peça de tecnologia. Quem sabe? Alguns dos Pi podem até sair do cluster e cair em suas mãos.
Quero agradecer a todos que colaboraram com o projeto. Leia A história temporal do maior cluster Raspberry Pi do mundo para saber como esse projeto incrível e louco surgiu.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)