Mini ITX Cluster Turing Pi 2 con 32 GB de RAM

Mini ITX Cluster Turing Pi 2 con 32 GB de RAM

Un saúdo á comunidade Habr! Recentemente escribín sobre a nosa primeira versión do clúster [V1]. E hoxe quero contarvos como traballamos na versión Turing V2 con 32 GB memoria de acceso aleatorio.

Gústannos os mini servidores que se poden usar tanto para o desenvolvemento local como para o hospedaxe local. A diferenza dos ordenadores de sobremesa ou portátiles, os nosos servidores están deseñados para funcionar 24/7, pódense federar rapidamente, por exemplo, había 4 procesadores nun clúster, e despois de 5 minutos había 16 procesadores (sen equipos de rede adicionais) e todo isto. nun factor de forma compacto silencioso e eficiente enerxéticamente.

A arquitectura dos nosos servidores baséase no principio de construción do cluster, é dicir. facemos placas cluster que, utilizando a rede ethernet da placa, conectan varios módulos informáticos (procesadores). Para simplificar, aínda non creamos os nosos propios módulos de computación, pero usamos os módulos de computación Raspberry Pi e realmente esperamos o novo módulo CM4. Pero, todo foi en contra dos plans co seu novo factor de forma e creo que moitos están decepcionados.

Baixo o corte, como pasamos de V1 a V2 e como tivemos que saír co novo factor de forma Raspberry Pi CM4.

Entón, despois de crear un clúster para 7 nodos, as preguntas son: que segue? Como aumentar o valor dun produto? 8, 10 ou 16 nós? Que fabricantes de módulos? Pensando no produto no seu conxunto, decatámonos de que o principal aquí non é o número de nodos ou quen é o fabricante, senón a esencia mesma dos clústeres como bloque de construción. Temos que buscar o bloque mínimo de construción

O primeiro, será un clúster e ao mesmo tempo poderá conectar discos e placas de expansión. O bloque do clúster debe ser un nodo base autosuficiente e cunha ampla gama de opcións de expansión.

O segundo, para que os bloques de clúster mínimos poidan conectarse entre si construíndo clústeres de maior tamaño e para que sexa eficiente en termos de orzamento e velocidade de escalado. A velocidade de escalado debe ser máis rápida que a de conectar ordenadores comúns a unha rede e moito máis barata que o hardware do servidor.

Terceiro, as unidades mínimas do clúster deben ser suficientemente compactas, móbiles, eficientes enerxéticamente, rendibles e non esixentes nas condicións de funcionamento. Esta é unha das principais diferenzas dos racks de servidores e todo o relacionado con eles.

Comezamos determinando o número de nodos.

Número de nodos

Con simples xuízos lóxicos, decatámonos de que 4 nodos é a mellor opción para o bloque mínimo de clúster. 1 nodo non é un clúster, 2 nodos non son suficientes (1 mestre 1 traballador, non hai posibilidade de escalar dentro dun bloque, especialmente para opcións heteroxéneas), 3 nodos parecen correctos, pero non un múltiplo de potencias de 2 e escala dentro un bloque é limitado, 6 nodos teñen un prezo case como os 7 (según a nosa experiencia xa é un gran prezo de custo), 8 é moito, non encaixa no factor de forma mini ITX e unha solución PoC aínda máis cara.

Considérase a media áurea catro nodos por bloque:

  • menos materiais por placa de cluster, polo tanto, máis barato de fabricar
  • múltiplo de 4, un total de 4 bloques dan 16 procesadores físicos
  • circuíto estable 1 mestre e 3 traballadores
  • variacións máis heteroxéneas, módulos de cómputo xeral + cómputo acelerado
  • Factor de forma mini ITX con unidades SSD e tarxetas de expansión

Módulos de computación

A segunda versión está baseada en CM4, pensamos que se lanzará en formato SODIMM. Pero…
Tomamos a decisión de facer unha placa filla SODIMM e montar CM4 directamente en módulos para que os usuarios non teñan que pensar en CM4.

Mini ITX Cluster Turing Pi 2 con 32 GB de RAM
Módulo de cálculo Turing Pi compatible con Raspberry Pi CM4

