Esta página mostra-lhe como resolver problemas com o trabalho em rede do Dataflow.
Para mais informações sobre a configuração da rede para as suas tarefas do Dataflow, consulte os artigos Configure o acesso à Internet e as regras de firewall e Especifique uma rede e uma sub-rede.
Não é possível criar PoolableConnectionFactory
Ocorre o seguinte erro quando a tarefa do Dataflow precisa de se ligar a uma base de dados externa:
java.sql.SQLException: Cannot create PoolableConnectionFactory
(The connection attempt failed.)
Este problema ocorre quando o trabalhador do Dataflow não consegue estabelecer uma ligação com o servidor da base de dados, muitas vezes devido a uma regra de saída ou a uma firewall.
Para identificar a causa principal deste problema, crie e execute testes de conectividade. Os Connectivity Tests podem ajudar a identificar onde o tráfego está bloqueado.
Para atualizar as regras de saída, consulte o exemplo de regra de saída da firewall.
O tempo limite da ligação é excedido quando usa o Cloud NAT
O seguinte erro pode ocorrer quando a tarefa do Dataflow tenta estabelecer ligação a um serviço externo através de um gateway do Cloud NAT:
java.net.ConnectTimeoutException: Connection timed out
Este problema pode ocorrer se a tarefa do Dataflow estiver configurada para usar endereços IP externos quando a sua rede também estiver configurada para usar o Cloud NAT para tráfego de saída. Quando os trabalhadores do Dataflow têm endereços IP externos, tentam encaminhar o tráfego para a Internet diretamente, em vez de através do gateway Cloud NAT, o que pode originar tempos limite de ligação se as regras da firewall impedirem este acesso direto.
Para resolver este problema, configure os trabalhadores do Dataflow para não usarem endereços IP externos. Esta configuração ajuda a garantir que o tráfego de saída é encaminhado através do gateway do Cloud NAT configurado. Para mais informações, consulte a documentação do Cloud NAT.
Para obter informações sobre como desativar endereços IP externos, consulte o artigo Configure o acesso à Internet e as regras da firewall.
As referências entre projetos para este recurso não são permitidas
O seguinte erro ocorre quando executa uma tarefa do Dataflow numa rede de VPC partilhada:
Invalid value for field 'resource.properties.networkInterfaces[0].subnetwork':
'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'.
Cross-project references for this resource are not allowed.
Este problema ocorre se especificar uma sub-rede numa rede de VPC partilhada, mas o projeto de serviço não estiver associado ao projeto anfitrião da VPC partilhada.
Para resolver este problema, um administrador da VPC partilhada tem de anexar o projeto de serviço ao projeto anfitrião.
A instância tem de estar na mesma região que a sub-rede
O seguinte erro ocorre quando executa uma tarefa do Dataflow com uma sub-rede especificada:
Failed to start the VM, launcher-ID, used for launching because of status code: INVALID_ARGUMENT, reason: Invalid Error:
Message: Invalid value for field 'resource.networkInterfaces[0].subnetwork': 'https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK'. Instance must be in the same region as the subnetwork.
HTTP Code: 400.
Este problema ocorre quando o seu trabalho e a sub-rede especificada no seu trabalho estão em regiões diferentes.
Para resolver este problema, execute a tarefa na região em que a sub-rede se encontra.
Por exemplo, se a sua sub-rede estiver em us-central1
, execute a tarefa na região us-central1
.
O espaço de IP está esgotado
Quando cria uma tarefa do Dataflow ou aciona uma operação de escalamento automático, estas operações podem falhar com a seguinte mensagem:
IP_SPACE_EXHAUSTED: Instance 'INSTANCE_NAME' creation failed: IP space of 'projects/PROJECT/regions/REGION/subnetworks/SUBNETWORK' is exhausted.
Pode experimentar qualquer uma das seguintes estratégias para resolver este erro:
- Reduza o número de pedidos de trabalhadores para a tarefa do Dataflow.
Pode fornecer um número específico de trabalhadores definindo a opção
num_workers
pipeline ou pode definir um limite superior para o número de trabalhadores usando a opçãomax_num_workers
pipeline. Para mais informações, consulte as opções de pipeline. - Se possível, aumente o tamanho da sub-rede da tarefa do Dataflow. Para obter informações sobre como expandir uma sub-rede existente, consulte a documentação do Virtual Private Cloud.
- Use uma sub-rede diferente com endereços IP disponíveis suficientes para a tarefa do Dataflow.
- Se for viável, crie uma sub-rede dedicada com um número suficiente de endereços IP para tarefas do Dataflow.
A interface de rede tem de especificar uma sub-rede se o recurso de rede estiver no modo de sub-rede personalizado
O seguinte erro ocorre quando executa uma tarefa do Dataflow:
Workflow failed. Causes: Invalid Error: Message: Invalid value for field
'resource.properties.networkInterfaces[0].subnetwork': ''. Network interface
must specify a subnet if the network resource is in custom subnet mode. HTTP
Code: 400
Este problema ocorre se a rede VPC denominada default
tiver sido convertida de uma rede VPC de modo automático para uma rede VPC de modo personalizado.
Para resolver este problema, especifique o parâmetro da sub-rede quando usar uma rede VPC no modo personalizado. Para mais informações, consulte o artigo Especifique uma rede e uma sub-rede.
Não é possível aceder à rede
O seguinte erro ocorre quando tem endereços IP externos desativados e tenta executar uma tarefa do Dataflow:
NewConnectionError(''<pip._vendor.urllib3.connection.HTTPSConnection object at ID>:
Failed to establish a new connection: [Errno 101] Network is unreachable
Este problema ocorre porque a configuração do pipeline não permite ligações a endereços IP externos, mas o pipeline tem de se ligar a um IP externo para ser executado. As seguintes opções de pipeline desativam as ligações de IP externas:
Java
--usePublicIps=false
Python
--no_use_public_ips=true
Go
--no_use_public_ips=true
API
options = PipelineOptions(use_public_ips=False)
Para identificar onde o tráfego está bloqueado, crie e execute Connectivity Tests.
Para resolver este problema sem permitir ligações a endereços IP externos, faça uma ou mais das seguintes alterações.
- Configure uma solução NAT, como o Cloud NAT.
- Configure o acesso privado do Google.
- Se não conseguir configurar uma solução NAT, pode usar contentores personalizados para fornecer dependências de pipelines Python.
Para mais informações sobre a configuração do acesso à Internet para o Dataflow, consulte o artigo Acesso à Internet para o Dataflow.
A rede ou a sub-rede não está acessível à conta de serviço do Dataflow ou não existe
Ocorre um dos seguintes erros quando tenta executar uma tarefa do Dataflow. A tarefa falha.
Workflow failed. Causes: Network default is not accessible to Dataflow Service
account or does not exist
Workflow failed. Causes: Subnetwork SUBNETWORK is not
accessible to Dataflow Service account or does not exist
Este problema pode ocorrer pelos seguintes motivos:
- Omitiu os parâmetros de sub-rede e de rede quando criou a tarefa do Dataflow, mas não existe uma rede VPC de modo automático com o nome
default
no seu projeto. Pode não ter uma rede predefinida se esta tiver sido eliminada ou se uma restrição de política da organização impedir a criação de uma rede predefinida. - A sub-rede está em falta.
- O parâmetro subnetwork está especificado incorretamente.
- As autorizações necessárias para a conta de serviço do Dataflow estão em falta.
- Se estiver a usar uma VPC partilhada, o valor do projeto anfitrião tem de ser o projeto no qual a VPC está alojada. Para saber mais acerca da VPC partilhada, consulte a vista geral da VPC partilhada.
Para resolver este problema, siga as diretrizes para especificar uma rede e uma sub-rede.
O RPC excedeu o tempo limite ou não conseguiu estabelecer ligação nas portas 12345 ou 12346
Ocorre um dos seguintes erros quando executa uma tarefa do Dataflow que não usa o Streaming Engine nem o Dataflow Shuffle. A tarefa fica bloqueada ou falha.
Para trabalhos de streaming:
Rpc to WORKER_HARNESS:12345 completed with error
UNAVAILABLE: failed to connect to all addresses; last error : UNKNOWN:
ipv4:WORKER_IP_ADDRESS:12345: Failed to connect to remote
host: FD Shutdown
Para tarefas de lote:
(g)RPC timed out when SOURCE_WORKER_HARNESS talking to
DESTINATION_WORKER_HARNESS:12346.
Este problema ocorre se faltar uma regra de firewall que permita o tráfego de rede nas portas TCP 12345
e 12346
. Quando a tarefa usa vários trabalhadores, estes não conseguem comunicar entre si.
Para resolver este problema, consulte os passos de resolução de problemas em DEADLINE_EXCEEDED ou Servidor sem resposta.
O trabalhador único é iniciado e parado repetidamente
O seguinte problema ocorre quando inicia uma tarefa do Dataflow. Na página Métricas da tarefa da tarefa do Dataflow, o gráfico Utilização da CPU (todos os trabalhadores) mostra que um trabalhador é repetidamente iniciado e, em seguida, parado após alguns minutos. Só está disponível um trabalhador num determinado momento.
Ocorre o seguinte erro:
The Dataflow job appears to be stuck because no worker activity has been seen
in the last 1h. Please check the worker logs in Stackdriver Logging.
Não são criados registos de trabalhadores.
Nos registos de tarefas, podem aparecer várias mensagens semelhantes às seguintes:
Autoscaling: Raised the number of workers to 1 based on the rate of progress in
the currently running stage(s).
Este problema ocorre se a rede da VPC não tiver uma rota predefinida para a Internet e uma rota predefinida para a sub-rede.
Para resolver este problema, adicione trajetos predefinidos à sua rede da VPC. Para mais informações, consulte o artigo Acesso à Internet para o Dataflow.
Este problema também pode ocorrer se a conta de serviço do trabalhador gerida pelo utilizador e a tarefa do Dataflow estiverem em projetos diferentes. Para mais informações sobre como evitar este problema quando usar contas de serviço entre projetos, consulte as orientações oferecidas no passo 3 e no passo 4 do artigo Especifique uma conta de serviço de worker gerida pelo utilizador.
Se a sua rede VPC tiver rotas predefinidas e a conta de serviço do trabalhador gerida pelo utilizador e a tarefa do Dataflow estiverem no mesmo projeto, inicie sessão na VM do trabalhador da tarefa do Dataflow e verifique os registos no diretório /var/log/dataflow
para identificar o problema.
A sub-rede não tem acesso privado à Google
O seguinte erro ocorre quando inicia uma tarefa do Dataflow em que os endereços IP externos estão desativados:
Workflow failed. Causes: Subnetwork SUBNETWORK on project
PROJECT_ID network NETWORK in
region REGION does not have Private Google Access, which
is required for usage of private IP addresses by the Dataflow workers.
Este problema ocorre se desativar os endereços IP externos sem ativar o Acesso privado do Google.
Para resolver este problema, ative o acesso privado do Google para a sub-rede que a tarefa do Dataflow usa.
Não é possível criar um Dataflow com um intervalo de IPs especificado
O Dataflow não suporta a atribuição de um intervalo de IP estático às VMs de trabalho. Como solução alternativa, pode criar uma sub-rede com um intervalo de endereços IP específico e implementar a tarefa do Dataflow nessa sub-rede.
Para mais informações sobre a utilização de sub-redes com o Dataflow, consulte o artigo Especifique uma rede e uma sub-rede.
Para obter informações sobre a configuração de intervalos de IP em sub-redes, consulte o artigo Configure intervalos de IP de alias.
Para executar o pipeline na sub-rede, consulte o artigo Execute o pipeline com a sub-rede especificada.
Também pode ter de criar uma regra NAT e um router. Para mais informações, consulte o Cloud NAT.
O que se segue?
Para passos adicionais de resolução de problemas de rede, consulte o artigo Resolva problemas de conetividade interna entre VMs.