2015-02-16 13 views
17

Mam serwer api z uruchomionym Node.js, który korzystał z jego modułu klastra, a testy wyglądały całkiem nieźle. Teraz nasz dział IT chce przejść do korzystania z pojemników Docker, z których jestem zadowolony, ale nigdy nie korzystałem z niego w inny sposób niż po prostu bawiąc się. Ale myślałem, że aplikacja Node.js działa w jednym procesie Docker, więc moduł klastra nie byłby najlepszy, ponieważ pojedynczy proces Docker może być wolnym punktem konfiguracji, dopóki żądanie nie zostanie podzielone w ramach tego procesu przez moduł klastra.Kontenery Docker i klastry Node.js

Czy rzeczywiście klaster kontenerów Docker, który może uruchamiać i zatrzymywać je w locie, jest ważniejszy niż prawidłowe stosowanie modułu klastra Node.js?

Jeśli mam grupę kontenerów, czy przy użyciu modułu klastra Node.js otrzymam wszystko? Punkty końcowe api zabierają mniej niż .5sec (zwykle trochę mniej).

Używam MySQL (wierzę, że jest to pojedynczy serwer, nic więcej obecnie), więc nie powinno być żadnego powodu, aby używać rozwiązania integralności danych.

+0

Jestem na początku tej drogi i jestem ciekawa, jak to działa dla Ciebie - jestem również ciekaw, czy używasz pm2 jako komentator poniżej lub po prostu na zawsze – maehue

+0

Używam AWS ElasticBeanstalk, więc jeśli polecenie węzła nie powiedzie się i zakończy kontener Docker zatrzymuje się, a EB uruchamia się automatycznie z powodu moich konfiguracji skalowania. Nie korzystanie z modułu klastra było świetne, a nasze instancje zużywają około 10% -15% obciążenia procesora. –

Odpowiedz

13

Będziesz musiał zmierzyć, aby być pewnym, ale moje przeczucie będzie działać z modułem klastra węzła byłoby warto. Zyskałoby to większe wykorzystanie procesora przy najmniejszym dodatkowym obciążeniu. Brak dodatkowych pojemników do zarządzania (uruchamianie, zatrzymywanie, monitorowanie). Plus pracownicy klastra mają skuteczny mechanizm komunikacji. Najbardziej rozsądnym ewolucja (nie pomiń kroki) wydaje mi się:

  1. 1 pojemnik, 1 proces węzeł
  2. 1 pojemnik, kilka skupionych robotnicy węzłowe
  3. kilka pojemników, każdy z kilku pracowników węzłów
+1

[PM2] (https://github.com/Unitech/pm2) jest dość popularny. Korzysta z klastrowania i istnieje już kilka obrazów dokowania dla PM2. – tsturzl

+0

Więc mam rację, mówiąc, że kontener będzie miał dostęp do wielu rdzeni procesora? –

+0

tak. jeśli stacja dokująca nie była kompatybilna z wieloma rdzeniami, byłaby to ogromna wada. –

3

To, co widziałem jako najlepsze rozwiązanie podczas korzystania z Docker, to utrzymywać jak najmniej procesów na pojemnik, ponieważ pojemniki są lekkie; nie chcesz, aby procesy próbowały używać więcej niż jednego procesora. Tak więc uruchomienie klastra w kontenerze nie spowoduje dodania żadnej wartości i może spowodować gorsze opóźnienie.

Tutaj https://medium.com/@CodeAndBiscuits/understanding-nodejs-clustering-in-docker-land-64ce2306afef#.9x6j3b8vw Chad Robinson wyjaśnia ten pomysł w sposób ogólny.

Kubernetes, Rancher, Mesos i inne warstwy zarządzania kontenerami obsługują równoważenie obciążenia. Zapewniają "planowanie" (przenoszenie tych segmentów kontenerów Dockera na różne procesory i maszyny, aby uzyskać dobre wykorzystanie w klastrze) i "sieciowanie" (wewnętrznie równoważą obciążenia przychodzące do tych kontenerów) warstw.

Powiązane problemy