2014-12-12 18 views
7

Ho un Task Manager di Celery per raggruppare alcuni numeri per l'analisi aziendale.Autocalone Python Celery con Amazon EC2

Il Task Manager ei lavoratori sono ospitati su un Amazon EC2 Linux Server.

Ho bisogno di configurare il sistema in modo tale che se mandiamo troppi compiti su sedano Amazon imposta automaticamente una nuova istanza EC2 per eseguire più lavoratori e bilancia il carico tra questi lavoratori.

I servizi di cui sono a conoscenza esistono sono i servizi di Amazon Auto Bilancia e di bilanciamento del carico Amazon che sembrano esattamente ciò che voglio usare, tuttavia, non sono sicuro di quale sia il modo migliore per configurare il Celery.

I pensare a che dovrei avere un "maestro" di sedano che sta raccogliendo tutti i compiti e un certo numero di lavoratori del sedano che li eseguono. Con l'aumento del numero di compiti, voglio aggiungere più lavoratori. Il modo in cui la scala automatica funziona (prendendo un AMI del server di sedani) penso che stia attualmente clonando il Maestro e gli operai che sembra non essere quello che voglio fare.

Come organizzarlo per raggiungere il mio obiettivo finale che è la gestione flessibile delle attività di scalabilità automatica utilizzando Celery per gestire le attività e Amazon Web Service per ospitare l'elaborazione.

Il maggior numero di dettagli possibili in qualsiasi risposta (o collegamenti a esercitazioni!) Sarebbe molto apprezzato in quanto la maggior parte dei tutorial o dei consigli sembra assumere grandi quantità di conoscenza che attualmente non ho!

risposta

4

Non hai bisogno di un'architettura master-worker per farlo funzionare. Se capisco correttamente la tua domanda, vuoi essere in grado di scalare in base alle dimensioni della coda. Direi che sarà più facile se si hanno le seguenti operazioni

  1. Setup elasticache/sqs per il broker (visto che sei in AWS)
  2. per il ridimensionamento personalizzato - Un periodic task che controlla le dimensioni della coda utilizzando qualcosa di simile this OPPURE aggiungi la scalabilità automatica di Amazon per aggiungere/rimuovere macchine quando l'utilizzo della CPU è elevato (supponendo che sia un'indicazione di carico sufficiente). Inoltre, avviare gli operatori con --autoscale in modo che l'utilizzo della CPU venga riflesso correttamente.