Как связать существующий экземпляр RDS к Эластичной среде Бобового стебля?

Я не услышал о whatismyip.org, я всегда использовал whatismyip.com (отметьте TLD). любопытно, '.org' каждый дает мое локальное число, в то время как '.com' каждый дает внешний IP.

22
задан 4 June 2014 в 20:29
6 ответов

Ответ от службы поддержки AWS :

Для того, чтобы связать существующую базу данных со средой EB, вам необходимо сделать ее снимок через Консоль управления, а затем выберите «создать новую базу данных RDS» на уровне данных. Похоже, что нет способа связать работающий экземпляр RDS с существующей средой EB без запуска нового из моментального снимка из-за того, как экземпляр RDS привязан к базовому стеку Cloudformation среды Beanstalk. Если вы сделаете снимок текущего экземпляра RDS, вы можете запустить его заново в EB, если хотите.

Если вы хотите, чтобы экземпляр RDS существовал вне среды, вы можете просто указать параметры подключения как переменные среды через консоль EB Console : Конфигурация -> Веб-уровень -> Конфигурация программного обеспечения. Потом, вы можете прочитать переменную окружения через PHP .

18
ответ дан 28 November 2019 в 20:22

Я сталкивался с той же проблемой и зафиксировал следующие шаги использования:

1) Переходят к экземпляру EC2 и отмечают Ваш пример "sg-121212121212"

2 группы безопасности), ПЕРЕХОДЯТ к Группе безопасности RDS ad=nd входящий трафик

3), правило Редактирования выбирает весь трафик и добавляет Вашу новую ebs группу безопасности "sg-121212121212"

Hope, это будет полезный

0
ответ дан 28 November 2019 в 20:22

«Выбранный» ответ правильный, но я хотел добавить дополнительную информацию, поскольку у большинства людей, использующих EB и RDS вместе, должны быть те же требования, даже если они еще этого не знают. .

Первый вопрос : Почему вы хотите, чтобы экземпляр RDS существовал вне среды EB? Answer: So that the lifetime of the RDS instance is not tied to the lifetime of the EB environment. i.e. when you remove an environment, you don't want to destroy the DB with it. There are very few reasons why you'd want to actually tie your RDS instance to your environment.

A problem with settings up RDS independently of EB is that you don't get the RDS_* variables automatically populated and therefore need to retrieve their values and populate them yourselves via web console or .ebextensions. It's not recommended that you add credentials to your code though, as that can be a security hole.

But then, the next problem is if you want to programmatically create environments (such as for blue-green zero downtime deployments) then you need a solution for how to populate the sensitive RDS values (e.g. password) every time. Unfortunately, this requires you to drop further down the AWS stack and use a CloudFormation template.

The ideal solution is an enhancement to EB so that the "use an existing database" link mentioned in the question actually lets you manually associate an existing RDS database and then have the RDS_* environment variables automatically populated again, rather than redirecting you to unhelpful documentation. AWS Support said this has been raised as a feature request but of course no timeframe given.

24
ответ дан 28 November 2019 в 20:22

создайте RDS в разделе Elastic; он добавит новую правильную группу безопасности; изменит группу безопасности старой существовавшей RDS; установит правильную строку соединения при web-конфигурации и все будет работать...

-2
ответ дан 28 November 2019 в 20:22

Мне это нужно было недавно, и я также хотел автоматизировать шаги с помощью AWS CLI / EB CLI. В любом случае, вот основные шаги, которые я выполнил (при условии, что вы уже создали экземпляр RDS):

  1. Убедитесь, что для вашего экземпляра RDS настроена другая группа безопасности (а не группа VPC по умолчанию). Для этого можно использовать aws ec2 create-security-group (AWS CLI) и связать его с экземпляром RDS с помощью aws rds modify-db-instance (AWS CLI).
  2. Инициализируйте приложение beanstalk (для этого я использовал eb init (EB CLI)).
  3. Прочтите соответствующие данные конфигурации из своей базы данных RDS (имя БД, имя хоста, порт и т. Д.). Для этого я использовал aws rds describe-db-instance .
  4. Используя эти данные, установите переменные среды RDS _ * в экземпляре EB, когда вы создаете среду (или развертываете среду позже). Это можно сделать с помощью eb create / eb deploy (EB CLI). Когда вы создаете среду изначально, она будет ухудшена, поскольку группы безопасности для доступа к базе данных RDS не настроены должным образом.
  5. Получите соответствующие группы безопасности из конфигурации EB. Вам понадобится один для группы автомасштабирования и для эластичного балансировщика нагрузки. Для этого можно использовать aws elasticbeanstalk description-configuration-settings (AWS CLI).
  6. Авторизуйте группу автомасштабирования для входящего трафика в вашу базу данных для группы безопасности, которую вы настроили на шаге 1. Я использовал aws ec2 authorize-security-group-ingress (AWS CLI) для того, что использует группы безопасности VPC (а не группы безопасности БД). Вероятно, вы сможете добиться того же с группами безопасности БД, если они поддерживаются в вашем регионе. При настройке правила входящего трафика убедитесь, что вы используете правильный протокол и порт для ядра базы данных.
  7. Добавьте группу эластичного балансировщика нагрузки в группы безопасности вашего экземпляра RDS (снова используя aws rds modify-db- instance (AWS CLI)).
  8. Перезагрузите или повторно разверните приложение Elastic Beanstalk (например, с помощью eb deploy (EB CLI)). Мне пришлось выполнить повторное развертывание, поскольку я запускаю миграции в развертываниях.

Это в основном все. Теперь у вас должна быть возможность увеличивать / уменьшать свои экземпляры RDS, не заботясь об экземплярах EB, пока вы сохраняете одинаковое имя хоста и учетные данные БД. Вы также можете выполнять сине-зеленые развертывания с этим подходом (но вам может потребоваться выполнить некоторые дополнительные действия, чтобы также отменить доступ к группе безопасности).

2
ответ дан 28 November 2019 в 20:22

Проще всего добавить существующую группу безопасности к экземплярам EB EC2 по конфигурации, используя простой файл, описанный в https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config

Например:

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1
0
ответ дан 28 November 2019 в 20:22

Теги

Похожие вопросы