Limite a saída de rede para seu workspace usando um firewall
Em default, o Google Cloud permite todo o tráfego de saída do seu VPC. Opcionalmente, o senhor pode optar por configurar o site workspace para limitar o egresso apenas aos serviços e destinos essenciais que sua organização exige. Para permitir o serviço essencial, o senhor precisa modificar a rede do Google Cloud (VPC) e o firewall que Databricks cria para o seu workspace. Para alguns serviços, o senhor pode configurar o Private Google Access para se comunicar com o Google APIs por meio de endereços IP privados.
Para obter as atualizações mais recentes sobre como esses recursos do Google Cloud funcionam, consulte a documentação do Google Cloud.
Se quiser configurar um firewall de nome de domínio corporativo para se conectar ao aplicativo da Web Databricks, consulte Configurar regras de firewall de nome de domínio.
Para obter uma visão geral da arquitetura Databricks, incluindo as definições do plano clássico compute e do plano de controle, consulte a visão geral da arquiteturaDatabricks.
Visão geral da configuração do firewall
Se quiser limitar a saída do plano clássico compute, o senhor deve fazer dois tipos gerais de configuração para permitir as conexões necessárias que, de outra forma, seriam bloqueadas:
-
Acesso privado ao Google para GCR e GCS : Por default, quando uma máquina virtual (VM) do Compute Engine, como um nó de clustering Databricks, não tem um endereço IP externo (público) atribuído à sua interface de rede, ela pode enviar pacotes somente para outros destinos de endereços IP internos. O senhor pode permitir que essas VMs se conectem ao conjunto de endereços IP externos usados pelo Google APIs e pelo serviço ativando o Private Google Access (PGA) na sub-rede que a interface de rede da VM usa. Com o PGA, a comunicação direta entre o avião Databricks compute e esses serviços do Google usa a rede interna do Google em vez da Internet pública. Isso afeta as seguintes conexões de saída do plano compute:
- O plano clássico do compute usa o Google Container Registry (GCR) para obter imagens de tempo de execução do Databricks.
- O plano clássico compute usa Google Cloud Storage (GCS ) para escrever em workspace, verificar a saúde de logs e usar logs.
-
Regras de firewall para o serviço de plano de controle : Depois de bloquear a saída modificando o firewall integrado, o senhor deve permitir vários serviços essenciais adicionando novas regras de firewall:
- A saída para o aplicativo da Web e as APIs REST na porta 443.
- A saída para o relé de conectividade de clustering seguro na porta 443.
- A saída para o site default Hive metastore na porta 3306. Se o senhor implantar seu próprio metastore externo, não precisará adicionar regras de rede para o metastore default não utilizado.
- O egresso para chamadas internas do plano Databricks compute para o plano de controle Databricks API na porta 8443.
- A saída para registro em Unity Catalog e transmissão de dados de linhagem para Databricks na porta 8444.
- A saída nas portas 8445-8451 para suportar o recurso futuro.
Os intervalos de endereços IP para o aplicativo da Web, o relé de conectividade de clustering seguro e o default Hive metastore variam de acordo com a região. Para obter os valores de sua região, consulte a tabela em Endereços IP e domínios para Databricks serviço e ativo.
Este artigo inclui exemplos de configuração do Google Cloud usando a interface de linha de comando gcloud
(CLI). Para usar esses exemplos, o senhor deve instalar o Google Cloud SDK.
Serviço de plano de controle endpoint Endereços IP por região
Se quiser configurar um firewall para bloquear a saída, o senhor deverá definir novas regras e rotas de firewall de saída VPC para permitir serviços essenciais hospedados no plano de controle Databricks. Os endereços IP do endpoint variam de acordo com a região do Google Cloud de seu Databricks workspace. Use a tabela em Endereços IP e domínios para Databricks serviço e ativo para obter a porta e o endereço IP dos ingresses do plano de controle para a região do Google Cloud do seu workspace.
Etapa 1: planeje o dimensionamento da sua rede
Se o senhor planeja usar um cluster grande ou muitos espaços de trabalho, certifique-se de que o espaço de trabalho terá espaço IP suficiente para executar o Databricks Job calculando os intervalos de sub-rede do GKE usando a calculadora de dimensionamento de rede.
Configure com precisão as sub-redes GKE usadas pelo seu Databricks workspace , pois o senhor não poderá alterá-las depois que o workspace for implantado. Se os intervalos de endereços das sub-redes do Databricks forem muito pequenos, o workspace esgotará seu espaço IP, o que, por sua vez, causará falha no trabalho do Databricks. Para determinar o tamanho do intervalo de endereços que o senhor precisa, a Databricks fornece uma calculadora na forma de uma planilha do Microsoft Excel. Consulte Calcular tamanhos de sub-rede para um novo workspace.
Etapa 2: Criar um workspace
-
Faça login no consoleaccount
-
Criar um novo Databricks workspace .
-
Na seção Advanced Configuration do formulário para criar o workspace, é preciso usar as configurações do default para Enable private clustering (Ativar clustering privado ), o que faz com que o workspace use um clustering GKE privado. Para um clustering de GKE privado, as instâncias do Databricks compute não têm endereços IP públicos.
-
Anote todas as configurações de sub-rede IP que aparecem na seção Advanced Configuration durante a criação do site workspace. Existem padrões, mas o senhor pode substituí-los. Para obter detalhes, consulte Criar um workspace usando o console account.
-
-
Certifique-se de que o Databricks VPC e as sub-redes em seu Google account tenham o Private Google Access (PGA) ativado.
Etapa 3: adicionar regras de firewall da VPC
Agora, o senhor deve adicionar regras de firewall ao firewall que Databricks criou para o seu novo workspace.
-
Obtenha seu nome de VPC. Databricks criou este VPC em seu Google account como parte da criação do workspace.
-
Na páginaaccount do console workspace, clique no seu workspace para iniciá-lo.
-
Copie a parte numérica do URL após
?o=
. Por exemplo, se o URL workspace forhttps://1676665108650415.5.gcp.databricks.com/?o=1676665108650415#
, o ID workspace será 1676665108650415. -
O site VPC do senhor workspace tem o nome
databricks-managed-<workspace-ID>
. Por exemplo,databricks-managed-1676665108650415
. Anote esse valor para que o senhor possa usá-lo com CLI comando.
-
-
Se você quiser usar o Google Console para adicionar regras de firewall:
- Acesse a página VPCs no console do Google Cloud.
- Clique no nome VPC da rede que corresponde ao nome workspace's VPC.
- Clique em FIREWALL RULES (Regras do firewall ) tab.
-
Adicione uma regra para bloquear a saída para
0.0.0.0/0
, que é uma sintaxe especial que significa todos os endereços IP externos.Em default, o Google Cloud permite todo o tráfego de saída do seu VPC. Você precisa criar uma regra bloqueando esse tráfego. Certifique-se de que a prioridade dessa regra esteja definida como um número grande. O objetivo é que essa regra seja aplicada depois que o Google Cloud executar todas as outras regras. Por exemplo, você pode definir essa regra como prioridade 1100 e, posteriormente, definir as prioridades da regra de saída no intervalo de 1000-1099.
Se o senhor usar incorretamente um valor de baixa prioridade para essa regra, o Google Cloud negará o tráfego de rede para os serviços essenciais Databricks e GKE, o que tornaria o site workspace inutilizável.
Devido a essa regra, qualquer tráfego que vá para o espaço IP interno (10.0.0.0/8, 172.16.0.0/20, 192.168.0.0/16) precisa de uma regra de saída adicional para permitir que o clustering alcance esses endereços IP.
O senhor pode usar o seguinte comando da CLI gcloud
para criar essa regra. Substitua <vpc-name>
pelo nome de sua VPC.
gcloud compute firewall-rules create deny-egress
--action DENY
--rules all
--destination-ranges 0.0.0.0/0
--direction EGRESS
--priority 1100
--network <vpc-name>
-
Adicione uma regra para permitir a entrada das verificações de saúde do Google.
O senhor pode usar o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC.Bashgcloud compute firewall-rules create from-gcp-healthcheck \
--action ALLOW \
--rules tcp:80,tcp:443 \
--source-ranges 130.211.0.0/22,35.191.0.0/16 \
--direction INGRESS \
--priority 1010 \
--network <vpc-name> -
Adicione uma regra para permitir a saída para as verificações de saúde do Google.
O senhor pode usar o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC.Bashgcloud compute firewall-rules create to-gcp-healthcheck \
--action ALLOW \
--rules tcp:80,tcp:443 \
--destination-ranges 130.211.0.0/22,35.191.0.0/16 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> -
Adicione uma regra para permitir a saída para APIs restritas(restricted.googleapis.com), que é necessário para acessar a API do GKE em um intervalo fixo de endereços IP.
O senhor pode usar o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC.Bashgcloud compute firewall-rules create to-google-apis \
--action ALLOW \
--rules all \
--destination-ranges 199.36.153.4/30 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> -
Adicione uma regra para permitir a saída para o intervalo de IPs do recurso mestre GKE. Há um intervalo de IPs do mestre do default GKE, mas o senhor pode substituir os valores durante a criação do workspace. Consulte Criar um workspace usando o console account.
O senhor pode usar o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC. SubstituaX.X.X.X/28
pelo seu intervalo de IP para o recurso mestre GKE.Bashgcloud compute firewall-rules create to-gke-master \
--action ALLOW \
--rules tcp:443,tcp:10250 \
--destination-ranges X.X.X.X/28 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> -
Adicione uma regra para permitir a comunicação intra-sub-rede (saída) usada pelo site Databricks workspace. Existem padrões para essas sub-redes que são visíveis durante a criação do site workspace na seção Advanced Configuration . O senhor precisa permitir a saída para todos os três intervalos de sub-rede que são rótulo na interface do usuário como intervalo de IP primário para nós GKE , intervalo de IP secundário para pods GKE e intervalo de IP secundário para serviço GKE .
O senhor pode usar o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC. SubstituaX.X.X.X/X,X.X.X.X/X,X.X.X.X/X
pelas três sub-redes Databricks que o senhor forneceu durante a criação do workspace.Bashgcloud compute firewall-rules create to-gke-nodes-subnet \
--action ALLOW \
--rules all \
--destination-ranges X.X.X.X/X,X.X.X.X/X,X.X.X.X/X \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> -
Adicione uma regra para permitir a saída para o serviço de plano de controle Databricks. Use a tabela em endereços IP e domínios para Databricks serviço e ativo para determinar os valores corretos para cada região Databricks suportada para esses serviços.
Permitir conexões com o aplicativo da Web principal e com o relé de conectividade de clustering seguro (SCC) na porta 443. Use o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC. SubstituaX.X.X.X
pelo seu endereço de entrada regional para o aplicativo web. SubstituaY.Y.Y.Y
pelo seu intervalo de endereços IP regional para o relé SCC.Bashgcloud compute firewall-rules create to-databricks-control-plane \
--action ALLOW \
--rules tcp:443 \
--destination-ranges X.X.X.X/32,Y.Y.Y.Y/32 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> -
Se o senhor usar o metastore default, adicione uma regra para permitir a conexão com o metastore na porta 3306. Use o seguinte comando da CLI
gcloud
para criar essa regra. Substitua<vpc-name>
pelo nome de sua VPC. SubstituaX.X.X.X
pelo intervalo de endereços IP regionais do metastore default.Bashgcloud compute firewall-rules create to-databricks-managed-hive \
--action ALLOW \
--rules tcp:3306 \
--destination-ranges X.X.X.X/32 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
Se o senhor implantar sua própria instância de metastore, crie uma regra para permitir a conexão com ela em vez do metastore default.
- Adicione quaisquer outras regras de saída de rede que sua organização exija para permitir as conexões necessárias com a fonte de dados ou outros sistemas.
Para regras de saída ALLOW
personalizadas, defina números prioritários no intervalo 1000-1099. É importante que o número de prioridade seja menor do que o valor usado para bloquear todas as saídas, definido como prioridade 1100 nas etapas anteriores.
Suas regras de firewall devem ser semelhantes às seguintes, embora o senhor deva usar o endereço IP regional do serviço de plano de controle para a região do seu workspace.
Etapa 4: atualizar rotas de VPC
As rotas do Google Cloud definem os caminhos que o tráfego de rede percorre de uma instância de máquina virtual (VM) para outros destinos. Em uma rede VPC, uma rota consiste em um único prefixo de destino no formato CIDR e um único próximo salto.
-
Remova a rota default que foi criada automaticamente no VPC, que é
0.0.0.0/0
com o gateway de Internet default como o próximo salto. Use a interface do usuário do console para remover essa rota e limpar qualquer caminho para a Internet.-
Selecione a rota para
0.0.0.0/0
e clique em EXCLUIR .
-
Crie uma rota na VPC para enviar tráfego para a sub-rede restrita das APIs do Google (
199.36.153.4/30
). Defina o próximo salto comodefault-internet-gateway
de acordo com o requisito de acesso a APIs privadas do Google.O senhor pode usar o seguinte comando CLI
gcloud
para criar essa rota. Substitua<vpc-name>
pelo nome de sua VPC. Substitua<project-name>
pelo nome do seu projeto.Bashgcloud beta compute routes create route-to-google-apis \
--project=<project-name> --description="Route to Google restricted APIs" \
--network=<vpc-name> \
--priority=1000 \
--destination-range=199.36.153.4/30 \
--next-hop-gateway=default-internet-gateway -
Crie uma rota para acessar o serviço de plano de controle Databricks. Obtenha os valores para sua região em endereços IP e domínios para Databricks serviço e ativo.
O senhor pode usar o seguinte comando da CLI
gcloud
para criar a rota para o aplicativo Web. Substitua<vpc-name>
pelo nome de sua VPC. Substitua<project-name>
pelo nome do seu projeto. SubstituaX.X.X.X/32
pelo intervalo de endereços IP regionais para o aplicativo web.Bashgcloud beta compute routes create route-to-databricks-scc-service \
--project=<project-name> --description="Route to Databricks web app" \
--network=<vpc-name> \
--priority=1000 \
--destination-range=X.X.X.X/32 \
--next-hop-gateway=default-internet-gatewayO senhor pode usar o seguinte comando
gcloud
CLI para criar a rota para o relé de conectividade de clustering seguro. Substitua<vpc-name>
pelo nome de sua VPC. Substitua<project-name>
pelo nome do seu projeto. SubstituaX.X.X.X/32
pelo intervalo de endereços IP regionais para o relé SCC.Bashgcloud beta compute routes create route-to-databricks-scc-service \
--project=<project-name> --description="Route to Databricks SCC relay" \
--network=<vpc-name> \
--priority=1000 \
--destination-range=X.X.X.X/32 \
--next-hop-gateway=default-internet-gatewaySe o senhor usar o metastore default, use o seguinte comando
gcloud
CLI para criar a rota para o metastore default. Substitua<vpc-name>
pelo nome de sua VPC. Substitua<project-name>
pelo nome do seu projeto. SubstituaX.X.X.X/32
pelo intervalo de endereços IP regionais para o metastore.Bashgcloud beta compute routes create route-to-databricks-scc-service \
--project=<project-name> --description="Route to default metastore" \
--network=<vpc-name> \
--priority=1000 \
--destination-range=X.X.X.X/32 \
--next-hop-gateway=default-internet-gateway
Etapa 5: Crie uma zona DNS para as APIs do Google para que o senhor possa ativar o Google Private Access para GCS e GCR
Agora, o senhor deve criar uma zona DNS para o Google APIs, que é necessária para ativar o Google Private Access do plano clássico compute para os dois Google APIs para GCS e GCR. Para obter detalhes sobre a ativação do GPA, consulte os artigos da documentação do Google [Configure Private Google Access]](https://cloud.google.com/vpc/docs/configure-private-google-access#config-domain).
-
Personalize o DNS na VPC para o domínio
googleapis.com
usando o Cloud DNS. Normalmente,googleapis.com
resolve para endereços IP públicos, mas para o Google Private Access, você deve usarrestricted.googleapis.com
. Esse domínio é resolvido para um intervalo específico199.36.153.4/30
, acessível na rede do Google Cloud.O clustering GKE do plano Databricks clássico compute requer acesso a GCS e GCR. Para a PGA, o senhor precisa garantir que o acesso ao site restrito APIs seja resolvido, caso contrário, o GKE não começará com êxito.
O senhor pode usar o seguinte comando
gcloud
para criar a zona DNS. Substitua<vpc-name>
pelo nome de sua VPC.Bashgcloud dns managed-zones create google-apis \
--description "private zone for Google APIs" \
--dns-name googleapis.com \
--visibility private \
--networks VPC-NAME
gcloud dns record-sets transaction start --zone google-apis
gcloud dns record-sets transaction add restricted.googleapis.com. \
--name *.googleapis.com \
--ttl 300 \
--type CNAME \
--zone google-apis
gcloud dns record-sets transaction add "199.36.153.4" "199.36.153.5" "199.36.153.6" "199.36.153.7" \
--name restricted.googleapis.com \
--ttl 300 \
--type A \
--zone google-apis
gcloud dns record-sets transaction execute --zone google-apisOs objetos no Google Cloud Console são semelhantes aos seguintes:
-
Faça configurações de zona semelhantes para o domínio GCR.io para enviar o tráfego para a sub-rede restrita das APIs do Google para alcançar o registro do contêiner. Sem essas alterações, o clustering do GKE não será bem-sucedido, pois não conseguirá baixar todos os contêineres de tempo de execução do Databricks necessários.
O senhor pode usar o seguinte comando
gcloud
para criar essas zonas DNS. Substitua<vpc-name>
pelo nome de sua VPC.Bashgcloud dns managed-zones create gcr-io \
--description "private zone for GCR.io" \
--dns-name gcr.io \
--visibility private \
--networks <vpc-name>
gcloud dns record-sets transaction start --zone gcr-io
gcloud dns record-sets transaction add gcr.io. \
--name *.gcr.io \
--ttl 300 \
--type CNAME \
--zone gcr-io
gcloud dns record-sets transaction add "199.36.153.4" "199.36.153.5" "199.36.153.6" "199.36.153.7" \
--name gcr.io \
--ttl 300 \
--type A \
--zone gcr-io
gcloud dns record-sets transaction execute --zone gcr-ioOs objetos no Google Cloud Console são semelhantes aos seguintes:
Etapa 6: Validar a configuração
-
Crie um cluster Databricks e comece a usá-lo.
-
Aguarde para confirmar se ele começou com êxito e se o estado é Running .
-
Acesse a página de carga de trabalho do GKE no Google Cloud Console.
-
No seletor de clustering , escolha seu clustering. O nome do clustering para seu workspace tem o nome
db-
seguido pelo ID Databricks workspace , que é um número grande. -
Confirme se todos os serviços mostram o status OK .
Solução de problemas
Não é possível iniciar o clustering GKE
Se o clustering do GKE não começar, é possível que o DNS esteja mal configurado quando o Private Google Access estiver ativado no VPC usado pelo seu Databricks workspace. Se os nós não conseguirem resolver os nomes de host googleapis
, isso pode resultar na falha de seu registro, o que, em última análise, resulta na criação malsucedida do clustering do GKE.
O senhor pode acessar view logs verificando a porta serial logs dos nós GKE correspondentes. Você pode ver erros como os seguintes:
>>> [ 203.604558] configure.sh[948]: curl: (6) Couldn't resolve host '
>>> storage.googleapis.com'
>>> [ 203.605422] configure.sh[948]: == Failed to download
>>> https://storage.googleapis.com/gke-release/npd-custom-plugins/v1.0.1/npd-custom-plugins-v1.0.1.tar.gz.
>>> Retrying. ==
>>> [ 203.614049] configure.sh[948]:
>>> https://www.googleapis.com/auth/devstorage.read_write
Como o clustering está usando uma rede VPC, a sub-rede em que esse clustering se encontra tem o Private Google Access ativado. Você precisará concluir a configuração do Acesso Privado do Google seguindo as instruções nesta documentação do Google PGA.
O clustering do GKE para de funcionar ou não consegue iniciá-lo depois de ter sido iniciado com sucesso em tentativas anteriores
O senhor pode descobrir que o clustering do GKE para de funcionar ou não consegue iniciar o clustering do GKE devido a uma conta de serviço do Compute Engine mal configurada no projeto que hospeda o GKE. O mecanismo de computação default serviço account que está associado aos nós do clustering problemático está no estado "desativado" ou não tem a função mínima necessária. O serviço account é <project-id>-compute@developer.gserviceaccount.com
.
A causa da falha no registro do nó pode ser devido ao status desativado desse serviço account, que está sendo anexado aos nós do clustering problemático.
Tente ativar o serviço account seguindo este artigo do Google centro de ajuda e tente recriar o clustering ou o nó pool para ver se isso resolve o problema.
O senhor também pode tentar usar o Google Cloud Console para ver a página IAM e a página Admin da conta de serviço e os nós correspondentes do clustering problemático.
Em default, o mecanismo de computação default serviço account é criado com a função de editor de projeto IAM. Você pode alterá-la para a função mínima exigida da seguinte forma:
-
Obtenha as funções atuais que estão atribuídas ao serviço default compute account.
Bashgcloud projects get-iam-policy {{project-id}} \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:{{project-id}}-compute@developer.gserviceaccount.com" -
Adicionar funções mínimas necessárias ao serviço default compute account
Bashgcloud projects add-iam-policy-binding {{project-id}} \
--member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
--role roles/logging.logWriter
gcloud projects add-iam-policy-binding {{project-id}} \
--member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
--role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding {{project-id}} \
--member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
--role roles/monitoring.viewer
gcloud projects add-iam-policy-binding {{project-id}} \
--member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
--role roles/stackdriver.resourceMetadata.writer -
Remova a função de editor de projetos do serviço default compute account.
Bashgcloud projects remove-iam-policy-binding {{project-id}} \
--member "serviceAccount:{{project-id}}-compute@developer.gserviceaccount.com" \
--role roles/editor -
Validar as funções atribuídas ao serviço default compute account.
Bashgcloud projects get-iam-policy {{project-id}} \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:{{project-id}}-compute@developer.gserviceaccount.com" -
Certifique-se de que esse serviço account tenha o conjunto certo de funções no projeto.