Configuração de rede de cluster do Dataproc

Visão geral

As instâncias de máquina virtual do Compute Engine em um cluster do Dataproc que consistem em VMs mestras e workers precisam ser capazes de se comunicar usando ICMP, TCP (todas as portas) e UDP (todas as portas).

Requisito para regras de firewall

O Dataproc exige que você crie uma regra de permissão de entrada de firewall com as seguintes características:

  • O parâmetro sources especifica intervalos de endereços IP como origens de pacotes. No Dataproc, todas as VMs no cluster precisam ser capazes de se comunicar entre si. Identifique as VMs no cluster pela rede VPC, pelas tags de origem ou pelas contas de serviço anexadas às VMs. Se você omitir uma especificação do intervalo de IP de origem, a regra de firewall usará o intervalo 0.0.0.0/0 (qualquer endereço IP) como origem. Se as VMs do Dataproc tiverem endereços IP externos, elas poderão aceitar o tráfego de qualquer lugar na Internet. Portanto, você precisa definir a origem para ser o mais restrito possível para atender às suas necessidades e proteger o cluster.

  • O destino da regra precisa identificar as VMs do cluster. O destino pode ser todas as VMs na rede VPC ou é possível identificar VMs de destino específicas usando tags de destino ou contas de serviço de destino.

  • A regra precisa incluir os seguintes protocolos e portas: TCP (todas as portas, 0 a 65535), UDP (todas as portas, 0 a 65535) e ICMP. O Dataproc usa serviços executados em várias portas e a especificação de todas as portas ajuda a executar os serviços.

Visão geral das regras de firewall padrão do Dataproc

O Dataproc usa a rede VPC padrão. Se uma rede VPC padrão não for especificada, você precisará criar uma VPC personalizada. Para criar uma rede VPC personalizada, é possível criar uma rede VPC no modo automático ou personalizado.

Se você usar a rede padrão, ela incluirá uma regra de firewall default-allow-internal preenchida que permite a entrada de Intervalo de origem 10.128.0.0/9 de todas as VMs na rede VPC (consulte o Requisito de regra de firewall para informações sobre como criar uma regra de firewall mais restritiva). Se você excluir essa regra de firewall pré-preenchida ou usar uma rede VPC diferente da rede padrão, o tráfego de entrada será bloqueado pela regra implícita de entrada de negação. Nessas situações, crie uma regra de firewall de permissão de entrada que permita o tráfego para todas as portas TCP e UDP de instâncias no cluster. Seu administrador de rede ou de segurança pode consultar a visão geral das regras de firewall para mais informações.

Criar uma rede VPC personalizada

Você pode especificar sua própria rede Virtual Private Cloud (VPC) ao criar um cluster do Dataproc. Para isso, você precisa criar uma rede VPC com regras de firewall. Em seguida, quando o cluster for criado, associe a rede ao cluster.

Como criar uma rede VPC

Você pode criar uma rede VPC no Console do Cloud ou usando a ferramenta de linha de comando gcloud compute networks create. Crie uma rede VPC em modo automático ou uma em modo personalizado (redes chamadas "auto" e "custom", respectivamente, abaixo). Uma rede automática é configurada automaticamente com sub-redes em cada região do Compute Engine. Redes personalizadas não são configuradas automaticamente com sub-redes. Crie uma ou mais sub-redes em uma ou mais regiões do Compute Engine ao criar a rede personalizada. Para mais informações, consulte Tipos de redes VPC.

Veja as opções disponíveis quando você cria uma rede automática e personalizada no Console do Cloud.

Automático

A captura de tela do Console do Cloud, abaixo, mostra os campos do Console do Cloud preenchidos para a criação automática de sub-redes (uma rede VPC de modo automático). É preciso selecionar uma ou mais regras de firewall. A regra network-name-allow-internal, que abre as portas udp:0-65535;tcp:0-65535;icmp, deve ser selecionada para ativar o acesso total à rede IP interna entre instâncias de VM na rede. Você também pode selecionar a regra network-name-allow-ssh para abrir a porta SSH padrão 22 para permitir conexões SSH com a rede.

Personalizado

Se você selecionar sub-redes personalizadas ao criar uma rede (uma rede VPC de modo personalizado), será preciso especificar a região e o intervalo de endereços IP particulares de cada sub-rede. Para ativar o acesso interno total entre as VMs na rede, especifique o intervalo de endereços IP 10.0.0.0/8. Se apropriado, defina um intervalo mais restrito, como 10.128.0.0/16.

Observe que as regras de firewall são fornecidas para sub-redes personalizadas após a criação da rede. Novamente, para ativar o acesso total à rede entre as VMs de sua rede, selecione ou crie uma regra de firewall que abra as portas udp:0-65535;tcp:0-65535;icmp, conforme mostrado na captura de tela do Console do Cloud abaixo.

Como criar um cluster que usa a rede VPC

Comando gcloud

Use o comando gcloud dataproc clusters create do SDK do Cloud com o sinalizador ‑‑network ou ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada.

Como usar a sinalização ‑‑network
Use a sinalização ‑‑network para criar um cluster que usará uma sub-rede com o mesmo nome da rede na região em que o cluster será criado.

gcloud dataproc clusters create my-cluster \
    --network network-name \
    --region=region \
    ... other args ...

Por exemplo, como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, é possível passar o nome da rede automática para o sinalizador network (‑‑network auto-net-name) para criar um cluster que usará a sub-rede automática na região do cluster.

