2013-08-16 11 views
9

Chciałbym skonfigurować sidekiq, aby działał na oddzielnym hoście z aplikacji mojej szyny, aby uniknąć obciążania serwera WWW podczas wykonywania intensywnych zadań w tle.Czy można uruchomić sidekiq na oddzielnym hoście od hosta rails?

Jakie dane konfiguracyjne muszę przejrzeć?

Czy są znane najlepsze praktyki lub konfiguracje?

EDIT:

Aby wyjaśnić, co mam na myśli, aby zapytać się, w jaki sposób skonfigurować szyny tak, że połączenia sidekiq API (MyWorker.perform_async) będzie działać, jeśli proces sidekiq nie jest uruchomiony lokalnie?

+0

Czy przejrzeliście [to wiki na stronie Gytetów Sidekiqa] (https://github.com/mperham/sidekiq/wiki/Advanced-Options)? – Kashyap

+0

Tak, ale nie mogłem znaleźć niczego związanego z tym, o co pytam. Proszę popraw mnie jeżeli się mylę. – Ovesh

Odpowiedz

13

Edit wyjaśnienie

Przed wszystkim innym, należy zrozumieć, że po uruchomieniu perform_async, to po prostu wciska zadania w kolejce Redis. Sidekiq obserwuje tę kolejkę i uruchamia zadania, kiedy wchodzą. Tak długo, jak twoja aplikacja i twój Sidekiq patrzą na ten sam serwer Redis (i ta sama baza danych, oczywiście), wszystko będzie działać.

Original odpowiedź

Po pierwsze, jak można się domyślić, będzie musiała duplikat kasę swojego kodu, dzięki czemu można go uruchomić. Nie ma sprawy.

Po drugie, będzie potrzebować dostępu do bazy danych i serwerów redis w drugim polu. Oznacza to upewnienie się, że te porty są otwarte na drugim serwerze. To może być trudne, b/c idealnie nie chcesz osób narażonych na otwarty Internet. Zwykle w przypadku konfiguracji z wieloma kartami masz tylko jedną skrzynkę otwartą w Internecie. Komunikuje się z resztą swoich skrzynek na prywatne adresy IP:

publiczny serwer WWW

Runs Apache/Nginx i może serwerów aplikacji.

Private Server App (s) (opcjonalnie)

Runs serwerów aplikacji, jeśli nie są one uruchomione na serwerze publicznym. Łączy się z serwerem bazy danych i Redis.

Prywatna Sidekiq Server (s) (opcjonalnie)

Runs Sidekiq. Łączy się z serwerem bazy danych i Redis.

Private Database/Redis Server

Prowadzi bazę danych i Redis. Oczywiście w razie potrzeby można je podzielić na różne serwery.

+0

Domyślam się, że moje pytanie brzmiało, kiedy wywołasz 'MyWorker.perform_async', jak by to działało, gdyby sidekiq nie działał lokalnie? Jak to skonfigurowane? – Ovesh

+0

Jest skonfigurowany tak, jak wskazałem powyżej. Point Sidekiq do dowolnego hosta, na którym działa Redis (zamiast "localhost: 6379").Naprawdę nic w tym nie ma. – bioneuralnet

+2

Powiedziałeś w inny sposób: Zamiast uruchamiać Sidekiq lokalnie, utworzyłeś innego hosta, zainstalowałeś swoją aplikację Railsową, wskazałeś jej konfigurację DB i Redis na oryginalnym serwerze, a następnie uruchomiłeś Sidekiq. Zrobione, to wszystko się zmieniło. – bioneuralnet