Contactos

Creamos un sistema de despliegue de aplicaciones utilizando Docker. Creamos un sistema de despliegue de aplicaciones usando Docker Cluster desde un servidor web raspberry pi


La placa Cluster HAT es una solución al problema de construir computación en clúster. La computación distribuida es compleja y esta diminuta pieza de hardware es una de las soluciones.

Aunque la creación no es tan fácil, es uno de los proyectos de Raspberry Pi más impresionantes.

¿Por qué Clúster HAT?

La placa Cluster HAT (hardware adjunto en la parte superior) se comunica con (controlador) Raspberry Pi A+/B+/2/3/4 y cuatro placas Raspberry Pi Zero. Está configurado para usar el modo Gadget USB. Además, es una herramienta ideal para entrenar, probar o simular pequeños clústeres.

Cluster HAT aprovecha la flexibilidad de Raspberry Pi, lo que permite a los programadores experimentar con la computación en clúster.

Es importante tener en cuenta que el HAT no se envía con la placa Raspberry Pi o Pi Zero. Ambos tableros deberán comprarse por separado. El fabricante Pimoroni proporciona instrucciones de montaje y manejo en la página de su producto. La compañía también afirma que hay 3 formas de configurar la placa HAT.

Especificaciones del HAT del clúster

  • El HAT se puede usar con cualquiera de los módulos Pi Zero 1.2, Pi Zero 1.3 y Pi Zero W.
  • Modo Gadget USB: Ethernet y consola serie.
  • Concentrador USB 2.0 de 4 puertos incorporado.
  • Raspberry Pi Zeros funciona con el controlador Pi GPIO (USB opcional).
  • La potencia de Raspberry Pi Zero se controla a través del controlador Pi GPIO (I2C).
  • Conector para controlador de consola serie (FTDI Basic).
  • El controlador Pi se puede reiniciar sin interrupción de energía para Pi Zeros (recuperación de red en el arranque).

El kit incluye:

  • Kit de montaje HAT (soportes y tornillos)
  • Cable USB corto (el color puede variar)

En custodia

La placa Cluster HAT v2.3 ya está disponible para su compra y, aunque aún no está disponible en

Raspberry Pi 3 puede llamarse una computadora verdaderamente universal. Bitcoin, por supuesto, no se puede minar en él, y no será posible jugar juegos con los gráficos de las últimas generaciones de consolas, pero se las arreglará bien con muchas otras cosas. A continuación, a su vez, se considerarán las principales y más populares aplicaciones de la Raspberry Pi 3.

Funciones multimedia de la Raspberry Pi 3

Las capacidades multimedia de Raspberry Pi 3 son muy altas. En particular, sobre la base de "Raspberry", puede hacer un centro multimedia, una consola de juegos o incluso todo a la vez. Como resultado, con esta placa única, puede acceder a las siguientes categorías de entretenimiento en su televisor con un puerto HDMI:

  • video de alta definición en YouTube u otros sitios de alojamiento;
  • música en servicios de transmisión;
  • transmisiones de juegos en, por ejemplo, Twitch;
  • juegos desarrollados para consolas antiguas: NES, SNES, SEGA, etc.

Para ver y escuchar contenido multimedia, puede usar un navegador o, aún más conveniente, instalar un reproductor multimedia especial. El más funcional y conveniente de ellos es Kodi.

Para convertir Raspberry en una consola de juegos, debe colocar emuladores de las plataformas de interés y solicitar Roms de juegos. Esto se hace en un par de decenas de minutos. Y aún más fácil y conveniente es instalar un kit de distribución especial, por ejemplo, Retro Pie o algún otro.

Desarrollar y trabajar con documentos en RPi

Por supuesto, Raspberry no es la computadora más poderosa, lo que significa que no es la mejor solución para trabajar. Pero si lo deseas, puedes ver/editar más o menos cómodamente un documento o incluso escribir un guión en él. Por supuesto, no funcionará con IDE pesados, pero nadie requiere esto del RPi.

Además, con la ayuda de RPi3, puede "navegar" por Internet o chatear en mensajería instantánea o redes sociales.

