2

бы реально оценить некоторые предложения на ресурсы о том, как правильно развернуть с эластичным Beanstalk со следующим стеком:Elastic Beanstalk Развертывание с MongoDB

  • MongoDB
  • Рельсы (Puma)
  • Sidekiq/Redis
  • Elasticsearch

Должен ли я установить все эти настройки в файлах ebextension? Или это вопрос настроек в ручном режиме в AWS, а затем где-то правильно их прокладывать?

ответ

4

Вы определенно не хотите запускать все, что есть на ваших Эластичных серверах Beanstalk. Эластичный Beanstalk автоматически добавит или удалит серверы на основе нагрузки вашего трафика/сервера. Вы не хотите, чтобы ваша база данных находилась на одном из этих серверов, когда она удаляется.

Elastic Beanstalk - это платформа как услуга, которая отлично подходит для управления веб-серверами. В AWS есть другие службы, такие как ElastiCache (Redis/Memcached как услуга) и Elasticsearch как услуга. Существуют также третьи стороны, которые предоставляют службы, которые работают на AWS, такие как RedisLabs (Redis as a service) и MongoLab (MongoDB как услуга).

Вы можете решить использовать любую из этих служб, чтобы уменьшить объем работы по администрированию системы, которую вы должны выполнять самостоятельно. Или вы можете вручную настроить серверы EC2 Linux (за пределами Elastic Beanstalk) и установить на них такие вещи, как Rails и MongoDB и ElasticSearch, и управлять ими самостоятельно.

В вашем случае я бы рекомендовал что-то вроде следующего:

  • Rails: ElasticBeanstalk
  • MongoDB: MongoLab
  • Redis: RedisLabs
  • Elasticsearch: AWS Elasticsearch Услуги

Вы хотите настроить каждую из этих служб, а затем просто добавить информацию о соединении для каждого из них в вашу эластичную среду Beanstalk, чтобы Rails могли их использовать.

Edit:

Вот лучшие инструкции по настройке MongoDB на EC2 вручную: https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/

Для ElastiCache и Elasticsearch, просто нажмите вокруг в консоли AWS для предоставления сервера Redis и получить URL-адреса для подключения. После того, как вы установили все эти вещи, вам просто нужно поставить параметры соединения в вашей ElasticBeanstalk среды в качестве переменных пользовательского окружения, что-то вроде:

MONGO_DB_URL = «Ваш MongoDB EC2 внутренних IP-адреса»

REDIS_URL =» url ElastiCache предоставил вам «

Затем прочтите эти переменные среды в приложении при создании соединений с этими службами.

Кроме того, вам нужно будет узнать о настройке своих VPN и групп безопасности, чтобы включить все для подключения. Например, вы захотите, чтобы ваши Elastic Beanstalk-серверы были в одной группе безопасности, а сервер MongoDB в другой группе. Затем вам нужно будет настроить группу безопасности MongoDB, чтобы разрешить доступ из группы beanstalk на порту MongoDB. Это похоже на ElastiCache. Я думаю, что для Elasticsearch вам придется создать роль IAM с доступом к API Elasticsearch, а затем назначить эту роль вашим серверам Beanstalk.

Конечно, есть также административные задачи по настройке серверов Linux для вашего кластера MongoDB, настройке кластеризации, сбоям, автоматическому резервному копированию, архивам журналов, периодическим обновлениям безопасности и т. Д. Я знаю, что у вас есть весь этот кредит AWS, но вы должны взвесить все на AWS по сравнению со стоимостью всех административных задач, на которые вы будете тратить время. Эластичный Beanstalk, Elasticsearch и ElasticCache - это без проблем, если вы получаете их бесплатно, но мой счет MongoLab должен быть достаточно высоким, чтобы оправдать установку всего этого и управлять им самостоятельно.

+0

hi again @mbaird! Я стараюсь держаться подальше от решений, таких как mongolab/redislabs для целей затрат (моей команде дается куча ежегодных кредитов AWS). есть ли хорошая документация о том, как настроить mongodb на EC2 и переделать на эластику, а затем впоследствии собрать все это вместе в моих конфигурациях eb? пытался найти нужные ресурсы для ссылки –

+0

@ChristopherChangchien см. мое редактирование выше. –

+1

спасибо за подробный ответ @mbaird! Я был на острове с AWS до сих пор, так что это было очень полезно, чтобы дать мне какое-то направление со всем этим. определенно см. свою точку зрения о самоуправляющемся mongoDB. скорее всего, возьму ваш совет! –