Este tópico aborda os motivos mais comuns pelos quais uma instância do Elastic Compute Service (ECS) não consegue se conectar a uma instância do ApsaraDB RDS for MySQL e como corrigir cada um deles.
Referência rápida
Identifique sua situação para encontrar a solução:
|
Situação |
Causa provável |
Acesse |
|
O ECS está em uma vpc; o RDS está na rede clássica |
Incompatibilidade de tipo de rede |
|
|
O ECS está na rede clássica; o RDS está em uma vpc |
Incompatibilidade de tipo de rede |
|
|
Tanto o ECS quanto o RDS estão em vpcs, mas em vpcs diferentes |
Isolamento de vpc |
|
|
O ECS e o RDS estão em regiões ou contas da Alibaba Cloud diferentes |
Roteamento entre regiões ou entre contas |
|
|
O tipo de rede e a vpc correspondem, mas a conexão ainda falha |
Configuração incorreta da lista de permissões |
Configurações incorretas da lista de permissões de endereços IP |
|
A conexão expira ou o nome do host não pode ser resolvido |
Problema de DNS |
|
|
A instância RDS travou durante a troca |
Problema no estado da instância |
Tipos de rede diferentes
As instâncias do ApsaraDB RDS for MySQL e as instâncias do ECS devem estar no mesmo tipo de rede para se comunicarem por uma rede interna.
O ECS está em uma vpc; o RDS está na rede clássica
-
Método 1 (recomendado): Migre a instância RDS para a virtual private cloud (vpc) onde a instância do ECS reside. Consulte Change the network type of an ApsaraDB RDS instance.
NotaSe ambas as instâncias estiverem em vpcs, elas devem estar na mesma vpc para se comunicarem por uma rede interna.
Método 2: Adquira uma nova instância do ECS na rede clássica. Não é possível migrar instâncias do ECS de uma vpc de volta para a rede clássica. Uma vpc é mais segura que a rede clássica.
Método 3: Conecte-se usando o public endpoint da instância RDS. Este método não garante desempenho, segurança ou estabilidade ideais.
O ECS está na rede clássica; o RDS está em uma vpc
-
Método 1 (recomendado): Migre a instância do ECS para a vpc onde a instância RDS reside.
NotaSe ambas as instâncias estiverem em vpcs, elas devem estar na mesma vpc para se comunicarem por uma rede interna.
-
Método 1: Migre a instância do ECS para a vpc à qual a instância RDS pertence. Este é o método recomendado.
NotaSe a instância do ECS e a instância RDS residirem em vpcs, elas devem residir na mesma vpc para se comunicarem entre si por uma rede interna.
Método 2: Migre a instância RDS para a rede clássica. Uma vpc é mais segura que a rede clássica.
Método 3: Use ClassicLinkOverview of ClassicLink para estabelecer uma conexão de rede interna entre a instância do ECS e a instância RDS.
Método 4: Conecte-se usando o public endpoint da instância RDS. Este método não garante desempenho, segurança ou estabilidade ideais.
vpcs diferentes
As vpcs são logicamente isoladas umas das outras. Mesmo que tanto a instância do ECS quanto a instância RDS estejam em vpcs, elas devem estar na mesma vpc para se comunicarem por uma rede interna.
Método 1 (recomendado): Mova ambas as instâncias para a mesma vpc. Altere the vpc of the RDS instance ou the vpc of the ECS instance.
Método 2: Crie uma instância do Cloud Enterprise Network (CEN) para estabelecer uma conexão privada entre as duas vpcs. Consulte Use CEN to enable intra-region network communication.
Método 3: Conecte-se pela Internet usando o endpoint público da instância RDS. Este método não garante desempenho, segurança ou estabilidade ideais.
Regiões diferentes
Quando a instância do ECS e a instância RDS estão em regiões diferentes ou pertencem a contas da Alibaba Cloud diferentes, o roteamento de rede interna fica indisponível por padrão. As seguintes opções estão disponíveis.
Conexão baseada na Internet
Solicite e use o public endpoint da instância RDS. O tráfego de entrada e saída da Internet gerado na instância RDS não é cobrado.
Conexão baseada em rede interna
Use conexões de peering de vpc ou uma instância do CEN para conectar as vpcs entre regiões ou contas:
|
Opção |
Custo |
Complexidade de configuração |
Mais indicado para |
|
Baixo |
Mais complexa |
Cenários simples com poucas vpcs |
|
|
Alto |
Mais simples |
Cenários complexos com muitas vpcs |
Conectar-se a uma instância RDS a partir de um data center on-premises
Para se conectar a uma instância RDS a partir de um data center on-premises (IDC) por uma rede interna, primeiro conecte sua rede on-premises a uma vpc na Alibaba Cloud usando um dos seguintes métodos:
VPN gateway: Crie um VPN gateway e estabeleça uma conexão site-to-site IPsec-VPN para conectar sua rede on-premises à vpc.
Smart Access Gateway (SAG): Implante um dispositivo SAG em seu data center on-premises para conectar sua rede on-premises à vpc.
Express Connect (linha dedicada): Use uma conexão física dedicada para conectar seu data center on-premises à vpc na Alibaba Cloud.
Depois que a rede on-premises estiver conectada à vpc, use o endpoint interno da instância RDS para estabelecer a conexão. Se você precisar se conectar entre regiões, use o Cloud Enterprise Network (CEN) para ative a interconexão de vpcs entre regiões. Um roteador de trânsito do CEN suporta a anexação de uma conexão IPsec de VPN gateway e de uma instância de rede SAG.
Configurações incorretas da lista de permissões de endereços IP
Os problemas mais comuns relacionados à lista de permissões estão listados abaixo.
A lista de permissões padrão não permite conexões
A lista de permissões padrão contém apenas 127.0.0.1, o que bloqueia todo o acesso externo. Adicione os endereços IP que precisam de acesso à instância RDS. Consulte Configure an IP address whitelist for an ApsaraDB RDS for MySQL instance.
A lista de permissões contém 0.0.0.0/0
Adicionar 0.0.0.0/0 à lista de permissões permite o acesso de todos os endereços IP. Prossiga com cautela.
O modo de lista de permissões aprimorado está ativado
Se o enhanced whitelist mode estiver ativado, o tipo de lista de permissões deve corresponder ao caminho de conexão:
|
Caminho de conexão |
IP a ser adicionado |
Tipo de lista de permissões |
|
RDS em uma vpc, conectado via endpoint interno |
Endereço IP privado da instância do ECS |
Tipo vpc |
|
RDS na rede clássica, conectado via endpoint interno |
Endereço IP privado da instância do ECS |
Tipo de rede clássica |
|
RDS na rede clássica, conectado via Internet |
Endereço IP público da instância do ECS |
Tipo de rede clássica |
O endereço IP público na lista de permissões não está funcionando
Duas causas comuns:
O endereço IP público é dinâmico e mudou desde que você o adicionou.
A ferramenta ou site usado para consultar o endereço IP público retornou um resultado impreciso.
Para obter ajuda sobre como conseguir o endereço IP público correto, consulte:
Falhas na resolução de nomes de domínio
Se os servidores do Domain Name System (DNS) estiverem com falha ou se a configuração do controlador de interface de rede (NIC) tiver sido alterada, o nome do host do RDS poderá não ser resolvido ou ser resolvido para o endereço IP errado.
Testar a conectividade
Execute os seguintes comandos a partir da instância do ECS, substituindo <Domain name> pelo endpoint interno ou público do RDS e <Port number> pela porta do banco de dados:
ping <Domain name>
telnet <Domain name> <Port number>
O macOS não inclui o Telnet por padrão. Para testar a conectividade da porta no macOS, execute nc -vz <Domain name> <Port number>.
Se a conectividade falhar, o problema provavelmente está na resolução de DNS ou na configuração de rede. Prossiga para corrigir as configurações de DNS da NIC abaixo.
Corrigir as configurações de DNS da NIC
-
Abra o arquivo de configuração da NIC no modo de edição:
NotaExecute
ifconfigpara encontrar o nome do arquivo de configuração da NIC. O padrão éifcfg-eth0.vi /etc/sysconfig/network-scripts/<NIC configuration file name> -
Adicione as seguintes configurações de DNS ao final do arquivo. Se
DNS1eDNS2já existirem, atualize seus valores:DNS1=100.100.XX.XX DNS2=100.100.XX.XX -
Reinicie o service de rede:
sudo systemctl restart network -
Verifique se a alteração teve efeito:
cat /etc/resolv.conf
O endpoint não pode ser resolvido após reinicialização, restauração ou alteração de DNS da instância
Após a reinicialização ou restauração de uma instância RDS, ou após a alteração de suas configurações de DNS, um cliente pode relatar que o endpoint público não pode ser resolvido ou apresentar outro comportamento anormal de resolução de DNS. Os testes de Ping ou Telnet no endereço IP ainda podem ter sucesso.
A propagação do DNS pode levar de vários minutos a dezenas de minutos. Durante esse período, um cache de DNS local obsoleto ou um atraso na propagação global do DNS pode impedir que o cliente resolva o endereço mais recente.
Aguarde a conclusão da propagação do DNS e tente novamente a conexão usando o endpoint público.
Para isolar o problema de DNS, use temporariamente o endereço IP em um cliente como o Navicat. Se o endereço IP funcionar, mas o endpoint público não, continue solucionando problemas de resolução e cache de DNS.
Atualize a configuração ou o cache de DNS no cliente ou servidor. Siga as etapas em Corrigir as configurações de DNS da NIC, resolva o endpoint público novamente e reteste a conexão.
Instância RDS no estado Creating Network Connection
Acesse a página Tasks no console do ApsaraDB RDS, localize a tarefa no estado Creating Network Connection e clique em Retry ou Modify switching time. Consulte Use Task Center.
Perguntas frequentes
Por que os testes de Ping e Telnet têm sucesso enquanto o aplicativo não consegue se conectar?
Um teste de Ping bem-sucedido mostra que o host responde a solicitações ICMP, e um teste de Telnet bem-sucedido mostra que a porta do banco de dados está acessível. Se o aplicativo ainda não conseguir se conectar, conclua as seguintes verificações:
Descarte comportamentos anormais ou problemas de configuração em ferramentas gráficas como o Navicat. Use a CLI do MySQL para um teste de conexão de baixo nível:
mysql -h <endpoint> -P <port> -u <username> -p.Se o comando for bem-sucedido, a conexão de rede e as permissões da conta testada estão funcionando. Verifique a versão do driver do banco de dados, o formato da string de conexão, o endpoint, a porta, o nome do banco de dados, o nome de usuário e a senha no aplicativo Java ou em outro código de aplicativo.
Não use contas do sistema cujos nomes começam com
dmspara testes de conexão de negócios. Crie uma conta privilegiada ou uma conta de negócios padrão no console, teste a conexão com ela e verifique se a conta tem acesso ao banco de dados de destino.
Se o comando também falhar, continue com a solução de problemas de rede, lista de permissões, porta e conta neste documento.