Servidor para cada necesidad desde Raspberry Pi 3

Otra opción para usar la Raspberry Pi 3 es hacer un servidor con ella. Por lo tanto, basta con instalar LAMP o simplemente Apache y Myphpadmin, después de lo cual será posible desarrollar y probar proyectos web en condiciones de recursos bastante limitados.

La segunda opción es descargar y distribuir desde Raspberry Pi 3 torrent. Para hacer esto, por supuesto, necesitará un disco duro externo, ya que las tarjetas de memoria y las unidades flash no son muy adecuadas para estos fines, tanto por las limitaciones de velocidad y el pequeño volumen, como por el rápido desgaste bajo cargas pesadas.

Aplicación de frambuesa en robótica e IoT

En IoT y robótica, el uso de RPi es casi ilimitado. Desde este dispositivo puedes hacer, por ejemplo, una cámara de vigilancia, una pequeña estación meteorológica, un coche a control remoto y mucho más. Entonces, Raspberry Pi 3 encuentra aplicación en el automóvil en forma de DVR. Si se desea, desde este pagador único se puede hacer incluso un teléfono móvil o un smartphone. Pero vale la pena hacerlo por el bien de la experimentación o para presumir ante amigos/comunidad. El hecho es que el dispositivo correspondiente resultará ser al menos bastante engorroso.

Por supuesto, se necesitarán módulos para estos fines. Pero con su compra de problemas no deberían surgir. Hay muchas tiendas en la Web que venden componentes adicionales para Raspberry a precios asequibles.

Agrupación de múltiples RPi 3

Otra forma de usar Raspberry Pi 3 es agrupar varios de estos dispositivos. Esta es una forma bastante específica de usarlo, que no es adecuada para todos.

Para empezar, se debe dar una explicación breve y comprensible de lo que es un clúster. En términos generales, este término se refiere a un complejo de equipos homogéneos (en este caso, un conjunto de RPi), sobre los cuales se realiza alguna tarea en paralelo.

No tiene sentido práctico hacer un clúster de Raspberry para implementar algo, ya que hay soluciones más baratas y convenientes. Agrupar su Raspberry Pi 3 es lo mejor para aprender. Al tener varios usuarios individuales, puede comprender las características de la computación paralela o mostrar cómo funcionan a un niño (de hecho, RPi se creó para enseñar a los niños).

Como puede ver, se pueden hacer muchas cosas interesantes con el RPi 3. Es principalmente útil para estudiar computadoras. Pero también te permite implementar una gran cantidad de proyectos que pueden usarse para el trabajo o el ocio.

Un uso popular de las computadoras Raspberry Pi es la creación de clústeres. Los Raspberry Pies son pequeños y económicos, por lo que es más fácil usarlos para crear un clúster de lo que sería con las PC. Un clúster de Raspberry Pie tendría que ser bastante grande para competir con una sola PC; probablemente necesite alrededor de 20 Pies para producir un clúster con tanta potencia informática como una PC. Aunque un clúster Pi puede no ser tan poderoso, es una gran oportunidad para aprender sobre computación distribuida.

Hay varios tipos diferentes de computadora distribuida que se pueden usar para diferentes propósitos. Hay supercomputadoras que se utilizan para resolver problemas matemáticos, como modelar las condiciones climáticas o simular reacciones químicas. Estos sistemas suelen utilizar la interfaz de paso de mensajes (MPI). Un equipo de la Universidad de Southampton construyó una supercomputadora basada en MPI de 64 nodos. Este sistema se utiliza para enseñar a los estudiantes acerca de la supercomputación.

Otra tecnología que se usa a menudo en computación distribuida es Hadoop, que distribuye datos a través de muchos nodos. Hadoop se usa a menudo para procesar grandes conjuntos de datos y minería de datos. Un ingeniero de Nvidia construyó un pequeño clúster de Hadoop usando Raspberry Pies. Él usa su clúster para experimente y pruebe ideas antes de implementarlas en sistemas más potentes.

Uso de un clúster Raspberry Pi como servidor web

