Разрешения для EC2, созданные Elastic Beanstalk, подключающимся к внешнему RDS

Я новичок в Elastic Beanstalk и не очень разбираюсь в администрировании серверов, но мне нужно настроить проект Django на Elastic Beanstalk для подключения к внешней базе данных RDS MySQL.

Я создал отдельную База данных RDS MySQL, и я могу без проблем подключиться к ней с помощью Sequel Pro на моем компьютере. Затем у меня есть проект Django, который я пытаюсь поместить в Elastic Beanstalk, но, к сожалению, безуспешно. Если я запустил локальный сервер Django со своего компьютера, проект будет доступен для просмотра и Amazon RDS MySQL будет доступен. Однако, когда я запускаю

eb deploy

, я получаю

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server
on 'myapp-staging.xxx.eu-west-1.rds.amazonaws.com' (110)")
(ElasticBeanstalk::ExternalInvocationError)

. Если я вхожу на сервер EC2 через SSH

eb ssh

, а затем проверяю открытые порты с помощью

netstat -lntu

, я не вижу там порта MySQL 3306, поэтому я думаю, что это заблокирован брандмауэром.

Вот что я пробовал в отношении разрешений:

  1. Я зашел в панель управления RDS -> Группы безопасности и создал myapp-mysql-security-group с типом подключения группы безопасности EC2, указывающим на группу безопасности EC2, используемую экземпляром Elastic Beanstalk EC2 «awseb-e -...».
  2. Я перешел в EC2 -> Группы безопасности и для "awseb-e -..." я установил входящий порт MySQL с источником 0.0.0.0/0
  3. Я перешел в панель управления VPC -> Группы безопасности и создал myapp-mysql-security-group с правилами для входящего трафика MySQL. с источником 0.0.0.0/0.

Затем я попытался повторно развернуть, перезапустить серверы и даже перестроить среду, но ничего не помогло. Порт 3306 MySQL по-прежнему не открыт в экземплярах EC2, созданных Elastic Beanstalk.

Что я делаю неправильно или что отсутствует?

1
задан 14 November 2015 в 23:22
2 ответа

Похоже, в конфигурации было два недостающих пункта:

  1. Мне пришлось воссоздать среду Elastic Beanstalk, чтобы она находилась внутри того же виртуального частного облака (VPC), что и база данных RDS. Это можно сделать следующим образом:

     eb create myapp-staging --vpc
     

, а затем ответил на некоторые вопросы, например, что такое идентификатор VPC.

  1. Мне пришлось ввести VPC CIDR (IP) в разрешенные входящие соединения для MySQL для группы безопасности "rds-launch-wizard":

    a) Перейдите в Панель управления VPC -> Ваши VPC и скопируйте CIDR VPC.

    б) Перейдите в Панель управления VPC -> Группы безопасности и выберите группу «rds-launch-wizard», затем отредактируйте правила для входящих подключений и добавьте это правило:

     MySQL / Аврора (3306) |  TCP (6) |  3306 |  
     
0
ответ дан 4 December 2019 в 06:52

Без использования пользовательского VPC, самый простой способ добавить существующую группу безопасности в экземпляры 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
ответ дан 4 December 2019 в 06:52

Теги

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