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 .
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 o AWS Direct Connect 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 AWS utiliza um serviço de endpoint VPC.
-
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:
Bashaws ec2 accept-vpc-endpoint-connections \
--service-id <endpoint-service-id> \
--vpc-endpoint-ids <endpoint-id> -
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.