Los clústeres se pueden utilizar como servidores web. Muchos sitios web obtienen demasiado tráfico para ejecutarse en un solo servidor, por lo que se deben usar varios servidores. Las solicitudes de los navegadores web son recibidas por un nodo llamado equilibrador de carga, que reenvía las solicitudes a los servidores de trabajo. El equilibrador de carga luego reenvía las respuestas de los servidores a los clientes.

Este sitio ahora está alojado en un clúster Raspberry Pi. Los nodos trabajadores son servidores web estándar que contienen contenido idéntico. Acabo de instalar Apache en ellos y copié mi sitio en cada nodo.

Utilizo una Raspberry Pi adicional para alojar una copia de desarrollo de este sitio y para controlar el clúster. Este Pi está conectado a mi red local a través de wifi, por lo que puedo acceder a la copia de desarrollo de mi sitio desde mi computadora portátil.

El Pi adicional también tiene una conexión ethernet al clúster Pi. Cuando quiero actualizar mi sitio, puedo transferir los cambios del sitio de desarrollo al sitio en vivo en el clúster. Las actualizaciones del sitio se colocan en archivos .tar.gz que los nodos trabajadores descargan automáticamente del sitio de desarrollo. Una vez descargadas, las actualizaciones se descomprimen en el sistema de archivos local.

Configuración de los servidores Raspberry Pi

Todos los Pies en este sistema no tienen cabeza. Puedo iniciar sesión en Pi con el sitio de desarrollo usando el Protocolo de escritorio remoto, y desde ese Pi puedo iniciar sesión en Pies de trabajo usando SSH.

Todos los Pies en el clúster usan una dirección IP estática. En un clúster más grande, probablemente sería mejor configurar un servidor DHCP en el balanceador de carga. Las direcciones IP utilizadas en el clúster están en la subred 192.168.1.xxx.

Para cada trabajador Pi, configuré una tarjeta SD de 4 GB con la última versión de Raspbian. En raspi-config configuro las siguientes opciones:

  • ampliar fs
  • establecer el nombre de host
  • establecer la contraseña
  • establezca la división de memoria en 16 MB para la GPU
  • overclockear la CPU a 800MHz
  • habilitar ssh

En cada tarjeta instalé Apache y algunas bibliotecas requeridas por mi CMS, libxml2 y python-libxml2. Utilicé este comando para habilitar la reescritura de mods, que también requiere mi CMS:

$ sudo a2enmod reescribir

Finalmente, copié algunos scripts en cada tarjeta SD que permiten que cada Pi sincronice su contenido con el Pi de desarrollo. En un clúster más grande, valdría la pena crear una imagen de tarjeta SD con todas estas modificaciones realizadas de antemano.

Creación de un equilibrador de carga

El equilibrador de carga debe tener dos interfaces de red, una para recibir solicitudes de un enrutador y otra interfaz de red para reenviar solicitudes al clúster de servidores. Los nodos del clúster están en una subred diferente al resto de la red, por lo que la dirección IP de la segunda interfaz del balanceador de carga debe estar en la misma subred que el resto del clúster. La primera interfaz del balanceador de carga tiene la dirección IP 192.168.0.3 mientras que la dirección IP de la segunda interfaz es 192.168.1.1. Todos los Pies en el clúster tienen direcciones IP en la subred 192.168.1.xxx.

Construí mi balanceador de carga usando una PC antigua con 512 MB de RAM y una CPU x86 de 2,7 GHz. Agregué una segunda tarjeta Ethernet PCI e instalé Lubuntu, una versión ligera de Ubuntu. Iba a instalar Ubuntu, pero esta PC es bastante antigua, por lo que probablemente Lubuntu sea una mejor opción. Utilicé una PC porque no estaba seguro de si una sola Pi sería lo suficientemente poderosa para actuar como balanceador de carga, y una Pi solo tiene una conexión ethernet. Quiero que las dos conexiones de red de mi balanceador de carga sean ethernet para mejorar el rendimiento y estabilidad.

Tenga en cuenta que el reenvío de IP no está habilitado. El balanceador de carga no es un enrutador, solo debe reenviar solicitudes HTTP y no todos los paquetes IP que recibe.

