2011-10-05 9 views
8

Desde la página principal de gearman, mencionan ejecutar con varios servidores de trabajos, de modo que si un servidor de trabajos muere, los clientes pueden elegir un nuevo servidor de trabajos. Dada la declaración y el diagrama a continuación, parece que los servidores de tareas no se comunican entre sí.Lo que es mejor para los servidores de trabajo HA gearman

Nuestra pregunta es qué ocurre con los trabajos que están en cola en el servidor de trabajos que fallece. ¿Cuál es la mejor práctica para tener alta disponibilidad para que estos servidores se aseguren de que los trabajos no se interrumpan por una falla?

Puede ejecutar varios servidores de tareas y hacer que los clientes y los trabajadores se conecten al primer servidor de trabajos disponible con el que están configurados. De esta forma, si un servidor de trabajos fallece, los clientes y los trabajadores conmutan automáticamente a otro servidor de trabajos. Probablemente no desee ejecutar demasiados servidores de trabajos, pero tener dos o tres es una buena idea para la redundancia.

enter image description here

Source

Respuesta

2

Por lo que yo sé no hay manera correcta de manejar esto en el momento, pero siempre y cuando se ejecuta tanto en los servidores de tareas con colas permanentes (usando MySQL u otra almacén de datos, simplemente no use la misma cola real para ambos servidores), simplemente puede reiniciar el servidor de trabajos y cargará su cola desde la base de datos. Esto permitirá que todas las tareas en cola se envíen a los trabajadores disponibles, incluso después de que el servidor haya muerto. Sin embargo, no hay una forma automática de hacer esto cuando un servidor de trabajo falla, por lo tanto, si el servidor de trabajos y el almacén de datos bajan (un servidor que funciona localmente falla) dejará las tareas en el limbo hasta que regrese en línea.

La cola permanente solo se lee durante el inicio (y se inserta/elimina a medida que las tareas se envían y se completan).

No estoy seguro acerca de la complejidad necesaria para agregar tal funcionalidad a gearmand y si realmente se desea, pero simple "tarea agregada, tarea distribuida, tarea completada": las notificaciones entre servidores no deberían ser demasiado complicadas de manejar .

Cuestiones relacionadas