Solução de problemas do RDS Proxy
A seguir, é possível encontrar ideias de solução de problemas para alguns problemas comuns do proxy do RDS e informações sobre logs do CloudWatch para o RDS Proxy.
Nos logs do RDS Proxy, cada entrada é prefixada com o nome do endpoint de proxy associado. Esse nome pode ser o nome que você especificou para um endpoint definido pelo usuário. Ou pode ser o nome especial default
para solicitações de leitura/gravação que usam o endpoint padrão de um proxy. Para obter mais informações sobre os endpoints do proxy, consulte Como trabalhar com endpoints do proxy do Amazon RDS.
Verificar a conectividade para um proxy
Você pode usar os seguintes comandos para verificar se todos os componentes do mecanismo de conexão podem se comunicar com os outros componentes.
Examine o próprio proxy usando o comando describe-db-proxies. Examine também o grupo de destino associado usando o comando describe-db-proxy-target-groups. Confira se os detalhes dos destinos correspondem à instância de banco de dados do RDS ou ao cluster de banco de dados do Aurora que você pretende associar ao proxy. Use comandos como os seguintes.
aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME
Para confirmar se o proxy pode se conectar ao banco de dados subjacente, examine os destinos especificados nos grupos de destino usando o comando describe-db-proxy-targets. Use um comando como o seguinte.
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME
A saída do comando describe-db-proxy-targets inclui um campo TargetHealth
. É possível examinar os campos State
, Reason
e Description
dentro de TargetHealth
para verificar se o proxy pode se comunicar com a instância de banco de dados subjacente.
-
Um valor
State
deAVAILABLE
indica que o proxy pode se conectar à instância de banco de dados. -
Um valor
State
deUNAVAILABLE
indica um problema de conexão temporário ou permanente. Nesse caso, examine os camposReason
eDescription
. Por exemplo, seReason
tiver um valor dePENDING_PROXY_CAPACITY
, tente se conectar novamente depois que o proxy terminar sua operação de escalabilidade. SeReason
tiver um valor deUNREACHABLE
,CONNECTION_FAILED
ouAUTH_FAILURE
, use a explicação do campoDescription
para ajudá-lo a diagnosticar o problema. -
O campo
State
pode ter um valor deREGISTERING
por um breve período antes de alterar paraAVAILABLE
ouUNAVAILABLE
.
Se o comando do Netcat a seguir (nc
) for bem-sucedido, você poderá acessar o endpoint do proxy na instância do EC2 ou em outro sistema em que esteja conectado. Esse comando relata uma falha se você não estiver na mesma VPC que o proxy e o banco de dados associado. Você pode fazer login diretamente no banco de dados sem estar na mesma VPC. No entanto, não é possível fazer login no proxy a menos que você esteja na mesma VPC.
nc -zx
MySQL_proxy_endpoint
3306 nc -zxPostgreSQL_proxy_endpoint
5432
Você pode usar os comandos a seguir para garantir que sua instância do EC2 tenha as propriedades necessárias. Em particular, a VPC da instância do EC2 deve ser a mesma que a VPC da instância de banco de dados do RDS ou do cluster de bancos de dados Aurora ao qual o proxy se conecta.
aws ec2 describe-instances --instance-ids
your_ec2_instance_id
Examine os segredos do Secrets Manager usados para o proxy.
aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id
your_secret_id
Certifique-se de que o campo SecretString
exibido por get-secret-value
esteja codificado como uma string JSON que inclua os campos username
e password
. O exemplo a seguir mostra o formato do campo SecretString
.
{
"ARN": "some_arn
",
"Name": "some_name
",
"VersionId": "some_version_id",
"SecretString": '{"username":"some_username","password":"some_password
"}',
"VersionStages": [ "some_stage
" ],
"CreatedDate": some_timestamp
}
Problemas e soluções comuns
Para possíveis causas e soluções para alguns problemas comuns que você pode encontrar usando o RDS Proxy, consulte o seguinte.
Você pode encontrar os seguintes problemas ao criar um proxy ou ao se conectar a um proxy.
Erro | Causas ou soluções alternativas |
---|---|
|
Selecione uma função existente do IAM em vez de optar por criar uma. |
Você pode encontrar os problemas a seguir ao se conectar a um proxy do MySQL.
Erro | Causas ou soluções alternativas |
---|---|
ERROR 1040 (HY000): Connections rate limit exceeded (
|
A taxa de solicitações de conexão do cliente para o proxy excedeu o limite. |
ERROR 1040 (HY000): IAM authentication rate limit exceeded
|
O número de solicitações simultâneas com autenticação do IAM do cliente para o proxy excedeu o limite. |
ERROR 1040 (HY000): Number simultaneous connections exceeded (
|
O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite. |
|
Algumas razões possíveis incluem:
|
ERROR 1105 (HY000): Unknown error
|
Ocorreu um erro desconhecido. |
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of
|
O valor definido para o parâmetro |
ERROR 3159 (HY000): This RDS Proxy requires TLS connections.
|
Você habilitou a configuração Exigir Transport Layer Security no proxy, mas a conexão incluiu o parâmetro
|
ERROR 2026 (HY000): SSL connection error: Internal Server
|
Falha no handshake TLS para o proxy. Algumas razões possíveis incluem:
|
ERROR 9501 (HY000): Timed-out waiting to acquire database connection
|
O tempo limite do proxy foi atingido enquanto aguardava para adquirir uma conexão de banco de dados. Algumas razões possíveis incluem:
|
Você pode encontrar os problemas a seguir ao se conectar a um proxy do PostgreSQL.
Erro | Causa | Solução |
---|---|---|
|
O usuário tentou se conectar ao banco de dados usando a autenticação do IAM com a configuração |
O usuário precisa se conectar ao banco de dados usando a configuração mínima de |
|
O usuário habilitou a opção Exigir Transport Layer Security, mas tentou se conectar com |
Para corrigir esse erro, execute um dos seguintes procedimentos:
|
|
Esse erro pode ocorrer devido aos seguintes motivos:
|
Para corrigir esse erro, faça o seguinte:
|
|
Não há segredo do Secrets Manager para essa função. |
Adicione um segredo do Secrets Manager para essa função. |
|
O cliente de banco de dados que está sendo usado para se conectar ao proxy está usando um mecanismo de autenticação que não é compatível proxy no momento. |
Se você não estiver usando a autenticação do IAM, use somente a autenticação de senha MD5. |
|
O cliente de banco de dados que está sendo usado para se conectar ao proxy não está enviando um nome de usuário ao tentar estabelecer uma conexão. |
Defina um nome de usuário ao configurar uma conexão com o proxy usando o cliente PostgreSQL de sua escolha. |
|
O cliente PostgreSQL usado para se conectar ao proxy usa um protocolo mais antigo que 3.0. |
Use um cliente PostgreSQL mais recente que ofereça suporte ao protocolo de sistema de mensagens 3.0. Se você estiver usando a CLI |
|
O cliente PostgreSQL usado para se conectar ao proxy está tentando usar o modo de replicação de streaming, que não é compatível com o proxy do RDS no momento. |
Desative o modo de replicação de streaming no cliente PostgreSQL que está sendo usado para estabelecer a conexão. |
|
Pela mensagem de inicialização, o cliente PostgreSQL usado para se conectar ao proxy está solicitando uma opção que não é compatível com o proxy do RDS no momento. |
Desative a opção que está sendo mostrada como não compatível na mensagem acima no cliente PostgreSQL que está sendo usado para se conectar. |
|
O número de solicitações simultâneas com autenticação do IAM do cliente para o proxy excedeu o limite. |
Reduza a taxa na qual as conexões que usam a autenticação do IAM de um cliente PostgreSQL são estabelecidas. |
|
O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite. |
Reduza o número de conexões ativas de clientes PostgreSQL para esse proxy do RDS . |
|
A taxa de solicitações de conexão do cliente para o proxy excedeu o limite. |
Reduza a taxa na qual as conexões de um cliente PostgreSQL são estabelecidas. |
|
A senha para essa função não corresponde ao segredo do Secrets Manager. |
Verifique o segredo dessa função no Secrets Manager para ver se a senha é a mesma que está sendo usada no cliente PostgreSQL. |
|
Há um problema com o token do IAM usado para a autenticação do IAM. |
Gere outro token de autenticação e use-o em uma nova conexão. |
|
Um cliente tentou se conectar usando a autenticação do IAM, mas o SSL não estava habilitado. |
Habilite o SSL no cliente PostgreSQL. |
|
Ocorreu um erro desconhecido. |
Entre em contato com o AWS Support para investigar o problema. |
|
O tempo limite do proxy foi atingido enquanto aguardava para adquirir uma conexão de banco de dados. Algumas razões possíveis incluem:
|
As possíveis soluções são as seguintes:
|
|
A conexão de banco de dados estabelecida pelo proxy retornou um erro. |
A solução depende do erro específico do banco de dados. Um exemplo é: |