Configuración del software del balanceador de carga

Hay muchas implementaciones de software diferentes de balanceo de carga. Usé el módulo de equilibrador de carga de Apache porque es fácil de configurar. Primero me aseguré de que el sistema operativo de mi PC estuviera actualizado:

sudo apt-obtener actualización
sudo apt-obtener actualización

Luego instalé Apache:

sudo apt-get install apache2

Estos módulos de Apache deben estar habilitados:

proxy sudo a2enmod
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer

El siguiente paso es editar /etc/apache2/sites-disponible/default para configurar el balanceador de carga. El módulo proxy es necesario para el reenvío HTTP, pero es mejor no permitir que su servidor se comporte como un proxy. Los spammers y los piratas informáticos suelen utilizar los servidores proxy de otras personas para ocultar su dirección IP, por lo que es importante desactivar esta función agregando esta línea:

Solicitudes de proxy desactivadas

Aunque las solicitudes de proxy están deshabilitadas, el módulo de proxy todavía está habilitado y actúa como un proxy inverso. A continuación, defina el clúster y sus miembros agregando este código:

Interfaz del administrador del equilibrador

El módulo equilibrador tiene una interfaz web que permite monitorear el estado de los servidores back-end y configurar sus ajustes. Puede habilitar la interfaz web agregando este código a /etc/apache2/sites-disponible/default:

También es necesario indicar a Apache que maneje las solicitudes a la página /balancer-manager localmente en lugar de reenviar estas solicitudes a un servidor de trabajo. Todas las demás solicitudes se reenvían al clúster definido anteriormente.

ProxyPass /balancer-manager! ProxyPass / balanceador://rpiccluster/

Una vez que se hayan guardado estos cambios, se debe reiniciar Apache con este comando:

$ sudo /etc/init.d/apache2 reiniciar

cuando abro un navegador y voy a http://192.168.0.3 veo la página principal de mi sitio web. Si voy a http://192.168.0.3/balancer-manager, veo esta página en la imagen de la derecha.

El último paso para poner el clúster en línea es ajustar la configuración de reenvío de puertos en mi enrutador. Solo necesitaba configurar una regla para reenviar paquetes HTTP a http://192.168.0.3.

Aquí está el /etc/apache2/sites-disponible/default completo para el equilibrador de carga:

Administrador del servidor [correo electrónico protegido] DocumentRoot /var/www Opciones FollowSymLinks AllowOverride All Opciones Índices FollowSymLinks MultiViews AllowOverride All Ordenar permitir, denegar permitir de todos ScriptAlias ​​/cgi-bin/ /usr/lib/cgi-bin/ AllowOverride Ninguno Opciones +ExecCGI -MultiViews +SymLinksIfOwnerMatch AddHandler cgi-script .py Orden permitir, denegar Permitir de todos Solicitud de proxy desactivada BalancerMember http://192.168.1.2:80 BalancerMember http://192.168.1.3:80 BalancerMember http://192.168.1.4:80 BalancerMember http://192.168.1.5:80 AllowOverride Ninguno Ordenar permiso, denegar permiso de todo ProxySet lbmethod=byrequests SetHandler balancer-manager Permitir pedido, denegar permiso de 192.168.0 ProxyPass /balancer-manager! ProxyPass / balancer://rpicluster/ ErrorLog $(APACHE_LOG_DIR)/error.log # Los valores posibles incluyen: depuración, información, notificación, advertencia, error, # crítica, alerta, emergencia. LogLevel advierte a CustomLog $(APACHE_LOG_DIR)/access.log combinado

Es muy posible que este sea el clúster más barato y asequible construido en casa.
Actualmente está contando los rompecabezas. [correo electrónico protegido].

Asamblea

