Подтвердить что ты не робот

Рекомендуемый способ монгодба на эластичном бобовом стебле

Я уже взглянул на Как установить mongodb в Elastic Beanstalk? от 2014 года, который больше не работает. а также https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2

Я настроил новую среду эластичного beanstalk, работающую на node.js, с 1 микро-экземпляром ec2 "64-битная версия Amazon Linux 2016.03 v2.1.0 под управлением Node.js".

Я уже пытался использовать ssh для подключения к моему экземпляру и установки пакетов mongodb с помощью команды yum:

$ sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools

и получил этот обратный звонок:

Loaded plugins: priorities, update-motd, upgrade-helper
No package mongodb-org-server available.
No package mongodb-org-shell available.
No package mongodb-org-tools available.
Error: Nothing to do

Когда я впервые зашёл в свой экземпляр, я получил предупреждение об ошибке:

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH 
WILL BE LOST if the instance is replaced by auto-scaling. For more information 
on customizing your Elastic Beanstalk environment, see our documentation here: 
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

В настоящее время моя среда настроена как единая среда, чтобы сэкономить на расходах. Однако в будущем я перейду на автоматическое масштабирование.

Из-за этого я спрашиваю, рекомендуется ли вносить какие-либо изменения через ssh в ec2, или я должен использовать только EB CLI?

У меня установлены ECI и EB CLI локально, однако я никогда ранее не использовал EB CLI. Если я должен использовать EB, есть ли у кого-нибудь рекомендуемый способ установки mongodb?

4b9b3361

Ответ 1

Если кто-то ищет ответ, вот совет, который я получил от поддержки aws.

Весь код, развернутый на Elastic Beanstalk, должен быть "без гражданства" I.E. Никогда не вносите изменения непосредственно в исполняемый экземпляр beanstalk с использованием SSH или FTP... Поскольку это приведет к несогласованности и/или потерям данных! - Elastic Beanstalk не предназначен для приложений, которые не являются апатридами. Окружающая среда предназначена для масштабирования вверх и вниз в ожидании загрузки сети/ЦП и создания новых экземпляров из базового AMI. Если у экземпляра есть проблемы или базовое оборудование, Elastic Beanstalk прекратит выполнение этих запущенных экземпляров и заменит их новыми экземплярами. Следовательно, почему никакая модификация кода не должна применяться или выполняться "напрямую" к существующему экземпляру, поскольку новые экземпляры не будут знать об этих прямых изменениях. ВСЕ изменения/код нужно либо загружать в консоль Elastic Beanstalk, либо инструменты CLI, а также загружать все запущенные экземпляры. Более подробную информацию о концепциях дизайна эластичных beanstalk можно прочитать по следующей ссылке http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html

Предлагаемое решение: С учетом вышеизложенного, если вы используете MongoDB для хранения данных приложений, наша рекомендация состояла бы в том, чтобы DE-pair среду MongoDB из вашего приложения Node.js. I.E Создайте MongoDB-сервер за пределами Elastic Beanstalk, например, запуская MongoDB непосредственно на экземпляр EC2, и ваше приложение "Устойчивое Beanstalk Node.js" подключается к серверу MongoDB, используя параметры подключения в вашем приложении.

-Создание MongoDB Ниже приведены некоторые примеры ссылок, которые могут быть полезны для вашего сценария для создания сервера MongoDB. Разверните MongoDB на EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ Клиент MongoDB node https://docs.mongodb.org/getting-started/node/client/ MongoDB в руководстве быстрого старта AWS Cloud http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html

- Добавление переменных среды в Эластичный Beanstalk для ссылки на ваш сервер MongoDB После создания сервера MongoDB вы можете передать необходимые настройки соединения в среду Elastic Beanstalk с использованием переменных окружения. Пример использования .ebextensions.config, который вы можете добавить Mongo URL/ports/users и т.д.

option_settings:  - option_name: MONGO_DB_URL  значение: "Внутренний IP-адрес вашего MongoDB EC2"

Информация о том, как использовать свойства среды и прочитать их из приложения, приведена ниже. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop И информацию, использующую .ebextensions.config, можно найти по следующей ссылке http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

В качестве альтернативы вы также можете установить переменную среды, используя cli или через консоль AWS Переменные среды eb cli могут быть прочитаны в соответствии с приведенной ниже ссылкой. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Использование консоли AWS Чтобы установить системные свойства (AWS Management Console)  Откройте консоль Elastic Beanstalk.  Перейдите в консоль управления для своей среды.  Выберите Конфигурация.  В разделе "Конфигурация программного обеспечения" выберите "Редактировать".  В разделе "Свойства среды" создайте свое имя/значения...

Доступ к настройкам конфигурации среды В среде Node.js, работающей в AWS Elastic Beanstalk, вы можете получить доступ к переменным окружения, используя process.env.ENV_VARIABLE, как показано в следующем примере. process.env.MONGO_DB_URL process.env.PARAM2

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop

Резюме: В целом я бы рекомендовал следующие шаги для интеграции MongoDB с средами с эластичным beanstalk. Шаг 1) Создайте сервер MongoDB за пределами эластичного бобового стежка Шаг 2) Создайте приложение Node.js в Elastic Beanstalk, которое подключится к вашему серверу MongoDB.

Ответ 2

3 варианта:

1) SSH в экземпляр eb и вручную установите CLI mongo:

sudo yum-config-manager --add-repo https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/
sudo yum install --nogpgcheck -y mongodb-org-shell

Недостатком является то, что если EB уменьшает количество экземпляров, а экземпляр, на котором вы находитесь в данный момент, завершается, вы выходите из сеанса SSH:

The system is going down for halt NOW!
Connection to 1.2.3.4 closed by remote host.
Connection to 1.2.3.4 closed.
ERROR: CommandError - An error occurred while running: ssh.

Затем вам нужно начать все сначала: подключиться к экземпляру, установить Mongo CLI...

2) Предварительно установите CLI mongo на экземпляры с помощью файла .config:

container_commands:
  01-mongocli:
    command: "sudo yum-config-manager --add-repo https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/;sudo yum install --nogpgcheck -y mongodb-org-shell"
    ignoreErrors: true //use this the ensure instance deployment even if mongo CLI installation fails

Опять же, если экземпляр завершается автоматическим масштабированием, вам нужно будет снова подключиться, но вам не нужно устанавливать CLI вручную.

3) Создайте отдельный экземпляр, в котором размещен ваш CLI mongo, как описано в ответе @amyloula. Если ваш mongodb находится внутри VPC, вам нужно создать этот отдельный экземпляр также внутри VPC. Затем вам потребуется создать шлюз для публичного доступа к экземпляру, поскольку вы не можете напрямую подключиться к экземпляру в VPC.