Как сделать Dockerized репликацию MongoDB в сервисе Elastic Container

10

У меня есть приложение Node.js вместе с базой данных MongoDB, работающей на AWS ECS. Установки, которые у меня есть на данный момент, состоят из 2 ELB и 2 экземпляров, каждый из которых выполняет Docker-контейнер со своей назначенной службой (node ​​/ mongo):

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

Я использую Официальный образ Docker для MongoDB, доступный здесь: https://registry.hub.docker.com/_/mongo/

Любые указатели относительно того, как я смогу развернуть набор реплики для MongoDB, используя Docker и ECS, каждая реплика работает на своем отдельном экземпляре?

Клаудиу С
источник

Ответы:

2

Не докеризуйте базы данных. Контейнеры Docker должны быть эфемерными и не содержать данных. Это не подходит для баз данных.

В частности, не пытайтесь докеризовать кластер MongoDB . Настройка для наборов реплик чрезвычайно сложна и сложна. Вы должны выполнить много команд по порядку и только один раз . Если вы пропустите какую-либо команду или если узел отключится, весь кластер может заблокироваться, и вы будете вынуждены начать все сначала.

У Docker есть свое представление о том, как должны вести себя приложения. Было бы очень сложно заставить это работать в Docker.

Если вам нужен кластер с 3 репликами, вы должны получить 3 экземпляра AWS и настроить MongoDB на них. Поиск mongodb setting up a replica set on <OS>в Google, который даст вам актуальный учебник.

user5994461
источник
2

FireCamp делает это. FireCamp может очень легко развернуть MongoDB ReplicaSet на AWS ECS. 1) развернуть кластер ECS с помощью шаблона облачной информации; 2) развернуть MongoDB ReplicaSet с помощью одной команды. Проверьте вики-установку FireCamp для деталей.

В целях безопасности лучше запустить приложение Node.js в другом кластере ECS. Экземпляры EC2, которые запускают MongoDB, не должны подвергаться воздействию внешнего мира.

Elastic Load Balancer не требуется для приложения Node.js для доступа к MongoDB ReplicaSet. Каждая реплика получает уникальное имя DNS. Приложение Node.js может просто получить доступ к MongoDB по имени DNS.

CloudStax
источник