Instrukcje: dokowana replikacja MongoDB w usłudze elastycznego kontenera

10

Mam aplikację Node.js wraz z bazą danych MongoDB działającą na AWS ECS. Konfiguracja, którą mam obecnie, składa się z 2 ELB i 2 instancji uruchamiających każdy kontener Docker z przypisaną usługą (węzeł / mongo):

Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB

Korzystam z oficjalnego obrazu Docker dla MongoDB dostępnego tutaj: https://registry.hub.docker.com/_/mongo/

Jakieś wskazówki dotyczące tego, jak mógłbym wdrożyć zestaw repliki dla MongoDB przy użyciu Dockera i ECS, przy czym każda replika działa w innej instancji?

Claudiu S
źródło

Odpowiedzi:

2

Nie dokuj baz danych. Kontenery dokowe mają być efemeryczne i nie przechowywać danych. To nie jest odpowiednie dla baz danych.

W szczególności nie należy próbować dokować klastra MongoDB . Konfiguracja zestawów replik jest niezwykle rozbudowana i złożona. Musisz uruchomić wiele poleceń w kolejności i tylko raz . W przypadku pominięcia dowolnego polecenia lub awarii węzła cały klaster może się zablokować, a Ty będziesz musiał zacząć od nowa.

Docker ma własne wyobrażenie o tym, jak powinny się zachowywać aplikacje. Naprawdę trudno byłoby sprawić, by działało to w Docker.

Jeśli chcesz klaster z 3 replikami, powinieneś uzyskać 3 instancje AWS i skonfigurować MongoDB w instancjach. Wyszukaj mongodb setting up a replica set on <OS>w Google, który da ci aktualny samouczek.

użytkownik5994461
źródło
2

FireCamp to robi. FireCamp może bardzo łatwo wdrożyć replikę MongoDB na AWS ECS. 1) wdrożyć klaster ECS z szablonem chmury, 2) wdrożyć zestaw repliki MongoDB za pomocą jednego polecenia. Szczegółowe informacje można znaleźć na wiki instalacji FireCamp .

Ze względów bezpieczeństwa lepiej jest uruchomić aplikację Node.js w innym klastrze ECS. Instancje EC2, które uruchamiają MongoDB, nie powinny być narażone na świat zewnętrzny.

Moduł równoważenia obciążenia elastycznego nie jest wymagany, aby aplikacja Node.js miała dostęp do MongoDB ReplicaSet. Każda replika otrzymuje unikalną nazwę dns. Aplikacja Node.js może po prostu uzyskać dostęp do MongoDB pod nazwą dns.

CloudStax
źródło