Clúster Mini ITX Turing Pi 2 con 32 GB de RAM

Clúster Mini ITX Turing Pi 2 con 32 GB de RAM

¡Saludos a la comunidad Habr! Hace poco escribí sobre nuestra primera versión de placa de clúster [V1]. Y hoy quiero contarles cómo trabajamos en la versión Turing V2 con 32GB memoria de acceso aleatorio.

Nos gustan los mini servidores que se pueden usar tanto para el desarrollo local como para el alojamiento local. A diferencia de las computadoras de escritorio o portátiles, nuestros servidores están diseñados para funcionar 24/7, se pueden federar rápidamente, por ejemplo, había 4 procesadores en un clúster, y después de 5 minutos había 16 procesadores (sin equipo de red adicional) y todo esto. en un factor de forma compacto silencioso y energéticamente eficiente.

La arquitectura de nuestros servidores se basa en el principio de construcción del clúster, es decir, hacemos tableros de clúster que, utilizando la red ethernet en el tablero, conectan varios módulos informáticos (procesadores). Para simplificar, todavía no fabricamos nuestros propios módulos informáticos, pero usamos módulos informáticos Raspberry Pi y realmente esperábamos el nuevo módulo CM4. Pero todo salió en contra de los planes con su nuevo factor de forma y creo que muchos están decepcionados.

Bajo el corte, cómo pasamos de V1 a V2 y cómo teníamos que salir con el nuevo factor de forma Raspberry Pi CM4.

Entonces, después de crear un clúster para 7 nodos, las preguntas son: ¿qué sigue? ¿Cómo aumentar el valor de un producto? ¿8, 10 o 16 nodos? ¿Qué fabricantes de módulos? Pensando en el producto como un todo, nos dimos cuenta de que lo principal aquí no es la cantidad de nodos o quién es el fabricante, sino la esencia misma de los clústeres como un bloque de construcción. Tenemos que buscar el bloque de construcción mínimo que

primero, será un clúster y al mismo tiempo podrá conectar discos y tarjetas de expansión. El bloque del clúster debe ser un nodo base autosuficiente y con una amplia gama de opciones de expansión.

segundo, para que los bloques de clúster mínimos se puedan conectar entre sí construyendo clústeres de mayor tamaño y para que sea eficiente en términos de presupuesto y velocidad de escalado. La velocidad de escalado debe ser más rápida que conectar computadoras ordinarias a una red y mucho más económica que el hardware del servidor.

tercera, las unidades de clúster mínimas deben ser lo suficientemente compactas, móviles, energéticamente eficientes, rentables y no exigentes en cuanto a las condiciones de funcionamiento. Esta es una de las diferencias clave de los racks de servidores y todo lo relacionado con ellos.

Comenzamos determinando el número de nodos.

Número de nodos

Con juicios lógicos simples, nos dimos cuenta de que 4 nodos es la mejor opción para el bloque de clúster mínimo. 1 nodo no es un clúster, 2 nodos no son suficientes (1 maestro 1 trabajador, no hay posibilidad de escalar dentro de un bloque, especialmente para opciones heterogéneas), 3 nodos se ven bien, pero no un múltiplo de potencias de 2 y escalar dentro un bloque es limitado, 6 nodos tienen un precio casi como 7 nodos (según nuestra experiencia, esto ya es un gran precio de costo), 8 es mucho, no cabe en el factor de forma mini ITX y es una solución PoC aún más costosa.

Cuatro nodos por bloque se consideran la media dorada:

  • menos materiales por tablero de clúster, por lo tanto, más barato de fabricar
  • múltiplo de 4, el total de 4 bloques da 16 procesadores físicos
  • circuito estable 1 maestro y 3 trabajadores
  • variaciones más heterogéneas, módulos de cómputo general + cómputo acelerado
  • factor de forma mini ITX con unidades SSD y tarjetas de expansión

Módulos de cómputo

La segunda versión se basa en CM4, pensamos que se lanzará en factor de forma SODIMM. Pero…
Tomamos la decisión de hacer una placa secundaria SODIMM y ensamblar CM4 directamente en módulos para que los usuarios no tengan que pensar en CM4.

Clúster Mini ITX Turing Pi 2 con 32 GB de RAM
Módulo de cómputo Turing Pi compatible con Raspberry Pi CM4

