Depure a conetividade
Configurou a conetividade entre as bases de dados de origem e de destino, mas como sabe se estão associadas? Quando as comunicações entre eles falham, como pode descobrir o que correu mal e onde?
As ferramentas mais básicas são ping e traceroute.
Tchim-tchim
Ping realiza um teste básico para determinar se o destino ("anfitrião remoto") está disponível a partir da origem. Ping envia um pacote ICMP Echo Request para um anfitrião remoto e espera um ICMP Echo Reply em troca. Se ping não tiver êxito,
não existe um trajeto da origem para o destino. No entanto, o sucesso não significa que os seus pacotes consigam passar, apenas que, em geral, é possível alcançar o anfitrião remoto.
Embora o ping possa determinar se um anfitrião está ativo e a responder, não é
garantido que seja fiável. Alguns fornecedores de rede bloqueiam o ICMP como uma
precaução de segurança, o que pode dificultar a depuração da conetividade.
Traceroute
Traceroute testa o percurso completo que os pacotes de rede fazem de um anfitrião para outro. Mostra todos os passos ("saltos") que o pacote dá ao longo do caminho e quanto tempo demora cada passo. Se o pacote não chegar
ao destino, o traceroute não é concluído, mas
termina com uma série de asteriscos. Neste caso, procure o último endereço IP que foi alcançado com êxito ao longo do caminho. Foi aqui que a conetividade foi interrompida.
Traceroute pode expirar. Também pode falhar se um gateway ao longo do caminho não estiver configurado corretamente para transmitir o pacote ao próximo salto.
Quando a traceroute não é concluída, pode conseguir descobrir
onde parou. Encontre o último endereço IP apresentado no resultado traceroute
e faça uma pesquisa no navegador por who owns [IP_ADDRESS]. Os resultados podem ou não mostrar o proprietário da morada, mas vale a pena tentar.
mtr
A ferramenta mtr é uma forma de traceroute que permanece
ativa e é atualizada continuamente, de forma semelhante ao funcionamento do comando top
para processos locais.
Localize o seu endereço IP local
Se não souber o endereço local do seu anfitrião, execute o comando
ip -br address show. No Linux, isto mostra a interface de rede,
o estado da interface, o IP local e os endereços MAC. Por exemplo:
eth0 UP 10.128.0.7/32 fe80::4001:aff:fe80:7/64.
Em alternativa, pode executar ipconfig ou ifconfig para ver o estado das suas interfaces de rede.
Localize o endereço IP de saída
Se não souber o endereço IP que as bases de dados de origem e de destino usam para comunicar entre si (o endereço IP de saída), conclua os seguintes passos:
Aceda à página Clusters do AlloyDB no Google Cloud console.
Localize o cluster associado à tarefa de migração que está a depurar.
O IP de saída deve aparecer junto ao nome da instância principal do cluster.
Abra portas locais
Para verificar se o seu anfitrião está a ouvir nas portas que pensa que está, execute o comando ss -tunlp4. Isto indica que portas estão abertas e
a escutar.
Por exemplo, se tiver uma base de dados PostgreSQL em execução, a porta 5432 deve estar
em funcionamento e a ouvir. Para o SSH, deve ver a porta 22.
Toda a atividade da porta local
Use o comando netstat para ver toda a atividade da porta local. Por exemplo, netstat -lt mostra todas as portas atualmente ativas.
Ligue-se ao anfitrião remoto através do telnet
Para verificar se consegue estabelecer ligação ao anfitrião remoto através do TCP, execute o comando telnet. O Telnet tenta estabelecer ligação ao endereço IP e à porta que lhe indicar.
telnet 35.193.198.159 5432.
Se tiver êxito, vê o seguinte:
Trying 35.193.198.159...
Connected to 35.193.198.159.
.
Em caso de falha, o telnet deixa de responder até forçar o encerramento
da tentativa:
Trying 35.193.198.159...
^C.
.
Autenticação do cliente
A autenticação do cliente é controlada por um ficheiro de configuração denominado
pg_hba.conf (HBA significa autenticação baseada no anfitrião).
Certifique-se de que a secção de ligações de replicação do ficheiro pg_hba.conf
na base de dados de origem é atualizada para aceitar ligações do intervalo de endereços IP da VPC do AlloyDB.
Cloud Logging
O Database Migration Service e o AlloyDB usam o Cloud Logging. Consulte a documentação do Cloud Logging para ver informações completas e reveja as consultas de exemplo do Cloud SQL.Ver registos
Pode ver registos de instâncias do AlloyDB e outros Google Cloud projetos, como instâncias do Cloud VPN ou do Compute Engine. Para ver os registos das entradas de registo da sua instância do AlloyDB:Consola
- Aceda ao Explorador de registos
- Selecione um projeto do AlloyDB existente na parte superior da página.
- No criador de consultas, adicione o seguinte:
- Recurso: selecione Base de dados do AlloyDB. Na caixa de diálogo, selecione uma instância do AlloyDB.
- Nomes dos registos: desloque a página até à secção do AlloyDB e selecione os ficheiros de registo adequados para a sua instância. Por exemplo:
- alloydb.googlapis.com/postgres.log
- Gravidade: selecione um nível de registo.
- Intervalo de tempo: selecione uma predefinição ou crie um intervalo personalizado.
gcloud
Use o comando gcloud logging
para ver as entradas do registo. No exemplo abaixo, substitua PROJECT_ID.
A flag limit
é um parâmetro opcional que indica o número máximo de entradas a
devolver.
gcloud logging read "projects/[PROJECT_ID]/logs/alloydb.googleapis.com/postgres.log" --limit=10
Resolução de problemas da VPN
Consulte a página de Google Cloud resolução de problemas da VPN na nuvem.
Resolva problemas de erros de proxy TCP
A forma como o proxy TCP está configurado também pode gerar erros. Para resolver um problema de proxy TCP, consulte os seguintes exemplos de problemas e como podem ser resolvidos:
Falha ao iniciar a máquina virtual (VM)
É apresentada a seguinte mensagem quando inicia a instância de VM no Compute Engine:
You do not currently have an active account selected.
Coisas a experimentar
Execute um dos seguintes comandos para configurar uma conta ativa:
Para obter novas credenciais, execute o seguinte comando:
gcloud auth loginPara selecionar uma conta já autenticada, execute o seguinte comando:
gcloud config set account ACCOUNTSubstitua ACCOUNT pelo nome da conta que quer configurar.
Falha ao estabelecer ligação à instância da base de dados de origem
É apresentada a seguinte mensagem de erro quando testa a tarefa de migração:
Failure connecting to the source database. Make sure the connectivity information on the connection profile is correct and the source database is reachable.
Coisas a experimentar
Itere os seguintes passos para compreender onde pode estar o problema:
Verifique se a VM que aloja o contentor do proxy TCP está em execução:
Na consola, aceda à página Instâncias de VM do Compute Engine.
Pesquise a VM que foi criada como parte do processo de configuração do proxy. Se não estiver listado ou não estiver em execução, configure o proxy TCP de raiz e atualize as definições da instância de origem na tarefa de migração com o endereço IP correto.
Se a VM estiver em execução, verifique se não ocorreu nenhum erro ao transferir a imagem do contentor do proxy TCP:
- Selecione a VM criada como parte do processo de configuração do proxy TCP. Em Registos, clique em Porta de série 1 (consola).
Se não conseguir ver a entrada
Launching user container 'gcr.io/dms-images/tcp-proxy'nos registos, o problema pode ser que a sua instância não conseguiu obter a imagem do Container Registry. Para verificar se é este o caso, ligue-se à VM e tente extrair manualmente a imagem do Container Registry através do seguinte comando:docker pull gcr.io/dms-images/tcp-proxySe vir o seguinte erro:
Error response from daemon: Get "https://gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), significa que a sua VM não conseguiu estabelecer ligação ao Container Registry. Se a sua VM tiver apenas um endereço IP privado, tem de ativar o acesso privado à Google na sub-rede da qual o endereço IP faz parte. Caso contrário, a VM não tem acesso às APIs Google Enterprise, como o Container Registry.
Verifique se o contentor consegue estabelecer ligação à instância de origem:
Selecione a VM que foi criada como parte do processo de configuração do proxy. Em Registos, clique em Cloud Logging.
Se vir a seguinte mensagem:
Connection refused, please verify that the machine you are using to run the script can connect to the source database at, significa que o contentor do proxy TCP não conseguiu estabelecer ligação à instância da base de dados de origem. Existem vários motivos para que isto aconteça:- O endereço IP da instância de origem está incorreto.
- Existe uma política de firewall que recusa ligações do proxy TCP à instância de origem.
- A instância de origem está numa rede da nuvem virtual privada (VPC) diferente da VM que aloja o proxy TCP.
Pode depurar o problema de conetividade através dos testes de conetividade do Google Cloudpara se certificar de que existe conetividade entre a base de dados de destino e a VM que aloja o proxy TCP:
Na consola, aceda à página Testes de conetividade.
Clique em Criar teste de conetividade.
Introduza um nome para o teste.
Selecione TCP como o protocolo.
Selecione Endereço IP na lista Ponto final de origem. Introduza o endereço IP público do proxy TCP recém-criado se a base de dados de origem for acessível através de um endereço IP público; caso contrário, introduza o endereço IP privado do proxy TCP.
Selecione Endereço IP na lista Ponto final de destino e introduza o endereço IP da base de dados de origem.
Introduza o número da porta usado para estabelecer ligação à base de dados de origem no campo Porta de destino.
Clique em Criar.
Execute o teste de conetividade e resolva quaisquer problemas de conetividade que surjam. Depois de corrigir o problema de conetividade, verifique se o proxy TCP consegue estabelecer ligação à instância de origem:
Aceda a Instâncias de VM no Compute Engine.
Selecione a VM que foi criada como parte do processo de configuração do proxy. Em Registos, clique em Cloud Logging.
Se vir a entrada de registo
Connection to source DB verified, significa que o proxy TCP já pode estabelecer ligação à instância de origem.
Verifique se o teste de migração não está a falhar devido a problemas de ligação.
Falha ao estabelecer ligação à instância da base de dados de destino
Se o contentor do proxy TCP conseguir estabelecer ligação à instância de origem, mas o teste de migração continuar a falhar devido a problemas de ligação, o problema pode estar na conetividade entre a instância de destino e a VM que aloja o contentor do proxy TCP.
Corrija o problema
Para depurar o problema, pode usar os testes de conetividade do Google Cloudpara se certificar de que existe conetividade entre a base de dados de destino e a VM que aloja o proxy TCP:
Na consola, aceda à página Testes de conetividade.
Clique em Criar teste de conetividade.
Defina os seguintes parâmetros para o teste:
- Introduza um nome para o teste.
- Selecione TCP como o protocolo.
- Selecione Endereço IP na lista Ponto final de origem e introduza o endereço IP do cluster do AlloyDB recém-criado.
- Selecione Endereço IP na lista Ponto final de destino e introduza o endereço IP privado do proxy TCP.
- Introduza 5432 no campo Porta de destino.
Clique em Criar.
Execute o teste de conetividade e resolva quaisquer problemas de conetividade que surjam.
Causas possíveis
Existe uma regra de firewall que nega a comunicação entre a instância de destino e a VM de proxy TCP.
Coisas a experimentar
Adicione uma regra de firewall que permita à instância de destino comunicar com o proxy TCP através da porta 5432.
Causas possíveis
Existe uma incompatibilidade de VPC entre a instância de destino e a VM que executa o contentor de proxy TCP.
Coisas a experimentar
Selecione a mesma VPC para a instância de destino.
Resolução de problemas de túnel SSH inverso
O túnel SSH é um método para encaminhar algumas comunicações com base numa ligação SSH. Os túneis SSH inversos permitem configurar um túnel SSH, mas mantendo que a rede de destino é a que inicia a ligação do túnel. Isto é útil quando não quer abrir uma porta na sua própria rede para fins de segurança.
O que está a tentar alcançar é configurar o seguinte: AlloyDB DB ---> Compute Engine VM bastion ---> tunnel ---> source network bastion ---> source DB
Presume-se que:
O AlloyDB destination pode aceder ao Compute Engine VM bastion.
O source network bastion pode aceder ao source DB (isto é conseguido através da interligação da rede do AlloyDB com a rede da VM do Compute Engine).
Em seguida, configura um túnel SSH do source network bastion para o Compute Engine VM bastion, que encaminha todas as ligações recebidas para alguma porta no Compute Engine VM bastion através do túnel para o source DB.
Cada link no cenário acima pode ser configurado incorretamente e impedir que todo o fluxo funcione. Resolva os problemas de cada link, um de cada vez:
source network bastion ---> source DB
- Estabeleça ligação ao source network bastion através de SSH ou a partir do terminal, se for a máquina local.
- Teste a conetividade à base de dados de origem através de um dos seguintes métodos:
telnet [source_db_host_or_ip] [source_db_port]: espere ver as strings de ligação do telnet, que terminam comConnected to x.x.x.x.[db_client] -h[source_db_host_or_ip] -P[source_db_port]- expect to see access denied
Se isto falhar, tem de verificar se ativou o acesso a partir deste bastion à base de dados de origem.
Compute Engine VM bastion ---> source DB
- SSH para o Compute Engine VM bastion (usando
gcloud compute ssh VM_INSTANCE_NAME) - Teste a conetividade à base de dados de origem através de um dos seguintes métodos:
telnet 127.0.0.1 [tunnel_port]: espere ver as strings de ligação telnet, que terminam comConnected to x.x.x.x.[db_client] -h127.0.0.1 -P[tunnel_port]– Vai ver que o acesso foi recusado
Se esta ação falhar, tem de verificar se o túnel está a funcionar corretamente.
A execução de sudo netstat -tupln mostra todos os processos de escuta nesta VM e deve ver sshd listening on the tunnel_port.
AlloyDB DB ---> source DB
A melhor forma de testar esta opção é através da testing the migration job do Database Migration Service.
Se esta ação falhar, significa que existe um problema com o intercâmbio da VPC ou o encaminhamento
entre a rede do AlloyDB e a rede Compute Engine VM bastion.
A firewall do servidor da base de dados de origem tem de ser configurada para permitir todo o intervalo de IP interno atribuído para a ligação de serviço privado da rede VPC que a instância de destino do AlloyDB vai usar como o campo privateNetwork das respetivas definições de ipConfiguration.
Para encontrar o intervalo de IPs internos na consola:
Aceda à página Redes VPC na Google Cloud consola.
Selecione a rede de VPC que quer usar.
Selecione Acesso a serviços privados > Intervalos de IP atribuídos para serviços.
Encontre o intervalo de IPs internos associado à ligação criada por servicenetworking-googleapis-com.
Também pode ver o tráfego entre a instância do AlloyDB e a instância da VM do Compute Engine na consola do Cloud Logging no projeto Cloud VPN gateway. Nos registos de VMs do Compute Engine,
procure tráfego proveniente da instância do AlloyDB. Nos registos da instância do AlloyDB, procure tráfego da VM do Compute Engine.