Mini ITX Cluster Turing Pi 2 com 32 GB de RAM

Mini ITX Cluster Turing Pi 2 com 32 GB de RAM

Saudações à comunidade Habr! Recentemente, escrevi sobre nossa primeira versão da placa de cluster [V1]. E hoje quero contar como trabalhamos na versão Turing V2 com 32 GB RAM

Gostamos de mini servidores que podem ser usados ​​tanto para desenvolvimento local quanto para hospedagem local. Ao contrário dos computadores de mesa ou laptops, nossos servidores são projetados para funcionar 24 horas por dia, 7 dias por semana, podem ser federados rapidamente, por exemplo, havia 4 processadores em um cluster e, após 5 minutos, havia 16 processadores (sem equipamento de rede adicional) e tudo isso em um fator de forma compacto, silencioso e energeticamente eficiente.

A arquitetura de nossos servidores é baseada no princípio de construção de cluster, ou seja, fazemos placas de cluster que, usando a rede ethernet na placa, conectam vários módulos de computação (processadores). Para simplificar, ainda não criamos nossos próprios módulos de computação, mas usamos Raspberry Pi Compute Modules e realmente esperamos pelo novo módulo CM4. Mas, tudo foi contra os planos com seu novo fator de forma e acho que muitos estão desapontados.

Abaixo, como passamos de V1 para V2 e como tivemos que sair com o novo fator de forma Raspberry Pi CM4.

Então, depois de criar um cluster para 7 nós, as perguntas são: o que vem a seguir? Como aumentar o valor de um produto? 8, 10 ou 16 nós? Quais fabricantes de módulos? Pensando no produto como um todo, percebemos que o principal aqui não é o número de nós ou quem é o fabricante, mas a própria essência dos clusters como um bloco de construção. Precisamos procurar o bloco de construção mínimo que

O primeiro, será um cluster e ao mesmo tempo poderá conectar discos e placas de expansão. O bloco de cluster deve ser um nó base autossuficiente e com uma ampla gama de opções de expansão.

O segundo, para que os blocos de cluster mínimos possam ser conectados uns aos outros construindo clusters de tamanho maior e para que seja eficiente em termos de orçamento e velocidade de dimensionamento. A velocidade de dimensionamento deve ser mais rápida do que conectar computadores comuns a uma rede e muito mais barata do que o hardware do servidor.

Terceiro, as unidades mínimas do cluster devem ser suficientemente compactas, móveis, energeticamente eficientes, econômicas e não exigentes em condições operacionais. Esta é uma das principais diferenças dos racks de servidor e tudo relacionado a eles.

Começamos determinando o número de nós.

Número de nós

Com julgamentos lógicos simples, percebemos que 4 nós é a melhor opção para o bloco de cluster mínimo. 1 nó não é um cluster, 2 nós não são suficientes (1 mestre 1 trabalhador, não há possibilidade de escalar dentro de um bloco, especialmente para opções heterogêneas), 3 nós parece ok, mas não é um múltiplo de potências de 2 e escala dentro um bloco é limitado, 6 nós têm um preço quase como 7 nós (pela nossa experiência já é um grande preço de custo), 8 é muito, não cabe no fator de forma mini ITX e uma solução PoC ainda mais cara.

Quatro nós por bloco são considerados a média de ouro:

  • menos materiais por painel de cluster, portanto, mais barato de fabricar
  • múltiplo de 4, total de 4 blocos dá 16 processadores físicos
  • circuito estável 1 mestre e 3 trabalhadores
  • variações mais heterogêneas, módulos de computação geral + computação acelerada
  • fator de forma mini ITX com unidades SSD e placas de expansão

Módulos de computação

A segunda versão é baseada no CM4, pensávamos que seria lançada no fator de forma SODIMM. Mas…
Decidimos fazer uma placa filha SODIMM e montar o CM4 diretamente em módulos para que os usuários não tenham que pensar no CM4.

Mini ITX Cluster Turing Pi 2 com 32 GB de RAM
Módulo de computação Turing Pi compatível com Raspberry Pi CM4

