Por padrão, o Realtime Compute for Apache Flink não acessa a internet pública. Este tópico aborda perguntas frequentes sobre acesso à internet pública, conectividade entre VPCs, resolução de DNS e testes de rede.
Solucionar problemas de rede
O Realtime Compute for Apache Flink é implantado em uma VPC específica, que não pode ser modificada após a ativação do workspace. Se sua source ou sink estiver em um ambiente de rede diferente, a comunicação falhará.
Siga estas etapas para diagnosticar e resolver problemas relacionados à rede:
Teste a conectividade: Use o recurso de sonda de rede no console do Flink para verificar a comunicação entre o workspace do Flink e seus serviços upstream ou downstream. Consulte Executar uma sonda de rede.
-
Verifique o acesso à rede: Por padrão, o Flink acessa apenas serviços na mesma região e VPC.
Acesso entre VPCs: Consulte Acessar serviços entre VPCs.
Acesso à internet pública: Use um NAT gateway para conectar sua VPC à internet; consulte Acessar a internet.
Configure listas de permissões: Garanta que os grupos de segurança ou firewalls dos seus serviços upstream/downstream permitam tráfego do seu workspace do Flink. Configurar listas de permissões para serviços upstream e downstream.
Ajuste as configurações de conexão: Se ocorrerem erros persistentes de tempo limite apesar da configuração correta da rede, aumente a opção
connect.timeoutna sua instrução DDL.
Executar uma sonda de rede
O Realtime Compute for Apache Flink oferece um recurso integrado de sonda de rede para teste de conectividade. Procedimento:
Acesse o Portal de Gerenciamento do Realtime Compute for Apache Flink.
Na coluna Actions do workspace desejado, clique em Console.
-
Clique no ícone Network Detection no canto superior direito da barra de navegação superior.

-
Insira o endpoint ou endereço IP e a porta de um serviço e clique em Detect.
ImportanteAo inserir um endpoint em Host, remova
:<port>e insira o número da porta no campo Port.
Se a sonda de rede retornar um erro "connect timed out", provavelmente o workspace do Flink não tem as permissões de rede necessárias para alcançar o endpoint de destino. Por padrão, o Flink acessa apenas serviços na mesma VPC. Verifique se o endpoint de destino não é um endereço de internet pública ou se está localizado em uma VPC diferente. Caso precise de acesso entre VPCs ou à internet pública, consulte Acessar serviços entre VPCs e Acessar a internet.
Obter o endpoint do Hologres
Acesse o console do Hologres. Na página Instances, clique na instância desejada.
-
Na página Instance Details, localize o endpoint na seção Network Information. Escolha o endpoint correspondente à sua topologia de rede:
Tipo de rede
Caso de uso
Dedicated VPC (Recomendado)
Uma rede privada conectada a uma VPC específica.
-
Mesma VPC (Recomendado): Se a instância do Hologres e o workspace do Flink estiverem na mesma VPC, eles podem se comunicar diretamente.
-
VPC diferente: Se estiverem em VPCs diferentes, configure a rede entre VPCs. Para mais informações, consulte Acessar serviços entre VPCs.
Public Network
Uma rede pública sem restrições de acesso. A latência pode ser maior e menos previsível do que no acesso via VPC.
Para mais informações, consulte Acessar a internet pública.
-
-
(Opcional) Execute uma sonda de rede no console do Flink para verificar a conectividade. Para mais informações, consulte Executar uma sonda de rede.
Sonda bem-sucedida: O endpoint está correto e a rede está conectada.
Falha na sonda: Verifique se a instância do Hologres e o workspace do Flink estão em VPCs diferentes ou se requerem acesso à internet pública.
Acessar a internet
O acesso à internet pública geralmente apresenta latência mais alta e volátil em comparação à comunicação interna via VPC. Para cargas de trabalho que exigem latência e estabilidade rigorosas, priorize a conectividade baseada em VPC.
Utilize um NAT Gateway da Alibaba Cloud para conectar sua VPC à internet pública. Isso permite que o workspace do Flink alcance fontes de dados hospedadas fora da sua rede privada. Para detalhes, consulte Fontes de dados públicas.
Verificar a largura de banda da internet
Se o seu job apresentar métricas normais e ausência de backpressure, mas o throughput permanecer abaixo do esperado, a largura de banda da internet pode ser o gargalo.
Siga estas etapas para diagnosticar limites de largura de banda:
No console do Realtime Compute for Apache Flink, clique em Details na coluna Actions.
Na caixa de diálogo Workspace Details, anote o VPC ID.
Acesse o console da VPC e clique no ID da VPC desejada.
-
Na página de detalhes da VPC, selecione a aba Resource Management. Na seção Access to Internet, clique no número abaixo de Internet NAT Gateway.
Nota0 indica que você ainda não possui uma instância de Internet NAT Gateway.
Clique no ID do NAT gateway da internet desejado.
Na página de detalhes, alterne para a aba Associated EIP e clique no ID da instância EIP.
Na página de detalhes da instância EIP, selecione a aba Monitoring and O&M para visualizar a largura de banda.
Acessar serviços entre VPCs
Para obter desempenho ideal e simplificar a rede, recomendamos implantar seus serviços na mesma VPC do seu workspace do Flink. Se você já implantou recursos, considere o seguinte:
Colocação de serviços: Se os serviços estiverem na fase de planejamento, provisione-os na mesma VPC do seu workspace do Flink.
Migração de workspace: Se aplicável, libere seu workspace atual do Flink e crie um novo na mesma VPC dos seus serviços existentes.
Conectividade entre VPCs: Para serviços que precisam permanecer em uma VPC separada, configure a rede entre VPCs. Para detalhes, consulte Conectar VPCs.
Configurar lista de permissões para serviços upstream e downstream
Geralmente, os serviços upstream e downstream negam acesso proveniente do Flink. Adicione o bloco CIDR do vSwitch configurado para o seu workspace do Flink à lista de permissões de cada serviço de destino.
Acesse o Portal de Gerenciamento do Realtime Compute for Apache Flink.
Na coluna Actions do workspace desejado, clique em Details.
Na caixa de diálogo Workspace Details, na seção vSwitch, anote o CIDR Block do vSwitch.

