Назад | Перейти на главную страницу

Как: Dockerized репликация MongoDB в службе эластичных контейнеров

У меня есть приложение 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, причем каждая реплика работает на другом экземпляре?

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.

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

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

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

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