En general, en la búsqueda de módulos, se abrió todo un mercado de módulos de cómputo desde pequeños módulos con 128 MB de RAM hasta 8 GB de RAM. Los módulos con 16 GB de RAM y más están por delante. Para el alojamiento de aplicaciones de borde basado en tecnologías nativas de la nube, 1 GB de RAM ya no es suficiente, y la reciente aparición de módulos para 2, 4 e incluso 8 GB de RAM ofrece un buen margen de crecimiento. Incluso consideraron opciones con módulos FPGA para aplicaciones de aprendizaje automático, pero su soporte se ha retrasado porque el ecosistema de software no está desarrollado. Mientras estudiábamos el mercado de módulos, se nos ocurrió la idea de crear una interfaz universal para módulos, y en V2 comenzamos a unificar la interfaz de los módulos informáticos. Esto permitirá a los propietarios de la versión V2 conectar módulos de otros fabricantes y mezclarlos para tareas específicas.

V2 es compatible con toda la línea Raspberry Pi 4 Compute Module (CM4), incluidas las versiones Lite y los módulos de RAM de 8 GB

Clúster Mini ITX Turing Pi 2 con 32 GB de RAM

Periféricos

Después de determinar el proveedor de los módulos y la cantidad de nodos, nos acercamos al bus PCI en el que se encuentran los periféricos. El bus PCI es el estándar para periféricos y se encuentra en casi todos los módulos informáticos. Tenemos varios nodos e, idealmente, cada nodo debería poder compartir dispositivos PCI en modo de solicitud concurrente. Por ejemplo, si es un disco conectado al bus, entonces está disponible para todos los nodos. Comenzamos a buscar conmutadores PCI compatibles con varios hosts y descubrimos que ninguno de ellos se ajustaba a nuestros requisitos. Todas estas soluciones se limitaron en su mayoría a 1 host o múltiples hosts, pero sin el modo de solicitudes simultáneas a los puntos finales. El segundo problema es el alto costo de $50 o más por chip. En V2, decidimos posponer los experimentos con conmutadores PCI (volveremos a ellos más adelante a medida que desarrollamos) y seguimos el camino de asignar un rol para cada nodo: los primeros dos nodos expusieron el puerto mini PCI express por nodo, el tercer nodo Controlador SATA de 2 Gbps de 6 puertos expuestos. Para acceder a discos desde otros nodos, puede usar el sistema de archivos de red dentro del clúster. ¿Por qué no?

Vistazo

Decidimos compartir algunos bocetos de cómo el bloque de clúster mínimo ha evolucionado con el tiempo a través de la discusión y la reflexión.

Clúster Mini ITX Turing Pi 2 con 32 GB de RAMClúster Mini ITX Turing Pi 2 con 32 GB de RAMClúster Mini ITX Turing Pi 2 con 32 GB de RAM

Como resultado, llegamos a una unidad de clúster con 4 nodos de 260 pines, 2 puertos mini PCIe (Gen 2), 2 puertos SATA (Gen 3). La placa tiene un conmutador administrado de capa 2 compatible con VLAN. Se eliminó un puerto mini PCIe del primer nodo, en el que puede instalar una tarjeta de red y obtener otro puerto Ethernet o módem 5G y hacer un enrutador para la red en el clúster y puertos Ethernet desde el primer nodo.

Clúster Mini ITX Turing Pi 2 con 32 GB de RAM

El bus del clúster tiene más funciones, incluida la capacidad de flashear módulos directamente a través de todas las ranuras y, por supuesto, conectores FAN en cada nodo con control de velocidad.

solicitud

Infraestructura perimetral para aplicaciones y servicios autohospedados

Diseñamos V2 para que sea el bloque de construcción mínimo para una infraestructura de borde de grado comercial/de consumo. Con V2, es económico comenzar la prueba de concepto y escalar a medida que crece, portando gradualmente aplicaciones que son más rentables y prácticas para hospedar en el perímetro. Los bloques de clúster se pueden conectar entre sí para construir clústeres más grandes. Esto se puede hacer gradualmente sin mucho riesgo para establecer
procesos. Ya hoy en día hay una gran cantidad de aplicaciones para negocios, que se puede alojar localmente.

Estación de trabajo ARM

Con hasta 32 GB de RAM por clúster, el primer nodo se puede usar para la versión de escritorio del sistema operativo (por ejemplo, Ubuntu Desktop 20.04 LTS) y los 3 nodos restantes para tareas de compilación, prueba y depuración, desarrollando soluciones nativas en la nube para ARM racimos Como nodo para CI/CD en infraestructura ARM edge en el prod.

El clúster Turing V2 con módulos CM4 tiene una arquitectura casi idéntica (diferencia en versiones menores de ARMv8) al clúster basado en instancias de AWS Graviton. El procesador del módulo CM4 utiliza la arquitectura ARMv8 para que pueda crear imágenes y aplicaciones para las instancias AWS Graviton 1 y 2, que se sabe que son mucho más económicas que las instancias x86.

Fuente: habr.com