Consolidar todos los procesos con Supervisord y prepararse para la ingeniería del caos
Hola, soy Incompetente.
¿Cómo están todos?
Ayer salí a andar en bicicleta durante un total de 6 horas, reuniéndome con amigos en el camino.


Como era un festival de jazz, paseé por la ciudad escuchando música, y la ropa de las personas mayores era a menudo interesante y estimulante.
La realidad de las personas que salen a la calle y que se ven directamente es más verdadera que las instantáneas de la calle y similares.
Y como un amigo iba a prepararme pasta a la boloñesa en su casa, fuimos al supermercado de negocios y decidimos probar a hacerla con unos fideos muy gruesos llamados 'PRAI Nest Pasta', y cuando la hicimos juntos, ¡estaba increíblemente deliciosa!
Así, fue un día en el que fuimos a tiendas de ropa vintage, compartimos impresiones sobre Project Mirai, me explicaron sobre transporte óptimo y procesamiento de lenguaje natural, charlamos hasta las 2 de la madrugada y luego regresé a casa recorriendo varias decenas de kilómetros en mi bicicleta de piñón fijo.
Introducción
La razón por la que he estado reorganizando mi entorno de infraestructura doméstica recientemente es porque quiero usarlo como un entorno de prueba para la ingeniería del caos, algo que me interesaba desde hace tiempo.
Anteriormente, Netflix lanzó algo llamado ChaosMonkey, pero parece que esos monos bifurcados ya se han convertido en especies en peligro de extinción.
Están desapareciendo a una velocidad tal que uno podría preguntarse si son criptomonedas, pero en medio de todo eso, existe un OSS llamado ChaosBlade que se actualiza en tiempo real. Quiero ejecutarlo.
Esto es algo que Alibaba Cloud de China ha implementado, y hay un resumen en los Issues sobre dónde se está utilizando realmente.
Who is using ChaosBlade
Hay muy poca información en japonés, pero la documentación está bastante bien hecha y se actualiza en tiempo real, así que debería ser utilizable.
Planeo entrar en detalles una vez que empiece a trabajar en ello.
Inicio de demonios antes de la migración a Supervisord
Había muchas cosas que nunca pensé que continuaría haciendo por tanto tiempo.
En realidad, los iniciaba como un script que envolvía otros scripts, descritos dentro de rc.local del servidor y que se ejecutaban al inicio.
Específicamente,
rc.local
$ sudo cat /etc/rc.local
[sudo] contraseña de haturatu`
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
[ -d /etc/boot.d ] && run-parts /etc/boot.d
/root/serverboot.sh &
De esta manera, los iniciaba haciendo que cada aplicación se ejecutara desde un serverboot.sh que había creado de forma un tanto descuidada en el directorio de inicio de root.
Honestamente, solo estaba ejecutando scripts, así que dejemos de lado si es correcto llamarlo un 'wrapper' o no.
Sin embargo, como habrán notado, con esto, si un proceso se cae, no se generan archivos de registro individuales.
Por lo tanto, todo se gestionó con Supervisord.
Después de eso
Con esto, si un proceso se cae por alguna razón, Supervisor lo reiniciará automáticamente y se generarán registros según la configuración de cada uno.
En total, se convirtieron en 8 procesos.
Como no me llevó ni una hora de trabajo, pensé 'debería haberlo hecho antes', pero es lo que hay. Porque somos humanos.
Otras cosas por hacer
Como hacer un balanceador de carga con HA Proxy requeriría otro servidor, y tener un segundo servidor en casa no tendría mucho sentido, necesito encontrar un VPS económico.
La razón es que el entorno doméstico tiene altos riesgos ambientales como cortes de energía, por lo que creo que sería mejor tener un segundo servidor en una ubicación completamente diferente.
La razón por la que pienso esto es que no es solo una cuestión de un entorno de servidor doméstico; recuerdo que alrededor de 2021 hubo una interrupción masiva en la región US de AWS. Al seguir la caída de intercambios como Binance durante ese tiempo, descubrí que la causa fue AWS.
Tener una configuración redundante en la misma región no tiene sentido al final.
Un corte de energía, o el Google DC de EE. UU. (que creo que se podía visitar por dentro con Youtube o Google Map), aunque parezca imposible al verlo, no significa que sea absolutamente imposible.
Podrían decirme '¿Por qué no usar Nginx como balanceador de carga en lugar de HA Proxy?', pero recordaba haber visto esto en el pasado.
Razones por las que nunca deberías usar Nginx para balanceo de carga
Además, creo que usar HA Proxy es más explícito y fácil de entender, ya que tener el servidor web y el balanceador de carga ejecutándose con el mismo software puede volverse confuso.
Pero si me preguntan si realmente tiene sentido tener una configuración redundante en la situación actual, la respuesta es un rotundo NO. Usar software como ChaosMonkey para consumir recursos innecesarios en la nube podría causar problemas, y hacerlo a nivel de DNS también sería otra cosa.
Después de pensarlo un poco más, planeo ejecutar ChaosBlade.
Todavía no estoy listo para Get la información dentro del servidor durante esa ingeniería del caos, así que, en cierto modo, esto continuará como una secuela.
Eso es todo. Nos vemos de nuevo.