El montaje no es difícil: aquí hay una lista de materiales para repetir:

  • 4 placas de PC OrangePi (una también funcionará) con cables de alimentación
  • 16 bastidores para placas de circuito impreso para sujetar entre ellos
  • 4 postes (cortos) para montar en un soporte o usar como patas
  • 2 piezas de plexiglás (cubierta superior e inferior)
  • Ventilador 92mm
  • 4 soportes de montaje del ventilador
  • HUB Ethernet de 100 Mbs, preferiblemente alimentado por 5 o 12 voltios
  • Latiguillos para la conexión Ethernet en la cantidad requerida (por cierto, como la red sigue siendo de 100 Mbit, puede usar fideos telefónicos de 4 hilos y ahorrar un poco en el cable)
  • Fuente de alimentación (más sobre eso más adelante)
  • Para comunicarse con el mundo exterior - WiFi USB barato

Giramos cuatro tablas juntas, sujetamos las cubiertas superior e inferior, colocamos el ventilador en las esquinas. Ponemos un concentrador en la cubierta superior y conectamos todo a través de Ethernet.

Y así es como se ve el “producto” “desde atrás”.

Desafortunadamente, no había cinta aislante azul, por lo que sujetamos el centro con bandas elásticas.

Nutrición

Cada uno de los OPI consume al menos amperios (el fabricante recomienda una fuente de al menos 1,5…2A). El ventilador requiere 12 voltios, el hub también, aunque hay modelos de 5 voltios.

por lo que tomará bien fuente de alimentación de doble voltaje.

Una computadora vieja está bien, pero una fuente de alimentación conmutada sin ventilador moderna como la de MeanWell es mejor.

De hecho, hice exactamente eso, empaquetándolo en una caja de una fuente de alimentación antigua y sacando un conector molex normal (como en una computadora).

Para “distribuir” 5 voltios, utilizaremos un concentrador USB barato modificado. Para hacer esto, puede perforar el chip o simplemente cortar las patas de datos, dejando solo los circuitos de alimentación y tierra. Me decidí por el segundo método, aunque por dentro puse conexiones más "gruesas" en la línea de 5V. Bueno, vamos a colgar un molex de respuesta para conectarlo a la fuente de alimentación. Resulta algo como esto:

Y aquí está todo el montaje:

Sistema

En general, es solo "una pequeña red local de 4 computadoras".
Como sistema base, el Debian habitual, del que ya se ha hablado mucho.

Neto

El nodo superior es clunode0, puede conectarse a través de WiFi a una red externa, mientras distribuye "Internet" a las máquinas clunode1, clunode2, clunode3. También hay un servidor NFS para almacenamiento compartido y dnsmasq para distribuir direcciones DHCP como 10.x.x.x.

En clunode0 en /etc/red/interfaces algo como esta entrada:

1
2
3
4
5
6
7
8
9
10
11
12
13
wlan0 automático
permitir conexión en caliente wlan0
iface wlan0 inet dhcp
wpa-escanear-ssid 1
escanear wpa-ap 1
wpa-key-mgmt WPA-PSK
wpa-proto RSN WPA
wpa por pares CCMP TKIP
wpa-grupo CCMP TKIP
wpa-ssid "Mi Wi-Fi"
wpa-psk "Mi contraseña WiFi"
post-up /usr/local/bin/masquerade.sh eth0 wlan0
Yo afronto DHCP inet predeterminado

Aunque parece que la situación ha cambiado allí y el binario se puede descargar desde el sitio. No lo comprobé, fue más fácil ensamblarlo yo mismo.

También puede instalar y configurar la utilidad de la consola boinctui. Todo se ve bastante decente (GIF animado):

perspectivas

Puede desarrollar la idea; aquí hay algunas ideas que se me ocurren:

  • La primera placa (clunode0) - equilibrador de carga, сlunode2,3 - servidor web o aplicación, clunode4 - base de datos ==> microdatacenter :)
  • Hadoop (y ya existen tales casos, la gente está construyendo clústeres en Raspberry)
  • Clúster Proxmox, aunque no estoy seguro de si todas las piezas están disponibles para ARM
  • Un minero de criptomonedas, a menos que, por supuesto, elija una criptomoneda que aún sea rentable para minar en un procesador y rentable para minar en general.

Gracias por leer hasta el final.

BitScope Cluster contiene 150 miniordenadores Raspberry Pi con conmutadores de red integrados. Foto: BitScope

