2016-03-22 11 views
5

Stworzyłem aplikację Node.js (Meteor) i zajmuję się strategiami obsługi skalowania w przyszłości. Zaprojektowałem moją aplikację jako zestaw mikroserwisów i teraz rozważam wdrożenie tego w produkcji.Skalowanie mikroserwisów za pomocą Dockera

Chciałbym jednak, aby wiele mikroserwisów działało na jednej instancji serwera, aby zmaksymalizować wykorzystanie zasobów podczas korzystania z niewielkiej liczby zasobów. Wiem pojemniki nadają się do tego, ale jestem ciekaw, czy jest jakiś sposób na stworzenie dynamicznego skalowania zestaw pojemników gdzie mogę:

  • poleceń zapisu, takie jak „Przepis innej aplikacji kontenera na tym serwerze, jeśli pojemniki działanie tej aplikacji osiąga> 80% CPU/inne parametry ograniczające ",
  • Zapewnienie i przygotowanie innych serwerów w razie potrzeby dla dodatkowych kontenerów,
  • Połączenia bilansu obciążenia między tymi kontenerami (i ma to wpływ na równoważenie obciążenia serwera, np. wysyłanie mniej połączenia z serwerami z mniejszą liczbą kontenerów?)

Sprawdziłem AWS EC2, Docker Compose i nginx, ale nie jestem pewien, czy zmierzam w dobrym kierunku.

+0

Struktura kodu w Meteor 1.3+ sprzyja pisaniu mikrourządzeń w Meteorrze. Aby zarządzać współzależnościami pomiędzy usługami, należy użyć innegoMeteor = DDP.connect (anotherMeteorServer). Mój 2c. Jeszcze tego nie próbowałem. – vijayst

+0

@Vijay Mogę wrócić, aby odpowiedzieć na to sam, gdy będę miał czas. Myślę, że mam pomysł, jak to zrobić, chociaż nie miałem czasu, aby spróbować, więc obserwuj tę przestrzeń dla odpowiedzi, jeśli jej potrzebujesz/przeszkadza mi, jeśli zapomnę odpowiedzieć i wciąż szukasz. –

Odpowiedz

0

Zbadaj Kubernetes i/lub Mesos, a nigdy się nie obejrzysz. Są szyte na miarę tego, co chcesz zrobić. Oba składniki należy zwrócić uwagę na to:

  1. Service Discovery: Pozwala usług inter-zależnych (mikro-usług "A" nazywa "B"), aby "dowiedzieć się" nawzajem. Zazwyczaj robi się to przy użyciu DNS, ale z funkcjami rejestracyjnymi, które obsługują to, co się dzieje, gdy instancje są skalowane.

  2. Harmonogram: W Docker-land, planowanie nie jest o crona, to znaczy, jak pojemniki są skalowane i „pakowane” do serwerów w różnych sposobów, aby zmaksymalizować efektywne wykorzystanie dostępnych zasobów.

Istnieje rzeczywiście dziesiątki opcji tutaj: Docker Swarm, Rancher, itd. Są również konkurencyjnych rozwiązań. Wielu dostawców usług w chmurze, takich jak Amazon, oferuje również usługi dedykowane (takie jak ECS) z tymi funkcjami. Ale Kubernetes i Mesos pojawiają się jako standardowe wybory, więc będziesz w dobrym towarzystwie, jeśli przynajmniej zaczniesz.

0

Dane można gromadzić za pomocą Docker API (i cool blog post) i często jest to wykorzystywane. Pogrubienie za pomocą DAPI i narzędzi stosu doków (compose/roarm/machine) może zapewnić wiele narzędzi do skalowania architektury mikroserwisów.

Mogę doradzić firmie Consul w zarządzaniu wykrywaniem w takim systemie świadomym zasobów.