Pular para o conteúdo principal

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 .

nota

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

nota

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 autossh para estabelecer a conexão SSH de saída.
  • Uma VM proxy na cloud executando socat para 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:13306 para 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.
  • 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 autossh por VM proxy. Uma única conexão autossh suporta 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 com Restart=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 .

nota

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.

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:

SQL
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 :

SQL
ALTER METASTORE ADD ALLOWLIST maven ('mysql:mysql-connector-java:8.0.33');

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.

nota

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.

Próximos passos