2012-03-20 12 views
9

Soy un desarrollador de node.js. Utilizo Amazon ec2 para implementar mis aplicaciones node.js.¿Cuáles son las ventajas y desventajas de utilizar el script upstart o el script forever en un contexto de ejecución de scripts node.js?

Quiero que mi servicio node.js se ejecute permanentemente; se reinicia si falla por algún motivo.

Me encontré con 2 herramientas. Forever y Upstart

¿Hay alguna ventaja de usar una sobre la otra?

¿Hay alguna otra herramienta que sea mejor?

+0

+1 No estoy seguro de por qué esta pregunta está recibiendo más amor! Lo encontré muy útil. –

Respuesta

8

Upstart es un controlador de servicio del sistema, similar a SysV Init e inicia/detiene/reinicia esencialmente cualquier servicio registrado, basado en Node.js o no, y también iniciará automáticamente los servicios en el inicio del sistema para tú. Pero Upstart es esencialmente específico de Ubuntu, y los servicios específicos de Upstart no se ejecutarán en otras distribuciones de Linux.

Upstart tiene una capa de compatibilidad SysV Init a la que podría orientar, en cambio, para mantener la mayor capa de compatibilidad posible.

Forever es una aplicación Node.js que supervisa y reinicia otras aplicaciones Node.js según sea necesario, y según lo define su configuración JSON. Muchas opciones y un control detallado sobre su servicio sin el esfuerzo que se necesitaría para duplicarlo en un script SysV Init personalizado. Sin embargo, Forever no es un servicio de sistema, por lo que si el servidor se reinicia, tendrá que iniciar manualmente sus scripts para siempre.

Más allá de eso, si todo lo que necesita es algo que reinicie su script si/cuando falla, y no le importa que comience automáticamente al inicio del sistema, todo lo que necesita es un script bash tan simple como:

#!/bin/bash 
while true 
do 
    node ./myScript.js 
done 
+0

¿Qué sucede si tiene pocos procesos de nodo administrados por siempre y desea reiniciar uno de ellos? – Anatoliy

+0

De acuerdo con la documentación en [siempre] (https://github.com/nodejitsu/forever), especifique el script que desea iniciar/detener/reiniciar como daemon, por lo que solo debe listar su nombre. No sé qué necesitarías hacer si dos scripts tienen exactamente el mismo nombre. –

+0

Gracias por la explicación. Anteriormente era número de instancia por lo que recuerdo. Ambas soluciones no funcionarían en el mundo real :(Por lo tanto, voy a seguir utilizando advenedizo, es una herramienta increíble. – Anatoliy

5

Solo para corregir una declaración engañosa en la respuesta aceptada ... no es cierto que upstart sea una tecnología exclusiva de Ubuntu. Ver:

https://serverfault.com/questions/291546/centos-6-and-upstart http://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux-admins-need-to-know http://en.wikipedia.org/wiki/Upstart#Adoption

Con eso, creo que es una solución mucho más convincente.

+3

Acabo de darme cuenta de esto.RedHat está abandonando Upstart para SystemD, así que creo que es mi punto. –

+1

Debian también decidió estandarizar en systemd (todo en minúsculas, por favor) y parece probable -según declaraciones de Shuttleworth- que Ubuntu siga el ejemplo, publique 14.04 – Guss

Cuestiones relacionadas