Los programadores y científicos no siempre tienen libre acceso a una supercomputadora real de alto rendimiento para probar sus programas. Además, las supercomputadoras generalmente ya están ocupadas las 24 horas del día con otro software. Es difícil encontrar una ventana. Debe solicitar con anticipación y ponerse en línea. ¿Cómo funcionará el nuevo programa en un entorno multiprocesador real, qué tan bien se paralelizará la tarea?

Para ayudar a los desarrolladores, a pedido de la División de Computación de Alto Rendimiento del Laboratorio Nacional de Los Álamos, la empresa australiana BitScope desarrolló módulos informáticos de "prueba" BitScope Cluster de 150 minicomputadoras Raspberry Pi que se pueden agrupar y probar en ellas.

Una de las diez supercomputadoras más poderosas del mundo, Trinity, opera en el Laboratorio Nacional de Los Álamos.



Supercomputadora Trinity en el Laboratorio Nacional de Los Álamos

El liderazgo del laboratorio se dio a la tarea de encontrar una manera de brindar a los desarrolladores acceso a la computación paralela de alto rendimiento sin acceso real a la supercomputadora, para que pudieran probar sus programas.

"Los módulos de Raspberry Pi permiten a los desarrolladores descubrir cómo escribir este tipo de software y hacer que funcione de manera confiable, sin tener que tener un equipo de prueba de 25 megavatios y un cuarto de billón de dólares del mismo tamaño", dice Gary Glider de Los Ángeles Laboratorio Nacional Álamos.

De hecho, 25 megavatios de electricidad para probar su programa es demasiado (aquí no se tienen en cuenta los costos de energía para el enfriamiento, que son varias veces más altos que el consumo de energía del propio sistema informático).



Instalación de un sistema de enfriamiento de agua para la supercomputadora Trinity, que utiliza efectivamente el sistema de recuperación de alcantarillado sanitario

Cada módulo tiene 144 nodos activos, seis repuestos y un nodo de control. El módulo tiene un formato de 6U cuando se instala en un rack de servidor de centro de datos. Como se informó en el sitio web oficial, un grupo de 1000 nodos que ocupan un rack de 42U costará entre $120 y $150 por nodo. Este es un margen considerable en comparación con el precio estándar de la Raspberry Pi, que se sabe que es de $35.

Cada módulo de clúster de BitScope consta de bloques de construcción, los llamados "paquetes de clúster" (Cluster Pack). La instalación en bastidores, una unidad a la vez, se produce precisamente en forma de estos "paquetes".



paquete de racimo

Un nodo (miniordenador Raspberry Pi 3) contiene un procesador ARMv8 de cuatro núcleos y 64 bits a 1,2 MHz. Así, si imaginamos un clúster, por ejemplo, de cinco módulos, entonces habrá 720 nodos activos, es decir, 2880 núcleos de procesador activos. Suficiente para probar qué tan bien se paraleliza el programa.



Así es como se ve de cerca una fila de minicomputadoras en un Cluster Pack.

Aunque tal solución es mucho más barata que una supercomputadora, tampoco puede llamarse presupuesto. Solo una gran organización de investigación puede permitirse un mini-cluster por $100,000 o $150,000 únicamente para programas de prueba. En realidad, tales módulos probablemente estén diseñados para estas ricas organizaciones de investigación: propietarios de supercomputadoras. Sin embargo, los creadores de la mini supercomputadora dicen que es "la solución escalable más rentable del mundo: es económica de construir, administrar y mantener".

Los módulos BitScope Cluster también proporcionan ahorros significativos en el consumo de energía. Puede calcular el consumo de energía de cada uno de ellos usted mismo, contando 5 vatios por nodo. Si asumimos que los nodos de repuesto tienen un consumo de energía mínimo, entonces quedan 144 nodos activos y un nodo de control en los módulos. Total 145×5=725W.

BitScope tiene la intención de lanzar estos módulos para la venta gratuita en algún momento a principios de 2018.

Según la empresa, además del desarrollo de software, dichos clústeres pueden ser útiles como simuladores de redes de sensores, en investigaciones sobre redes de alto rendimiento e Internet de las cosas.



¿Te gustó el artículo? Compártelo