EC2 não pode se conectar ao RDS no VPC. Problemas de sub-rede?

4

Consegui implantar nosso aplicativo .NET usando o kit de ferramentas AWS para o Visual Studio. Eu configurei o banco de dados do RDS manualmente (MySQL) e implantei o aplicativo usando o beanstalk elástico (configurado no VPC). A questão era que, quando eu testava o formulário de inscrição no aplicativo em execução na instância do EC2, ele não armazenava os dados do usuário no banco de dados MySQL no RDS. No entanto, ele seria armazenado no banco de dados no RDS se eu executasse o aplicativo localmente. Isso me levou a acreditar que era um problema do EC2 não ter acesso correto ao RDS.

O problema é que eu estava muito familiarizado com o EC-classic, mas agora a minha região não permite isso e eu tenho que usar o VPC.

Agora, não consigo me conectar ao banco de dados do RDS ... Eu tentei configurar um VPC diferente, mas sem sorte. Tenho a sensação de que isso tem a ver com sub-redes / grupos de segurança. Eu permiti o acesso de todos os IP's (0.0.0.0/0) ao SSH, HTTP, HTTPS, MYSQL (3600) .. entrada. Outbound tem todos os ip's permitidos para todas as portas.

    
por BellaGurl 12.08.2014 / 21:34

1 resposta

1

Como o RDS exige que você tenha duas zonas de disponibilidade ao implantar em um VPC, é necessário certificar-se de que o beanstalk possa acessá-las por ACLs de rede e também as permissões dos grupos de segurança baseados em instâncias.

Somente seu ELB e seu gateway NAT instância / NAT precisam ser sub-redes públicas, tudo o mais deve estar em sub-redes privadas.

Os grupos de segurança são stateful e os grupos de rede são stateless, enquanto você só precisa permitir regras de entrada para os grupos de segurança, é necessário permitir AMBAS portas de entrada e saída de sua sub-rede de beans para ambas as sub-redes usando ACLs de rede. Consulte Segurança no seu VPC .

Aqui está uma amostra eb create para criar o ambiente do beanstalk (substituir as strings com colchetes):

eb create [BEANSTALK_ENVIRONMENT] --instance_type m3.medium --branch_default --cname [BEANSTALK_CNAME] --database --database.engine postgres --database.version [x] --database.size 100 --database.instance db.m4.large --database.password xxxxxxxxx --database.username ebroot --instance_profile [BEANSTALK_EC2_IAM_PROFILE] --keyname [SSH_KEY_NAME] --platform "64bit Amazon Linux 2015.03 v1.3.0 running Ruby 2.2" --region us-east-1 --tags tag1=value1,tag2=value2 --tier webserver --verbose --sample --vpc.id [vpc-xxxxxx] --vpc.dbsubnets [subnet-db000001,subnet-db000002] --vpc.ec2subnets [subnet-ec200001] --vpc.elbsubnets [subnet-elb00001] --vpc.elbpublic --vpc.securitygroups [sg-00000001] --sample --timeout 3600

subnet-db000001 REGRAS DA ACL DE REDE:

Inbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow
Outbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow

subnet-db000002 REGRAS DA ACL DE REDE:

Inbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow
Outbound: Port Range: 5432, Source [subnet-ec200001 (as ip range)], Allow

Subnet-ec200001 REGRAS DE ACL DE REDE:

Inbound: Port Range: 5432, Source [subnet-db000001 (as ip range)], Allow
Inbound: Port Range: 5432, Source [subnet-db000002 (as ip range)], Allow
Outbound: Port Range: 5432, Source [subnet-db000001 (as ip range)], Allow
Outbound: Port Range: 5432, Source [subnet-db000002 (as ip range)], Allow

subnet-elb00001 REGRAS DA ACL DE REDE:

Inbound: Port Range: 80, Source 0.0.0.0/0, Allow
Inbound: Port Range: 443, Source 0.0.0.0/0, Allow
Outbound: Port Range: 80, Source 0.0.0.0/0, Allow
Outbound: Port Range: 443, Source 0.0.0.0/0, Allow

Uma observação adicional sobre ACLs de Rede - muitos serviços não respondem na porta original, mas usam um porta efêmera . Portanto, você pode ter que adicionar o seguinte às ACLs de rede de entrada e de saída para sub-redes com instâncias do EC2:

Outbound: Port Range: 1024-65535, Source 0.0.0.0/0, Allow
Outbound: Port Range: 1024-65535, Source 0.0.0.0/0, Allow

Existem também vários cenários úteis em Regras recomendadas da ACL de rede para o seu VPC .

Espero que isso ajude.

    
por 08.03.2016 / 18:10