2013-08-16 21 views
9

Bellek yoğun arkaplan görevlerini çalıştırırken web sunucusunu tartmaktan kaçınmak için sidekiq'i, raylar uygulamasından ayrı bir ana makinede çalıştıracak şekilde ayarlamak istiyorum.sidekiq'in rayların ana bilgisayarından ayrı bir ana bilgisayarda çalıştırılması mümkün mü?

Bakmam gereken yapılandırma detayları nelerdir?

Bunun için bilinen en iyi uygulamalar veya yapılandırmalar var mı?

DÜZENLEME: sidekiq süreci yerel olarak çalışıyorsa,

, sormam ne anlama geldiğini, nasıl aday olacağını sidekiq API çağrıları (MyWorker.perform_async) böylece raylar yapılandırırım olduğunu netleştirmek için?

+0

[Bu wiki, Sidekiq'in Github sayfasından] geçtiniz mi? (Https://github.com/mperham/sidekiq/wiki/Advanced-Options)? – Kashyap

+0

Evet, ama istediğimle ilgili hiçbir şey bulamadım. Yanılıyorsam lütfen beni düzeltin. – Ovesh

cevap

13

Düzenleme

Herşeyden önce, size perform_async çalıştırdığınızda, sadece bir Redis sıraya Jobs yapışır anlamalıdır netleştirmek için. Sidekiq bu kuyruğu izler ve geldiklerinde işlerini yürütür. Böylece sizin uygulamanız ve Sidekiq'iniz aynı Redis sunucusuna (ve aynı veri tabanına) bakıyorsa, işler işe yarayacaktır.

Orjinal

İlk cevap, muhtemelen tahmin gibi çalıştırmak böylece, bu kod yinelenen ödeme gerekir. Büyük bir anlaşma yok. İkinci olarak, veritabanınıza erişmeniz ve diğer kutudaki sunucuların yeniden yer alması gerekecektir. Bu, bu portların diğer sunucuda açık olduğundan emin olmak anlamına gelir. Bu zorlaşabilir, b/c ideal olarak açık internete maruz kalanları istemezsiniz. Genellikle, çoklu kutu kurulumu için, açık Internet'e maruz kalan tek bir kutunuz olur. Tesis, özel IP'ler üzerinden kutularının geri kalanı ile iletişim kurar:

Genel Web sunucusu

Apache/Nginx ve belki uygulama sunucularını çalıştırır. (Isteğe bağlı)

Özel Uygulama Sunucusu (ler) onlar Kamu sunucuda çalışan değilse

, uygulama sunucuları çalıştırır. Veritabanı ve Redis sunucunuza bağlanır. (Isteğe bağlı)

Özel Sidekiq Sunucusu (ler)

Sidekiq çalıştırır. Veritabanı ve Redis sunucunuza bağlanır.

Özel Veritabanı/Redis Sunucusu

veritabanı ve REDIS çalıştırır. Tabii ki gerekirse farklı sunuculara ayrılabilirler.

+0

Sanırım sorum, "MyWorker.perform_async" dediğinizde, sidekiq yerel olarak çalışmıyorsa nasıl çalışırdı? Bu nasıl yapılandırılır? – Ovesh

+0

Yukarıda belirttiğim gibi yapılandırıldı. Point Sidekiq, Redis hangi hosteyse çalışıyor ("localhost: 6379" yerine).Bu konuda gerçekten farklı bir şey yok. – bioneuralnet

+2

Başka bir şekilde belirtin: Sidekiq'i yerel olarak önyüklemek yerine başka bir ana bilgisayar oluşturdunuz, Rails uygulamanızı yüklediniz, DB ve Redis yapılandırmasını orijinal sunucunuza yönlendirdikten sonra Sidekiq'i başlattınız. Bitti, hepsi değişti. – bioneuralnet