Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Conecte los recursos locales a Azure Databricks sin abrir el acceso de firewall de entrada. Un host de túnel localizado en las instalaciones abre una conexión SSH saliente a máquinas virtuales (VM) proxy en Azure, lo que permite que el cálculo clásico y sin servidor de Azure Databricks acceda a los recursos en las instalaciones.
Cómo funciona
Un túnel inverso SSH permite que un host de túnel local abra conexiones SSH salientes a máquinas virtuales de proxy en la nube en Azure. Azure Databricks se conecta a las máquinas virtuales proxy a través de un equilibrador de carga y el tráfico vuelve a través del túnel al recurso local. La red local solo requiere SSH saliente (puerto 22) para Azure, por lo que no se requieren puertos entrantes.
En un túnel inverso, el host local inicia la conexión saliente (local a nube) para evitar la relajación de las restricciones de firewall y el tráfico devuelto fluye de nuevo (nube a local) a través de la ruta de acceso establecida.
El proceso clásico alcanza las máquinas virtuales de proxy a través del emparejamiento. La computación sin servidor se realiza a través de una conexión privada del servicio de conectividad privada de tu proveedor de nube.
Note
Se trata de una solución autoadministrada. Configuras y gestionas las VMs proxy y el host del túnel en las instalaciones.
Componentes obligatorios y opcionales
Note
Esta configuración requiere un circuito de red dedicado entre el entorno de nube y la red local. Este circuito permite que el host del túnel en las instalaciones inicie conexiones SSH salientes a las direcciones IP privadas de las máquinas virtuales proxy. Entre las opciones comunes se incluyen ExpressRoute o un túnel VPN.
Obligatorio (configuración de trabajo mínima):
- Un host de túnel en las instalaciones que ejecuta
autosshpara establecer la conexión SSH saliente. - Una máquina virtual proxy en la nube que ejecuta
socatpara aceptar el túnel y exponer el puerto de recurso en su interfaz de red. - Ruta de acceso de red de Azure Databricks a la máquina virtual proxy:
- Classic compute: emparejamiento entre la VNet de Azure Databricks y la VNet del centro de proxy.
- Computación sin servidor: una conexión de endpoint privado mediante el servicio de conectividad privada de tu proveedor de nube y una configuración de conectividad de red (NCC) con una regla de endpoint privado.
- Ambos tipos de computación: configure ambas rutas.
Una sola máquina virtual proxy sin un equilibrador de carga es suficiente para el desarrollo y las pruebas.
Opcional (agrega alta disponibilidad y solidez de producción):
- Máquinas virtuales proxy adicionales para redundancia.
- Un equilibrador de carga delante de las máquinas virtuales de proxy. Proporciona un extremo estable y una conmutación por error automática cuando se produce un fallo en un túnel.
- Un servicio de comprobación de estado HTTP en cada máquina virtual proxy. Esto permite que el equilibrador de carga detecte errores de nivel de túnel, no solo la disponibilidad de máquinas virtuales o puertos.
Azure Databricks recomienda esta configuración, pero adaptarla a los requisitos de seguridad y entorno.
Hub de proxy de túnel
El centro de proxy consta de los siguientes componentes.
-
Máquinas virtuales de proxy (al menos dos para alta disponibilidad). Cada máquina virtual proxy ejecuta tres servicios:
-
sshd: El demonio SSH acepta túneles inversos entrantes del host del túnel local y coloca el agente de escucha del túnel en
localhost(por ejemplo,localhost:13306para MySQL). -
socat: puentea la interfaz de red de la máquina virtual al agente de escucha del túnel (por ejemplo,
NIC:3306 → localhost:13306), por lo que el tráfico de Azure Databricks puede llegar al punto de conexión del túnel. - Servicio de comprobación de estado HTTP: devuelve HTTP 200 cuando el túnel está activo y HTTP 503 cuando no lo está. Un sondeo TCP sin formato solo detecta si socat está escuchando; un sondeo HTTP de nivel de aplicación detecta que un túnel está inactivo incluso cuando socat sigue en ejecución.
-
sshd: El demonio SSH acepta túneles inversos entrantes del host del túnel local y coloca el agente de escucha del túnel en
-
Equilibrador de carga:
- Front-end: dirección IP privada en la subred del proxy.
- Grupo de back-end: todas las máquinas virtuales de proxy.
- Regla de equilibrio de carga: TCP en el puerto de recurso (por ejemplo, puerto 3306 para MySQL).
- Sonda de estado: HTTP GET en el endpoint de comprobación de estado en cada máquina virtual proxy. Un punto de partida recomendado es un intervalo de 5 segundos con 2 fallos consecutivos para marcar una máquina virtual como no saludable; ajuste según su tolerancia de recuperación.
- Servicio de conectividad privada (necesario para el proceso sin servidor): conectado al front-end del equilibrador de carga con una subred NAT dedicada. Azure usa un servicio de Private Link (PLS).
-
Host de túnel local: ejecuta un
autosshproceso por máquina virtual proxy. Una solaautosshconexión admite varios-Rreenvíos de puerto (una conexión SSH, varios túneles) para las configuraciones de varios recursos. Utiliza servicios con systemd yRestart=always. Los túneles interactivos terminan en logoff y no son adecuados para producción.
Configuración de Azure Databricks
Cree una conexión al recurso local mediante la dirección IP de front-end del equilibrador de carga. Seleccione la pestaña del tipo de cálculo.
Note
En los ejemplos siguientes se usa MySQL. Para otras bases de datos, sustituya el tipo de conexión, el puerto y la coordenada maven del controlador JDBC.
Computación clásica
Antes de conectarse, confirme que el emparejamiento entre la red virtual del centro de proxy y la red virtual del entorno de trabajo de Azure Databricks está activo. A continuación, use la dirección IP privada de front-end del equilibrador de carga en la configuración de conexión:
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>');
Las consultas no se pueden realizar en modo de acceso compartido porque el aislamiento del cargador de clases impide que los ejecutores accedan a controladores JDBC basados en Maven. Use el modo de acceso de usuario único para comprobar que el controlador está disponible en todo el clúster. Antes de crear la conexión, agregue el controlador JDBC a la lista de permitidos del catálogo de Unity:
ALTER METASTORE ADD ALLOWLIST maven ('mysql:mysql-connector-java:8.0.33');
Proceso sin servidor
Como administrador de cuentas, vaya a la consola de cuenta.
En la barra lateral, haga clic en Seguridad.
Haga clic en Configuraciones de conectividad de red y cree un NCC para la región del área de trabajo.
En el NCC, agregue una regla de punto de conexión privado y escriba el identificador de recurso de servicio.
Adjunte el NCC al área de trabajo y espere entre 10 y 15 minutos para la propagación.
Apruebe la conexión del endpoint privado en el servicio de conectividad privada.
az network private-link-service connection update \ --service-name <pls-name> \ --resource-group <rg> \ --name "<connection-name>" \ --connection-status ApprovedCree la conexión mediante el dominio del punto de conexión privado:
CREATE CONNECTION mysql_onprem_serverless TYPE mysql OPTIONS ( host '<pe-domain>', port '3306', user '<db-user>', password '<db-password>' );
El botón Test Connection de la interfaz de usuario de Azure Databricks no funciona para las conexiones de punto de conexión privado. Omitala y cree la conexión directamente.
Lakeflow Connect CDC
La puerta de enlace de Lakeflow Connect funciona en cómputo clásico en la red virtual (VNet) de tu espacio de trabajo y alcanza las máquinas virtuales proxy a través de la interconexión. Use la dirección IP privada de front-end del equilibrador de carga como host de conexión, no la dirección IP de una máquina virtual proxy individual. Consulte Alta disponibilidad y resistencia de canalización.
Antes de crear una canalización CDC, complete los pasos siguientes para el motor de base de datos:
Habilitar el registro de cambios: configure la base de datos para registrar los cambios de nivel de fila (por ejemplo, el registro binario en MySQL, la replicación lógica en PostgreSQL o el registro complementario en Oracle).
Conceder permisos de replicación: proporcione al usuario de canalización los permisos necesarios para leer los registros de cambios y realizar instantáneas. Consulte la documentación del conector para su base de datos específica.
Establecer retención de registros: configure la retención de registros en al menos siete días. Si la puerta de enlace CDC está sin conexión cuando expiran los registros, la canalización debe realizar una nueva instantánea completa de todas las tablas de origen.
Para obtener una configuración específica del motor, consulte la documentación del conector de Lakeflow Connect.
Alta disponibilidad y resistencia de canalización
Con dos o más máquinas virtuales proxy en el grupo de back-end, un error de túnel en una sola instancia no interrumpe el servicio. Si se produce un error en un túnel, el servicio de comprobación de estado devuelve HTTP 503. A continuación, el equilibrador de carga detiene el enrutamiento de nuevas conexiones a esa máquina virtual en aproximadamente 10 segundos.
Note
Use la dirección IP de front-end del equilibrador de carga en el cadena de conexión, no la dirección IP de una máquina virtual proxy individual. Si un túnel cae, el equilibrador de carga vuelve a enrutar automáticamente el tráfico sin intervención manual o tiempo de inactividad de la canalización.
| Escenario de error | Sin comprobación de estado de la aplicación | Con la comprobación de estado de la aplicación |
|---|---|---|
| La máquina virtual proxy deja de responder | Load Balancer detecta → conmutación por error | El equilibrador de carga detecta → la conmutación por error |
| Paradas del reenviador de puertos | El equilibrador de carga detecta → la conmutación por error | Load Balancer detecta → conmutación por error |
| Se produce un error en el túnel SSH y se ejecuta el reenviador de puertos | El equilibrador de carga no puede detectar errores intermitentes → | El equilibrador de carga detecta (HTTP 503) → conmutación por error |
En el caso de las canalizaciones CDC de Lakeflow Connect, establezca la retención de registros binarios en al menos 7 días. Si la puerta de enlace CDC está sin conexión cuando expiran los registros binarios, la canalización debe realizar una nueva instantánea completa de todas las tablas de origen.
Limitaciones conocidas
Esta solución tiene las siguientes limitaciones.
- Cada recurso local requiere una asignación de puerto distinta en cada máquina virtual proxy. Para varios recursos del mismo tipo en el mismo puerto predeterminado, use puertos diferentes en la interfaz de red de la máquina virtual proxy (por ejemplo, 3306, 3307 o 3308) o use máquinas virtuales proxy independientes.
- Debe aprovisionar y mantener las máquinas virtuales proxy y el host del túnel local.
- Un equilibrador de carga bloquea la conectividad a Internet saliente predeterminada para las máquinas virtuales del grupo de back-end. Instale los paquetes necesarios antes de agregar máquinas virtuales al grupo.
- El botón Test Connection de la interfaz de usuario de Azure Databricks no funciona para las conexiones de punto de conexión privado.
- En el modo de acceso compartido, las bibliotecas JDBC de Maven solo están disponibles en el nodo de controlador. Use el modo de acceso de usuario único para cargas de trabajo de JDBC.