Uma ótima característica do proxy do RDS é que ele é totalmente gerenciado. Ao contrário dos servidores de proxy tradicionais, você não precisa manter a dor de cabeça de implantar, gerenciar e corrigi -los com as novas atualizações. É um aplicativo sem servidor e escala automaticamente para se ajustar às suas necessidades.
O proxy do Amazon RDS pode ser usado para aplicativos com base na arquitetura sem servidor e naqueles que estão em execução em contêineres no ECS ou EC2.
Como funciona o proxy RDS?
Com esse recurso, os aplicativos podem agrupar e compartilhar suas conexões de banco de dados. Em vez de conectar seu aplicativo diretamente ao banco de dados RDS, conectamos -o ao proxy RDS. A Amazon RDS Proxy atua como um mediador de conexão entre o código do seu aplicativo e a instância do RDS DB. Ele se reserva um pool de conexões estabelecidas com o banco de dados, que pode ser reutilizado e compartilhado com outros clientes. Dessa forma, apenas algumas conexões são estabelecidas para o banco de dados, reduzindo assim a nova carga de conexão no banco de dados.
No caso de um failover de banco de dados, o proxy RDS re-redigem os pedidos diretamente para a nova instância do DB. Outro grande benefício é que podemos configurar a autenticação do IAM para a segurança do banco de dados sem a necessidade de colocar as credenciais do banco de dados diretamente no código do aplicativo. Ele também tem a disposição de usar o AWS Secrets Manager para gerenciar credenciais de banco de dados centralmente.
Configuração experimental
Para demonstrar como o AWS RDS Proxy funciona, configuraremos um ambiente de trabalho com os seguintes recursos de rede:
Para fazer este guia compacto, não descreveremos como configurar uma instância EC2 e RDS, pois são relativamente simples. Também criamos um usuário do IAM com a Política de AdministratorAccess. As etapas significativas deste guia são descritas aqui:
Introdução com RDS Proxy
Eu acho que o cenário geral deve agora ser liberado para o leitor. A imagem abaixo mostra a visão geral deste guia:
Criação de grupos de segurança e verificando a conectividade do banco de dados.
Passo 1. Navegue até a seção AWS VPC e, na coluna 'Segurança', selecione Grupos de segurança no painel de navegação no lado esquerdo:
Passo 2. Agora clique no botão 'Criar grupo de segurança' e adicione um grupo de segurança (aqui 'EC2_SECGRP') para a instância do EC2. Digite os detalhes básicos de acordo com sua escolha:
Adicione uma regra de entrada para permitir a conexão SSH de entrada (recebimento) ao EC2. Adicione uma regra de saída para permitir qualquer tráfego de saída (saída) da instância do EC2.
Adicione outro grupo de segurança (aqui 'RDS_SECGRP') para a instância do RDS e digite os detalhes básicos:
Adicione uma regra de entrada para permitir apenas a conexão TCP na instância do RDS DB (na porta 3306) da instância do EC2 (especifique o EC2_SECGRP na fonte). Adicione outra regra de entrada para permitir apenas a conexão TCP na instância do RDS DB (na porta 3306) do proxy (especifique proxy_secgrp na fonte). Adicione a regra de saída para permitir qualquer tráfego de saída (saída) da instância do RDS.
Da mesma forma, adicione mais um grupo de segurança para proxy (proxy_secgrp) e digite os detalhes básicos:
Os três grupos de segurança que criamos estão agora disponíveis:
Ao selecionar qualquer grupo de segurança, você pode ver seus detalhes:
1) EC2_SECGRP: anexado à instância do EC2.
2) rds_secgrp: anexado com a instância RDS.
3) proxy_secgrp: anexado com o proxy.
etapa 3. Agora vá para o painel RDS e selecione sua instância de DB de alvo RDS (aqui 'db-linuxhint'). Na guia 'Conectividade e segurança', encontre o terminal para a instância do banco.
Passo 4. Vá para o painel EC2 e selecione a instância do EC2 da qual você deseja se conectar à instância do RDS DB. Selecione a opção 'Connect':
Etapa 5. No assistente 'Connect to Instância', escolha a opção 'EC2 Instância Connect', que é uma conexão SSH baseada em navegador:
Uma nova janela do navegador será aberta quando você selecionar o botão 'Connect', como mostrado aqui:
Etapa 6. A partir desta janela da CLI, use o formato de comando abaixo para testar a conectividade EC2 com a instância do RDS DB:
$ mysql -h-P 3306 -u -p
Use o ponto final do seu RDS DB Instância no lugar do 'RDS DB Endpoint' e o nome do usuário do banco de dados no lugar de 'Nome de usuário' ('admin' no nosso caso). Digite a senha do banco de dados quando solicitado. Quando a autenticação for bem -sucedida, você verá o prompt do MySQL na CLI:
Usando o AWS Secret Manager para lidar com credenciais de banco de dados.
Para que o proxy RDS possa se conectar ao usuário do banco de dados, o usuário do banco de dados precisa de um segredo no AWS Secrets Manager. Esses segredos são usados pelo proxy RDS para lidar com um pool de conexão de banco de dados.
Passo 1. Vá para a seção 'Gerente de segredos' do console da AWS e selecione 'armazenar um novo segredo':
Passo 2. Na janela 'Escolha o tipo secreto', selecione as credenciais da opção 'para o banco de dados RDS.'Na subseção abaixo, insira o nome de usuário e a senha do usuário do seu banco de dados:
etapa 3. Em seguida, no menu suspenso 'Selecione a chave de criptografia', escolha 'DefaultEncryPtionKey' e selecione o DB de alvo RDS para o qual você está configurando o segredo para acessar. Clique em Avançar.
Passo 4. Agora dê um nome adequado ao seu segredo e uma breve descrição para ele (opcional).
Etapa 5. Estamos pulando as tags e opções automáticas de rotação secreta; Por enquanto, clique em Avançar:
Etapa 6. Você pode ver algumas configurações relacionadas ao segredo e a algum código de exemplo. Apenas pule -os e continue a salvar seu segredo, pressionando o botão 'Store':
Quando as etapas acima forem feitas, seu nome secreto aparecerá na página do Secrets Manager. A partir dos detalhes secretos, copie o arn do seu segredo, que precisaremos mais tarde.
Criando um papel de IAM e definindo uma política para permitir que o proxy do RDS acesse segredos criados com o AWS Secret Manager.
Passo 1. Vá para o painel do IAM e do painel esquerdo, escolha 'Papunos' e selecione 'Criar função':
etapa 3. Das múltiplas opções sob o Cabeço 'RDS', selecione 'RDS - Adicionar função ao banco de dados':
Passo 4. Agora escolha 'Next' e insira o botão 'Criar política'. Um novo navegador será aberto aqui; Selecione a guia JSON e substitua as declarações de política já pela seguinte:
"Versão": "2012-10-17",
"Declaração": [
"Sid": "visualizador0",
"Efeito": "permitir",
"Ação": [
"SecretsManager: getrandompassword",
"SecretsManager: CreateSecret",
"SecretsManager: ListSecrets"
],
"Recurso": "*"
,
"Sid": "visualizador1",
"Efeito": "permitir",
"Ação": "SecretsManager:*",
"Recurso": [
"Put_your_secret_arn_here"
]
]
Basta substituir o rótulo 'put_your_secret_arn_here' pelo valor secreto do ARN no seu caso. Adicione tags (opcional) e continue selecionando 'Política de revisão' e dê um nome ('RDS-Proxy-Policy' no nosso caso) à sua política e pressione o botão 'Criar política'.
Etapa 5. Depois de configurar sua política, retorne à janela 'Funções' no navegador e escolha o botão 'Atualizar' e pesquisar e selecione a política que você acabou de criar:
Etapa 6. Agora dê um nome à sua função e uma breve descrição e, opcionalmente, você pode adicionar as tags aqui. Continue selecionando 'Avançar: Revisão' e finalmente selecione 'Criar função.'Seu papel está agora criado:
Criando e configurando o proxy RDS.
Agora é hora de criar e configurar o Proxy RDS, que finalmente utilizará nosso grupo de segurança RDS_SECGRP, o segredo e o papel que criamos acima.
Passo 1. Vá para o painel RDS e selecione 'Proxies' e selecione 'Criar proxy':
Passo 2. Dentro do assistente 'Criar proxy', primeiro precisamos dar um nome ou identificador ao proxy, que é 'proxy-lh' no nosso caso.
etapa 3. Desmarcar a caixa correspondente a 'requer segurança da camada de transporte.'
Passo 4. Mantenha o valor de 'tempo de conexão do cliente ocioso' para o valor padrão de 30 minutos.
Etapa 5. Em Configuração do grupo-alvo, 'Selecione sua instância de DB de RDS de destino no menu suspenso do banco de dados.
Etapa 6. Mantenha o valor de 'Pool de conexões de conexão', valor do valor padrão de '100':
Etapa 7. Na seção de conectividade, existem vários campos:
Etapa 8. Sob a 'configuração avançada', verifique o 'Loging Enhanced' e, finalmente, selecione 'Criar proxy.'
Agora, aguarde o proxy estar disponível e, quando terminar, copie o terminal de proxy para testar a conectividade do EC2.
Conectando -se à instância do RDS DB via RDS Proxy.
Agora vamos verificar a conectividade de nossa instância de db de RDS do EC2.
Passo 1. Vá para o painel de gerenciamento do EC2, selecione Instâncias e selecione sua instância de destino EC2 de onde nos conectaremos à instância do RDS DB. Escolha 'Connect.'
Passo 2. No assistente 'Connect to Instância', escolha a opção 'EC2 Instância Connect', que é uma conexão SSH baseada em navegador:
Uma nova janela do navegador será aberta quando você selecionar o botão 'Connect' como anterior neste tutorial.
etapa 3. A partir desta janela da CLI, use o formato de comando abaixo para testar a conectividade EC2 com a instância do RDS DB por meio do endpoint do RDS Proxy:
$ mysql -h-P 3306 -u -p
Use seu endpoint do RDS Proxy no lugar do 'Proxy Endpoint' e o nome do usuário do banco de dados no lugar de 'Nome de usuário.'Digite a senha do banco de dados quando solicitado. Quando a autenticação for bem -sucedida, você verá o prompt do MySQL na CLI:
Conclusão
Neste guia, aprendemos sobre a criação de um proxy RDS na AWS. É muito benéfico para aplicações grandes, incluindo sem servidor, que têm muitas conexões abertas. Reduz significativamente o tempo de failover para os bancos de dados Aurora e RDS. Pode ser facilmente usado para muitos aplicativos sem a necessidade de alterar o código.