Em geral, em busca de módulos, todo um mercado de módulos de computação foi aberto, desde pequenos módulos com 128 MB de RAM até 8 GB de RAM. Módulos com 16 GB de RAM e mais estão à frente. Para hospedagem de aplicativos de ponta baseada em tecnologias nativas da nuvem, 1 GB de RAM já não é suficiente, e o recente surgimento de módulos para 2, 4 e até 8 GB de RAM oferece um bom espaço para crescimento. Eles até consideraram opções com módulos FPGA para aplicativos de aprendizado de máquina, mas seu suporte foi adiado porque o ecossistema de software não é desenvolvido. Estudando o mercado de módulos, tivemos a ideia de criar uma interface universal para os módulos, e na V2 começamos a unificar a interface dos módulos de computação. Isso permitirá que os proprietários da versão V2 conectem módulos de outros fabricantes e os misturem para tarefas específicas.

V2 suporta toda a linha Raspberry Pi 4 Compute Module (CM4), incluindo versões Lite e módulos de 8 GB de RAM

Mini ITX Cluster Turing Pi 2 com 32 GB de RAM

Periféricos

Depois de determinar o fornecedor dos módulos e o número de nós, abordamos o barramento PCI no qual os periféricos estão localizados. O barramento PCI é o padrão para periféricos e é encontrado em quase todos os módulos de computação. Temos vários nós e, idealmente, cada nó deve ser capaz de compartilhar dispositivos PCI no modo de solicitação simultânea. Por exemplo, se for um disco conectado ao barramento, ele estará disponível para todos os nós. Começamos a procurar switches PCI com suporte a vários hosts e descobrimos que nenhum deles se encaixava em nossos requisitos. Todas essas soluções foram limitadas principalmente a 1 host ou vários hosts, mas sem o modo de solicitações simultâneas para endpoints. O segundo problema é o alto custo de US$ 50 ou mais por chip. Na V2, decidimos adiar os experimentos com comutadores PCI (voltaremos a eles mais tarde à medida que desenvolvemos) e seguimos o caminho de atribuir uma função para cada nó: os dois primeiros nós expuseram porta mini PCI expressa por nó, o terceiro nó controlador SATA de 2 Gbps de 6 portas exposto. Para acessar discos de outros nós, você pode usar o sistema de arquivos de rede dentro do cluster. Por que não?

Espiada

Decidimos compartilhar alguns esboços de como o bloco de agrupamento mínimo evoluiu ao longo do tempo por meio de discussão e reflexão.

Mini ITX Cluster Turing Pi 2 com 32 GB de RAMMini ITX Cluster Turing Pi 2 com 32 GB de RAMMini ITX Cluster Turing Pi 2 com 32 GB de RAM

Como resultado, chegamos a uma unidade de cluster com 4 nós de 260 pinos, 2 portas mini PCIe (Gen 2), 2 portas SATA (Gen 3). A placa possui um switch gerenciado de camada 2 com suporte a VLAN. Uma mini porta PCIe foi removida do primeiro nó, na qual você pode instalar uma placa de rede e obter outra porta Ethernet ou modem 5G e fazer um roteador para a rede no cluster e portas Ethernet do primeiro nó.

Mini ITX Cluster Turing Pi 2 com 32 GB de RAM

O barramento de cluster tem mais recursos, incluindo a capacidade de atualizar módulos diretamente através de todos os slots e, é claro, conectores FAN em cada nó com controle de velocidade.

Aplicação

Infraestrutura de borda para aplicativos e serviços auto-hospedados

Projetamos o V2 ​​para ser o bloco de construção mínimo para uma infraestrutura de ponta de nível comercial/consumidor. Com a V2, é barato começar a prova de conceito e dimensionar à medida que você cresce, transferindo gradualmente aplicativos que são mais econômicos e práticos para hospedar na borda. Os blocos de cluster podem ser conectados para criar clusters maiores. Isso pode ser feito gradualmente sem muito risco para
processos. Já existe hoje um grande número de aplicativos para negócios, que pode ser hospedado localmente.

Estação de trabalho ARM

Com até 32 GB de RAM por cluster, o primeiro nó pode ser usado para a versão desktop do sistema operacional (por exemplo, Ubuntu Desktop 20.04 LTS) e os 3 nós restantes para tarefas de compilação, teste e depuração, desenvolvendo soluções nativas em nuvem para ARM clusters. Como um nó para CI / CD na infraestrutura de borda ARM no prod.

O cluster Turing V2 com módulos CM4 é quase idêntico arquitetonicamente (diferença nas versões secundárias do ARMv8) ao cluster baseado em instâncias do AWS Graviton. O processador do módulo CM4 usa a arquitetura ARMv8 para que você possa criar imagens e aplicativos para as instâncias AWS Graviton 1 e 2, que são conhecidas por serem muito mais baratas que as instâncias x86.

Fonte: habr.com