-
Adicione o bloco CIDR do vSwitch à lista de permissões do seu serviço upstream ou downstream de destino.
Por exemplo, para configurar uma lista de permissões para uma instância do ApsaraDB RDS for MySQL, consulte Configurar uma lista de permissões para uma instância do RDS.
NotaDimensionamento de vSwitch: Se você adicionar mais vSwitches ao seu workspace, repita o processo de configuração para cada novo vSwitch.
Conectividade entre zonas: Se o seu vSwitch e os serviços upstream/downstream estiverem em zonas diferentes, ainda será possível habilitar a conectividade adicionando o bloco CIDR do vSwitch à lista de permissões do serviço.
Resolver nomes de domínio para dependências de jobs do Flink
Se seus jobs referenciam serviços externos por nome de domínio, podem ocorrer erros de resolução de DNS durante a migração de clusters autogerenciados para o Realtime Compute for Apache Flink. Utilize os métodos a seguir para resolver esses problemas:
-
Método A: Usar um servidor DNS autogerenciado
Se a VPC do seu Flink puder alcançar um servidor DNS autogerenciado, configure o workspace do Flink para utilizá-lo.
Acesse o Portal de Gerenciamento do Realtime Compute for Apache Flink.
Na coluna Actions do workspace desejado, clique em Console.
-
No painel de navegação à esquerda, escolha . Na aba Deployment Defaults, localize Other Configuration e adicione o código a seguir.
env.java.opts: >- -Dsun.net.spi.nameservice.provider.1=default -Dsun.net.spi.nameservice.provider.2=dns,sun -Dsun.net.spi.nameservice.nameservers=192.168.0.1(Substitua 192.168.0.1 pelo IP real do seu servidor DNS; separe vários IPs por vírgulas.)
Clique em Save Changes.
-
Reimplante seu job.
NotaCompatibilidade do mecanismo: Esta configuração não é suportada em mecanismos baseados em JDK 11.
Solução de problemas: Se o erro
UnknownHostExceptionpersistir, entre em contato com o suporte técnico da Alibaba Cloud. Se o job encontrar timeouts frequentes de heartbeat doJobManager, consulte Erro: Timeout de heartbeat do JobManager.
-
Método B: Usar o Alibaba Cloud DNS
Se você não tiver um servidor DNS autogerenciado ou se a VPC do Flink não conseguir alcançar seu servidor DNS existente, use o Alibaba Cloud DNS para resolver os nomes de domínio dos seus serviços.
Como forçar a resolução de DNS a usar IPv4?
Quando o nome de domínio de um serviço de backend resolve para um endereço IPv6, as conexões podem falhar. Você pode adicionar um parâmetro JVM para forçar a pilha de protocolos IPv4.
Adicione o seguinte parâmetro em Other Configuration:
env.java.opts: '-Djava.net.preferIPv4Stack=true'
Esse parâmetro pode ser aplicado em dois níveis:
Por job: Na página O&M, clique no job desejado e acesse . Para mais informações, consulte Parâmetros.
Para todo o workspace: Acesse .
Salve a configuração e reinicie o job para que as alterações entrem em vigor.
Erro: Timeout de heartbeat do JobManager
-
Sintoma
Após configurar um servidor DNS autogerenciado para resolução de domínios, os jobs frequentemente sofrem failover com um erro de
JobManager heartbeat timeout. -
Causa
Alta latência de DNS: A latência entre os TaskManagers e o servidor DNS autogerenciado causa atrasos que interrompem o sinal de heartbeat entre o JobManager e os TaskManagers.
-
Solução
Desative a resolução de hostname para os TaskManagers a fim de ignorar a consulta DNS durante as verificações de heartbeat. Adicione o seguinte à configuração do seu job:
jobmanager.retrieve-taskmanager-hostname: false. Essa configuração não afeta a capacidade do job de se conectar a serviços externos por nome de domínio. Para instruções detalhadas, consulte Configurar parâmetros de execução personalizados.
Por que o Kafka retorna timeout de metadados mesmo com a rede conectada?
A conectividade de rede entre o Flink e o Kafka não garante que o Flink consiga ler dados do Kafka. O Flink se conecta ao servidor bootstrap do Kafka para recuperar metadados do cluster, que contêm os endpoints anunciados de cada broker. O Flink precisa conseguir alcançar esses endpoints anunciados para ler dados.
Mesmo que a conexão inicial de bootstrap seja bem-sucedida, a transferência de dados falhará se os endpoints anunciados nos metadados do broker forem inalcançáveis a partir da VPC do Flink. Para mais informações, consulte Kafka Client Cannot Connect to Broker.
Para diagnosticar esse problema:
Use
zkCli.shouzookeeper-shell.shpara se conectar ao cluster ZooKeeper usado pelo Kafka.Execute
ls /brokers/idspara listar todos os IDs de brokers do Kafka.Execute
get /brokers/ids/{your_broker_id}para visualizar os metadados do broker. As informações de endpoint estão no campolistener_security_protocol_map.-
Verifique se o Flink consegue alcançar o endpoint listado nos metadados do broker.
Se o endpoint usar um nome de domínio, configure a resolução de DNS para o seu workspace do Flink. Para mais informações, consulte Resolver nomes de domínio para dependências de jobs do Flink.