Creando aplicaciones nodejs de alta disponibilidad con pm2
Antes de leer mi siguiente artículo, podemos empezar por repasar el concepto de alta disponibilidad en aplicaciones
PM2 es un administrador de procesos para aplicaciones Node.js con un balanceador de carga incorporado. Con él podéis construir aplicaciones nodejs de alta disponibilidad con unos sencillos pasos que os detallaré a continuación.
Instalación
Instalaremos pm2 de forma global, vía gestor de paquetes de node, con el siguiente comando :
Actualización
Con la siguiente instrucción conseguiremos mantener pm2 actualizado:
Autocompletado
Por defecto, esta utilidad no viene instalada.
Iniciar aplicaciones
Arrancar vuestra aplicación nodejs es muy sencillo, usando el siguiente comando:
Este comando hará que Pm2 lance vuestra aplicación en background.
Guardar lista de procesos
Para poder restaurar nuestras aplicaciones entre reinicios de sistema, es necesario tener guardada nuestra lista de procesos. Esto lo podemos hacer con el siguiente comando:
Startup hook
El objetivo de este hook no es más que mantener vuestra lista de procesos entre reinicios del sistema, incluso aquellos inesperados.
Balanceo de carga
Aquí comienza la parte interesante de pm2, la posibilidad de balancear la carga de trabajo, escalando vuestra aplicación mediante procesos del sistema. Esta funcionalidad depende del número de procesadores disponibles en vuestra máquina, por ejemplo, si vuestro pc tiene 4, podrá correr vuestra aplicación en 4 procesos diferentes balanceando las peticiones entre los mismos. El comando que debemos utilizar es el siguiente :
Después de -i indicaremos el número de cpus a utilizar o también si queremos, la posiblidad de escalar la aplicación entre el máximo disponible al utilizar “max”.
Declaración mediante archivo ecosystem
Podemos hacer que nuestra aplicación se arranque mediante una configuración definida en un archivo js, llamado ecosystem.config.js. En este archivo podremos declarar el comportamiento o incluso variables de entorno. Para crear una plantilla de archivo ecosystem.config.js, ejecutamos el comando:
Esto nos generará un archivo con la siguiente estructura:
Una vez creado, lo ubicáis en el directorio de vuestro código fuente y podréis ejecutar las aplicaciones definidas en el mismo, con el siguiente comando:
También podréis cargar este fichero desde otro directorio, de la siguiente forma:
OTROS COMANDOS IMPORTANTES:
- pm2 list: Listar aplicaciones disponibles via pm2.
- pm2 stop 'appName | appId': Para una aplicación, indicando su nombre o identificador.
- pm2 restart 'appName | appId' : Reinicia una aplicación, indicando su nombre o identificador.
- pm2 save: Guarda la lista de procesos que queremos arrancar y la mantiene entre reinicios del sistema