Como usar a sinalização ‑‑subnet
Use a sinalização ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada na região em que o cluster será criado. É preciso passar à sinalização ‑‑subnet o caminho completo do recurso da sub-rede que o cluster usará.

gcloud dataproc clusters create cluster-name \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

É possível especificar o campo GceClusterConfig networkUri ou subnetworkUri como parte de uma solicitação clusters.create.

Exemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b"
    },
    ...

Console

Depois de criar uma rede VPC com regras de firewall que permitam o acesso total das VMs no intervalo de endereços IP particulares da rede, crie um cluster no Dataproc Criar um cluster no Console do Cloud. Selecione a rede principal na seção "Configuração de rede" no painel "Personalizar cluster". Depois de escolher a rede, o seletor de sub-rede exibirá as sub-redes disponíveis na região que você escolher para a criação do cluster.

Como criar um cluster que use uma rede VPC em outro projeto

Um cluster do Dataproc pode usar uma rede VPC compartilhada participando como um projeto de serviço. Com uma VPC compartilhada, a rede VPC compartilhada é definida em um projeto diferente, chamado projeto de host. O projeto de host é disponibilizado para uso por membros do IAM em projetos de serviço anexados. Consulte Visão geral da VPC compartilhada para ver informações básicas.

Você criará seu cluster do Dataproc em um projeto. No cenário de VPC compartilhada, este projeto será um projeto de serviço. Você precisará fazer referência ao número desse projeto. Aqui está uma maneira de encontrar o número do projeto:

  1. Navegue até a guia Configurações da página de administrador e IAM.

  2. Na lista suspensa do projeto, na parte superior da página, selecione o projeto que você usará para criar o cluster do Dataproc.

  3. Anote o número do projeto:

Um membro do IAM que é um administrador de VPC compartilhada e IAM precisa realizar as etapas a seguir. Consulte as instruções para configurar a VPC compartilhada para ver informações básicas.

  1. Certifique-se de que o projeto de host da VPC compartilhada tenha sido ativado.

  2. Anexe o projeto Dataproc ao projeto host.

  3. Configure uma ou ambas as contas de serviço a seguir para aplicar o papel Usuário de rede ao projeto de host. O Dataproc tentará usar a primeira conta de serviço, voltando para a conta de serviço das APIs do Google, se necessário.

  4. Navegue até a guia IAM da página "IAM e administrador".

  5. Use a lista suspensa do projeto na parte superior da página para selecionar o projeto host.

  6. Clique em ADICIONAR. Repita essas etapas para adicionar ambas as contas de serviço:

    1. Adicione a conta de serviço ao campo Membros.

    2. No menu Papéis, selecione Compute Engine > Usuário da rede do Compute.

    3. Clique em Add.

Quando as duas contas de serviço tiverem o papel de usuário da rede no projeto host, você poderá criar um cluster que use sua rede VPC.

Criar um cluster do Dataproc somente com endereços IP internos

É possível criar um cluster do Dataproc isolado da Internet pública, cujas instâncias de VM se comunicam por meio de uma sub-rede de IP privada (as instâncias de VM não terão endereços IP públicos). Para isso, a sub-rede do cluster precisa ter Acesso privado do Google ativado para permitir que os nós do cluster acessem APIs e serviços do Google, como o Cloud Storage, por IPs internos.

Comando gcloud

É possível criar um cluster do Dataproc somente com endereços IP internos usando o comando gcloud dataproc clusters create com o sinalizador ‑‑no-address.

Como usar as sinalizações ‑‑no-address e ‑‑network
Use a sinalização ‑‑no-address com a sinalização ‑‑network para criar um cluster que usará uma sub-rede com o mesmo nome da rede na região em que o cluster será criado.

gcloud dataproc clusters create my-cluster \
    --no-address \
    --network network-name \
    --region=region \
    ... other args ...

Por exemplo, como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, é possível passar o nome da rede automática para o sinalizador network (‑‑network auto-net-name) para criar um cluster que usará a sub-rede automática na região do cluster.

Como usar as sinalizações ‑‑no-address e ‑‑subnet
Use a sinalização ‑‑no-address com as sinalizações ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada na região onde o cluster será criado. É preciso passar à sinalização ‑‑subnet o caminho completo do recurso da sub-rede que o cluster usará.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

Defina o campo GceClusterConfig internalIpOnly como "true" como parte de uma solicitação clusters.create para ativar somente endereços IP internos.

Exemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Console

É possível criar um cluster do Dataproc com o acesso particular do Google ativado na página Criar um cluster do Dataproc no Console do Cloud. Clique em IP interno somente no painel "Personalizar cluster" para ativar esse recurso para o cluster.

Como, por padrão, os clusters somente internos não têm acesso à Internet, os jobs que fazem o download das dependências da Internet, como um download dos pacotes de dependências do Spark do Maven Central, falharão. Há várias soluções para evitar o problema:

  1. Use o Cloud NAT para ativar o acesso ao cluster à Internet.

  2. Crie uma imagem personalizada que inclua as dependências (por exemplo, pacotes de dependência do Spark em /usr/lib/spark/jars/).

  3. Faça upload das dependências para um bucket do Cloud Storage e use uma ação de inicialização para fazer o download das dependências do bucket durante a criação do cluster.

Dataproc e redes VPC-SC

Com o VPC Service Controls, os administradores podem definir um perímetro de segurança em torno dos recursos dos serviços gerenciados pelo Google para controlar a comunicação entre esses serviços.

Observe as seguintes limitações e estratégias ao usar redes VPC-SC com clusters do Dataproc: