2011-10-05 10 views
8

Dalla pagina principale di Gearman, menzionano l'esecuzione con più server di lavoro, quindi se un server di lavoro muore, i client possono prelevare un nuovo server di lavoro. Data la dichiarazione e il diagramma di seguito, sembra che i server di lavoro non comunichino tra loro.Qual è la procedura migliore per i server di lavoro gearman HA

La nostra domanda è cosa succede a quei lavori che sono in coda nel server dei processi che è morto? Qual è la prassi migliore per disporre di disponibilità elevata per questi server per assicurarsi che i lavori non vengano interrotti in caso di errore?

È possibile eseguire più job server e connettere client e worker al primo server di lavoro disponibile con cui sono configurati. In questo modo, se un server di lavoro muore, i client e i lavoratori eseguono automaticamente il failover su un altro job server. Probabilmente non si desidera eseguire troppi job server, ma avere due o tre è una buona idea per la ridondanza.

enter image description here

Source

risposta

2

Per quanto ne so non c'è modo corretto di gestire questo al momento, ma finché si esegue entrambi i server di lavoro con le code permanenti (utilizzando MySQL o di un altro datastore - non utilizzare la stessa coda effettiva per entrambi i server), è sufficiente riavviare il job server e caricherà la coda dal database. Ciò consentirà di inviare tutte le attività in coda ai lavoratori disponibili, anche dopo la morte del server.

Non c'è tuttavia un modo automatico per fare ciò quando un server di lavoro va giù, quindi se il server di lavoro e il datastore non funzionano (un server che funziona sia localmente che scende) lasceranno le attività in un limbo finché non tornerà indietro in linea.

La coda permanente viene letta solo all'avvio (e inserita/eliminata dal momento in cui le attività vengono inviate e completate).

Non sono sicuro della complessità richiesta per aggiungere tale funzionalità al gearmand e se sia effettivamente desiderata, ma semplice "task added, task handed out, task completed" -notifiche tra server non dovrebbero essere troppo complicate da gestire .

Problemi correlati