Conecte-se ao recurso on-premises usando um túnel reverso SSH.
Conecte seu recurso on-premises ao Databricks sem abrir o acesso de entrada do firewall. Um host de túnel on-premises abre uma conexão SSH de saída para máquinas virtuais (VMs) proxy na nuvem do Google, permitindo que Databricks clássico e compute serverless acessem seu recurso on-premises .
Como funciona
Um túnel reverso SSH permite que um host de túnel on-premises abra conexões SSH de saída para VMs de proxy na cloud do Google. Databricks se conecta às VMs proxy por meio de um balanceador de carga, e o tráfego flui de volta pelo túnel para o recurso on-premises . A rede on-premises requer apenas conexões SSH de saída (porta 22) para o Google Cloud, portanto, não são necessárias portas de entrada.
Em um túnel reverso, o host on-premises inicia a conexão de saída (on-premises para cloud) para evitar o relaxamento das restrições do firewall, e o tráfego de retorno flui de volta (cloud para on-premises) pelo caminho estabelecido.
compute clássico alcança as VMs proxy por meio de peering. compute sem servidor alcança esses clientes por meio de uma conexão endpoint privada, utilizando o serviço de conectividade privada do seu provedor cloud .
Esta é uma solução autogerenciar. Você provisiona e mantém as VMs de proxy e o host de túnel on-premises .
Componentes obrigatórios e opcionais
Essa configuração requer um circuito de rede dedicado entre seu ambiente cloud e sua rede on-premises . Este circuito permite que o host do túnel on-premises inicie uma conexão SSH de saída para os endereços IP privados das VMs proxy. As opções mais comuns incluem interconexão na nuvem ou um túnel VPN.
Requisitos mínimos (configuração de trabalho):
- Um host de túnel on-premises executando
autosshpara estabelecer a conexão SSH de saída. - Uma VM proxy na cloud executando
socatpara aceitar o túnel e expor a porta de recurso em sua interface de rede. - Caminho de rede do Databricks para a VM proxy:
- computeclássica : peering entre a VPC Databricks e a VPC do hub proxy.
- computesem servidor : uma conexão de endpoint privada usando o serviço de conectividade privada do seu provedor cloud e uma Configuração de Conectividade de Rede (NCC) com uma regra endpoint privado.
- Ambos os tipos compute : configure ambos os caminhos.
Uma única máquina virtual proxy sem balanceador de carga é suficiente para desenvolvimento e testes.
Opcional (adiciona alta disponibilidade e robustez à produção):
- Máquinas virtuais proxy adicionais para redundância.
- Um balanceador de carga à frente das VMs proxy. Fornece um endpoint estável e failover automático quando um túnel falha.
- Um serviço de verificação de integridade HTTP em cada máquina virtual proxy. Isso permite que o balanceador de carga detecte falhas no nível do túnel, e não apenas a disponibilidade da VM ou da porta.
A Databricks recomenda esta configuração, mas adapte-a ao seu ambiente e aos seus requisitos de segurança.
Hub proxy de túnel
O hub proxy consiste nos seguintes componentes.
-
Máquinas virtuais proxy (no mínimo duas para alta disponibilidade). Cada VM proxy executa três serviços:
- sshd : O daemon SSH aceita túneis reversos de entrada do host de túnel on-premises e coloca o ouvinte de túnel em
localhost(por exemplo,localhost:13306para MySQL). - socat : Faz a ponte entre a interface de rede da VM e o ouvinte do túnel (por exemplo,
NIC:3306 → localhost:13306), para que o tráfego do Databricks possa alcançar o endpoint do túnel. - Serviço de verificação de integridade HTTP : Retorna HTTP 200 quando o túnel está ativo e HTTP 503 quando não está. Uma sonda TCP simples detecta apenas se o socat está escutando; uma sonda HTTP em nível de aplicação detecta um túnel inativo mesmo quando o socat ainda está em execução.
- sshd : O daemon SSH aceita túneis reversos de entrada do host de túnel on-premises e coloca o ouvinte de túnel em
-
Balanceador de carga :
- Frontend : IP privado na sub-rede do proxy.
- poolde backend : Todas as VMs de proxy.
- Regra de balanceamento de carga : TCP na porta do recurso (por exemplo, porta 3306 para MySQL).
- Teste de integridade : solicitação HTTP GET ao endpoint de verificação de integridade em cada máquina virtual proxy. Um ponto de partida recomendado é um intervalo de 5 segundos com 2 falhas consecutivas para marcar uma VM como não íntegra — ajuste de acordo com sua tolerância de recuperação.
-
Serviço de conectividade privada (necessário para compute serverless ): Conectado ao front-end do balanceador de carga com uma sub-rede NAT dedicada. A nuvem do Google usa um anexo de serviço Private Service Connect.
-
host de túnel local : execução de um processo
autosshpor VM proxy. Uma única conexãoautosshsuporta múltiplos encaminhamentos de porta-R(uma conexão SSH, múltiplos túneis) para configurações de múltiplos recursos. Use o serviço systemd comRestart=always. Os túneis interativos são encerrados ao fazer logoff e não são adequados para produção.
Configurar Databricks
Crie uma conexão com seu recurso on-premises usando o IP de front-end do balanceador de carga. Selecione a tab correspondente ao seu tipo compute .
Os exemplos a seguir utilizam MySQL. Para outros bancos de dados, substitua o tipo de conexão, a porta e a coordenada Maven do driver JDBC.
- Classic compute
- Serverless compute
- Lakeflow Connect CDC
Antes de conectar, confirme se o peering entre a VPC do hub proxy e VPC do seu workspace Databricks está ativo. Em seguida, utilize o endereço IP privado do frontend do balanceador de carga na sua configuração de conexão:
CREATE CONNECTION mysql_onprem TYPE mysql
OPTIONS (
host '<lb-frontend-ip>',
port '3306',
user '<db-user>',
password '<db-password>'
);
CREATE FOREIGN CATALOG onprem_catalog
USING CONNECTION mysql_onprem
OPTIONS (database '<db-name>');
As consultas falham no modo de acesso compartilhado porque o isolamento do classloader impede que o executor acesse os drivers JDBC baseados em Maven . Utilize o modo de acesso de usuário único para verificar se o driver está disponível em todo o cluster. Antes de criar a conexão, adicione o driver JDBC à lista de permissões Unity Catalog :
ALTER METASTORE ADD ALLOWLIST maven ('mysql:mysql-connector-java:8.0.33');
-
Como administrador account , acesse o console account .
-
Na barra lateral, clique em Segurança .
-
Clique em Configurações de conectividade de rede e crie um NCC para a região do seu workspace .
-
No NCC, adicione uma regra de endpoint privado e insira o ID do recurso de serviço.
-
Conecte o NCC à sua workspace e aguarde de 10 a 15 minutos para a propagação.
-
Aprovar a conexão endpoint privado no serviço de conectividade privada:
Aceite a conexão do serviço privado Connect no console do Google Cloud ou usando a CLI
gcloud. -
Crie a conexão usando o domínio do endpoint privado:
SQLCREATE CONNECTION mysql_onprem_serverless TYPE mysql
OPTIONS (
host '<pe-domain>',
port '3306',
user '<db-user>',
password '<db-password>'
);
O botão Testar Conexão na interface Databricks não funciona para conexões endpoint privados. Ignore esta etapa e crie a conexão diretamente.
O gateway LakeFlow Connect é executado em compute clássica na sua VPC workspace e alcança as VMs proxy por meio de peering. Utilize o endereço IP privado do frontend do balanceador de carga como host de conexão, e não o endereço IP de uma máquina virtual proxy individual. Consulte Alta disponibilidade e resiliência pipeline.
Antes de criar um pipeline CDC , conclua as seguintes etapas para o seu mecanismo de banco de dados:
-
Ativar registro de alterações : configure seu banco de dados para log alterações em nível de linha (por exemplo, registro binário no MySQL, replicação lógica no PostgreSQL ou registro suplementar no Oracle).
-
Conceder permissões de replicação : Forneça ao usuário pipeline as permissões necessárias para ler logs de alterações e executar o Snapshot. Consulte a documentação do conector para o seu banco de dados específico.
-
Defina o período de retenção log : configure o período de retenção log para pelo menos sete dias. Se o gateway CDC estiver offline quando logs expirarem, o pipeline deverá executar um novo snapshot completo de todas as tabelas de origem.
Para configurações específicas do motor, consulte a documentação do conectorLakeFlow Connect.
Alta disponibilidade e resiliência pipeline
Com duas ou mais VMs proxy no pool de backend, uma falha de túnel em uma única instância não interrompe o serviço. Se um túnel falhar, o serviço de verificação de integridade retorna o código HTTP 503. Em seguida, o balanceador de carga para de encaminhar novas conexões para essa máquina virtual em aproximadamente 10 segundos.
Utilize o endereço IP do frontend do balanceador de carga em suas strings de conexão, e não o endereço IP de uma máquina virtual proxy individual. Se um túnel cair, o balanceador de carga redireciona automaticamente o tráfego sem intervenção manual ou interrupção do pipeline.
Cenário de falha | Sem verificação de integridade do aplicativo | Com verificação de integridade do aplicativo |
|---|---|---|
A máquina virtual proxy para de responder. | O balanceador de carga detecta → failover | O balanceador de carga detecta → failover |
O agente portuário para | O balanceador de carga detecta → failover | O balanceador de carga detecta → failover |
O túnel SSH falha, o encaminhador de portas está em execução. | O balanceador de carga não consegue detectar → falhas intermitentes | O balanceador de carga detecta (HTTP 503) → failover |
Para o pipeline CDC LakeFlow Connect , defina a retenção log binários para pelo menos 7 dias. Se o gateway CDC estiver offline quando os logs binários expirarem, o pipeline deverá executar um novo snapshot completo de todas as tabelas de origem.
Limitações conhecidas
Esta solução apresenta as seguintes limitações.
- Cada recurso on-premises requer um mapeamento de porta distinto em cada máquina virtual proxy. Para múltiplos recursos do mesmo tipo na mesma porta default , use portas diferentes na interface de rede da VM proxy (por exemplo, 3306, 3307 ou 3308) ou use VMs proxy separadas.
- Você deve provisionar e manter as VMs de proxy e o host de túnel on-premises .
- Um balanceador de carga bloqueia a conectividade de internet de saída default para máquinas virtuais no pool de backend. Instale o pacote necessário antes de adicionar VMs ao pool.
- O botão Testar Conexão na interface Databricks não funciona para conexões endpoint privados.
- No modo de acesso compartilhado, a biblioteca JDBC Maven está disponível apenas no nó do driver. Utilize o modo de acesso de usuário único para cargas de trabalho JDBC.