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