2013-08-16 5 views
9

Vorrei installare sidekiq in modo che venga eseguito su un host separato dalla mia app per rotaie, per evitare di appesantire il server Web durante l'esecuzione di attività in background che richiedono molta memoria.È possibile eseguire sidekiq su un host separato dall'host del rails?

Quali sono i dettagli di configurazione che devo visualizzare?

Esistono procedure consigliate o configurazioni note per questo?

EDIT:

Per chiarire, quello che voglio dire a chiedere è, come faccio a configurare le rotaie in modo che le chiamate API sidekiq (MyWorker.perform_async) avrebbe eseguito se il processo sidekiq non è in esecuzione a livello locale?

+0

Hai passato [questo wiki nella pagina Github di Sidekiq] (https://github.com/mperham/sidekiq/wiki/Advanced-Options)? – Kashyap

+0

Sì, ma non ho trovato nulla relativo a ciò che sto chiedendo. Per favore correggimi se sbaglio. – Ovesh

risposta

13

Modifica per chiarire

Prima di ogni altra cosa, si dovrebbe capire che quando si esegue perform_async, si attacca semplicemente il Lavoro in una coda Redis. Sidekiq guarda questa coda ed esegue i lavori quando entrano. Quindi, finché la tua app e il tuo Sidekiq guarderanno lo stesso server Redis (e lo stesso database, ovviamente), le cose funzioneranno.

risposta originale

primo luogo, come si può intuire, avrà bisogno di una cassa duplicato del codice in modo che possa funzionare. Nessun grosso problema.

In secondo luogo, sarà necessario accedere al database e ai server redis nell'altra casella. Ciò significa assicurarsi che quelle porte siano aperte sull'altro server. Ciò può diventare complicato, b/c idealmente non vuoi quelli esposti a Internet aperta. Di solito, per una configurazione multi-box, avrai una sola casella esposta a Internet aperta. Si comunica con il resto dei vostri carichi over IP privati:

server web pubblico

Runs Apache/Nginx e magari i server app.

privato App Server (s) (opzionale)

esegue il server di applicazioni, se non sono in esecuzione sul server pubblico. Si collega al database e al server Redis.

Sidekiq Private Server (s) (opzionale)

Runs Sidekiq. Si collega al database e al server Redis.

Private Database/Redis Server

Esegue database e Redis. Ovviamente possono dividere su server diversi se necessario.

+0

Credo che la mia domanda fosse, quando chiami "MyWorker.perform_async', come funzionerebbe se sidekiq non fosse in esecuzione localmente? Come è configurato? – Ovesh

+0

È configurato come ho detto sopra. Punta Sidekiq a qualunque host Redis sia in esecuzione (anziché "localhost: 6379").Non c'è davvero nulla di diverso in questo. – bioneuralnet

+2

Detto in un altro modo: invece di avviare Sidekiq localmente, hai creato un altro host, installato l'app Rails, indirizzato la configurazione DB e Redis al tuo server originale, quindi avviato Sidekiq. Fatto, questo è tutto ciò che è cambiato. – bioneuralnet

Problemi correlati