Создание mongodb через AWS opsworks

Я пытаюсь настроить rails stack на AWS Opsworks, и я хочу использовать mongodb в качестве базы данных.

Я думаю, что вы настроили это, создав новый пользовательский слой и добавив свои шеф-повара к соответствующим циклам жизненного цикла, но я не уверен, какие квитанции помещаются туда.

Может ли кто-нибудь помочь с тем, как добавить mongodb через шеф-повара в AWS Opsworks?

Я видел, что есть кулинарная книга сообщества mongodb, но из-за того, что я вижу, что она несовместима с Opsworks.

Есть ли у кого-нибудь опыт в настройке?

Пожалуйста, помогите с этим.

спасибо большое Rick

Ответ 1

Я попытался настроить набор реплик MongoDB 3- node в OpsWorks несколько месяцев назад. Я расскажу немного о своем опыте:

1) Как установить единственный MongoDB: Можно и легко установить один mongodb, используя Edelight Chef MongoDB Cookbook. Просто добавьте его в качестве подмодуля в свой пользовательский репозиторий поваров opsworks.

Чтобы заставить его работать, создайте пользовательский слой и вызовите его MongoDB и исключите следующие рецепты.

  • НАСТРОЙКА: mongodb: 10gen_repo
  • КОНФИГУРАЦИЯ: mongodb: default

Это установит последнюю версию MongoDB.

ПРИМЕЧАНИЕ. Я использовал экземпляры Ubuntu.

2) Лучшие рекомендации MongoDB Если вы поговорите с инженерами MongoDB или представителями службы поддержки клиентов, все они скажут вам, что рекомендуемая настройка для MongoDB - это набор реплик 3 node. Это означает, что один хозяин и две читаемые реплики надеются в разных зонах доступности. Также у идеальной установки будет много оперативной памяти, чтобы дать вам пример: самый маленький экземпляр, предоставленный MongoDB, который вы можете найти на рынке AWS, является стандартным большим:

MongoDB instance on AWS marketplace

Вам также необходимо рассмотреть возможность использования EBS на RAID10, возможно, зарезервированных IOPS...

Подробнее см. на белой бумаге MongoDB на AWS.

3) Вопросы безопасности В идеале вам нужны только экземпляры приложений для доступа к экземплярам DB. В AWS вы можете создать группу безопасности с настраиваемыми правилами и назначить экземпляры EC2 для группы, которую вы только что создали... Не совсем так, когда дело доходит до OpsWorks, поскольку это заставляет вас иметь группы безопасности по умолчанию, которые имеют очень слабые ограничения. AWS всегда будет принимать слабые разрешения более строгие.

4) Вопросы времени и денег Если рекомендуемая настройка представляет собой набор реплик 3 node с использованием больших экземпляров, вы ищете по меньшей мере 600 долларов (по запросу) для БД, и это не добавляет зарезервированные IOPS, EBS и т.д. Автоматизация этой установки возможна еще не просто. Это займет время или эксперт в этом вопросе, чтобы вы собрались. Если у вас есть ресурсы и персонал, чтобы справиться с этим, заходите на это. Если вы являетесь частью небольшой команды разработчиков, которая хочет запрограммировать больше и делать меньше операций, читайте дальше.

5) Найдите надежное управляемое решение Сначала я неохотно думал об использовании сторонней компании, предлагавшей MongoDB как услугу. После большой оценки различных опций (Managed, AWS Marketplace, OpsWorks, Direct EC2) я пришел к выводу, что для нашей небольшой команды лучше всего использовать MongoLab или MongoHQ. Они принимают и управляют экземплярами MongoDB всех размеров и цен. Они даже позволяют вам выбирать хостинг (AWS, Rackspace и т.д.), Регион и AZ. Цена будет дороже, если вы посмотрите на оборудование в одиночку, но, как я уже упоминал, вам нужно рассмотреть не только цену, но и время работы MongoDB.

Я был там, сделал это и закончил тем, что не использовал OpsWorks для размещения MongodDB. Надеюсь, это сэкономит вам время и головные боли.

Ответ 2

Я только что протестировал это репо на github, он работает для MongoDB/OpsWorks. Goto OpsWorks > Layers > В разделе "Custom Chef Recipes" обратитесь к этой ссылке github " https://github.com/Cyclic/cookbooks", затем добавьте "yum:: default" в событие жизненного цикла установки. Затем добавьте "mongodb:: 10gen_repo" "mongodb:: default" и "mongodb:: 10gen_remrepo" к событию жизненного цикла установки