En xeral, na procura de módulos, abriuse todo un mercado de módulos informáticos dende pequenos módulos con 128 MB de RAM ata 8 GB de RAM. Módulos con 16 GB de RAM e máis están por diante. Para o hospedaxe de aplicacións de borde baseado en tecnoloxías nativas na nube, 1 GB de RAM xa non é suficiente, e a recente aparición de módulos para 2, 4 e ata 8 GB de RAM ofrece un bo espazo para o crecemento. Incluso consideraron opcións con módulos FPGA para aplicacións de aprendizaxe automática, pero o seu soporte atrasouse porque o ecosistema de software non está desenvolvido. Mentres estudabamos o mercado de módulos, ocorreu a idea de crear unha interface universal para módulos, e na V2 comezamos a unificar a interface dos módulos informáticos. Isto permitirá aos propietarios da versión V2 conectar módulos doutros fabricantes e mesturalos para tarefas específicas.

V2 admite toda a liña Raspberry Pi 4 Compute Module (CM4), incluíndo versións Lite e módulos de 8 GB de RAM

Mini ITX Cluster Turing Pi 2 con 32 GB de RAM

Periferia

Despois de determinar o provedor dos módulos e o número de nodos, achegámonos ao bus PCI no que se atopan os periféricos. O bus PCI é o estándar para periféricos e atópase en case todos os módulos informáticos. Temos varios nodos e, idealmente, cada nodo debería poder compartir dispositivos PCI en modo de solicitude simultánea. Por exemplo, se é un disco conectado ao bus, entón está dispoñible para todos os nodos. Comezamos a buscar conmutadores PCI con soporte para varios hosts e descubrimos que ningún deles cumpría os nosos requisitos. Todas estas solucións limitáronse na súa maioría a un host ou varios hosts, pero sen o modo de solicitudes simultáneas aos puntos finais. O segundo problema é o alto custo de 1 dólares ou máis por chip. Na V50, decidimos aprazar os experimentos con conmutadores PCI (volveremos a eles máis tarde a medida que o desenvolvamos) e fomos polo camiño de asignar un papel a cada nodo: os dous primeiros nodos expuxeron o porto mini PCI Express por nodo, o terceiro nodo. Controlador SATA de 2 Gbps de 2 portos expostos. Para acceder a discos desde outros nodos, pode utilizar o sistema de ficheiros de rede dentro do clúster. Por que non?

Sneakpeek

Decidimos compartir algúns esbozos de como evolucionou o bloque mínimo de clúster ao longo do tempo a través da discusión e da reflexión.

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

Como resultado, chegamos a unha unidade de clúster con 4 nodos de 260 pinos, 2 portos mini PCIe (2ª xeración), 2 portos SATA (3ª xeración). A placa ten un interruptor xestionado de capa 2 con soporte para VLAN. Eliminouse un mini porto PCIe do primeiro nodo, no que pode instalar unha tarxeta de rede e obter outro porto Ethernet ou módem 5G e facer un enrutador para a rede no clúster e os portos Ethernet desde o primeiro nodo.

Mini ITX Cluster Turing Pi 2 con 32 GB de RAM

O bus de clúster ten máis funcións, incluíndo a capacidade de flashear módulos directamente a través de todas as ranuras e, por suposto, conectores FAN en cada nodo con control de velocidade.

Aplicación

Infraestrutura Edge para aplicacións e servizos autoaloxados

Deseñamos a V2 para que sexa o elemento básico mínimo para unha infraestrutura de punta de consumo/comercial. Coa versión 2, é barato comezar a proba de concepto e escalar a medida que vai medrando, portando gradualmente aplicacións que sexan máis rendibles e prácticas para aloxar ao límite. Os bloques de clúster pódense conectar xuntos para construír clústeres máis grandes. Isto pódese facer gradualmente sen moito risco de establecer
procesos. Xa hoxe hai un gran número de aplicacións para empresas, que pode ser aloxado localmente.

Estación de traballo ARM

Con ata 32 GB de RAM por clúster, o primeiro nodo pódese usar para a versión de escritorio do SO (por exemplo, Ubuntu Desktop 20.04 LTS) e os 3 nodos restantes para tarefas de compilación, proba e depuración, desenvolvendo solucións nativas na nube para ARM. clusters. Como nodo para CI/CD na infraestrutura de borde ARM no prod.

O clúster Turing V2 con módulos CM4 é case idéntico desde o punto de vista arquitectónico (diferenza nas versións secundarias de ARMv8) ao clúster baseado en instancias de AWS Graviton. O procesador do módulo CM4 usa a arquitectura ARMv8 para que poida crear imaxes e aplicacións para instancias AWS Graviton 1 e 2, que se sabe que son moito máis baratas que as instancias x86.

Fonte: www.habr.com