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 AWS, 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 da AWS. 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 AWS, portanto, nenhuma porta de entrada é necessária.

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 o AWS Direct Connect 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 AWS utiliza um serviço de endpoint VPC.

  • 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