Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Connettere le risorse locali a Azure Databricks senza aprire l'accesso al firewall in ingresso. Un host di tunnel on-premises apre una connessione SSH in uscita alle macchine virtuali proxy in Azure, consentendo al calcolo classico e serverless di Azure Databricks di raggiungere le risorse on-premises.
Come funziona
Un tunnel inverso SSH consente a un host del tunnel locale di aprire connessioni SSH in uscita alle macchine virtuali proxy cloud in Azure. Azure Databricks si connette alle macchine virtuali proxy tramite un servizio di bilanciamento del carico e il traffico passa attraverso il tunnel alla risorsa locale. La rete locale richiede solo SSH in uscita (porta 22) per Azure, quindi non sono necessarie porte in ingresso.
In un tunnel inverso, l'host locale avvia la connessione verso l'esterno (da locale a cloud) per evitare di ridurre le restrizioni del firewall e il traffico di ritorno (da cloud a locale) lungo il percorso stabilito.
Il calcolo classico raggiunge le macchine virtuali proxy tramite peering. Il calcolo serverless li raggiunge tramite una connessione a endpoint privato usando il servizio di connettività privata del provider di cloud.
Annotazioni
È una soluzione autogestita. Provisioni e gestisci le macchine virtuali proxy e l'host del tunnel locale.
Componenti obbligatori e facoltativi
Annotazioni
Questa configurazione richiede un circuito di rete dedicato tra l'ambiente cloud e la rete locale. Questo circuito consente all'host del tunnel locale di avviare SSH in uscita agli indirizzi IP privati delle macchine virtuali proxy. Le opzioni comuni includono ExpressRoute o un tunnel VPN.
Obbligatorio (configurazione minima di lavoro):
- Host tunnel locale utilizzato
autosshper stabilire la connessione SSH in uscita. - Una macchina virtuale proxy nel cloud in esecuzione
socatper accettare il tunnel ed esporre la porta della risorsa nella relativa interfaccia di rete. - Percorso di rete da Azure Databricks alla macchina virtuale proxy:
- Classic compute: peering tra la VNet di Azure Databricks e la VNet dell'hub proxy.
- Calcolo serverless: una connessione endpoint privato usando il servizio di connettività privata del provider di servizi cloud e una configurazione di connettività di rete (NCC) con una regola dell'endpoint privato.
- Entrambi i tipi di calcolo: configurare entrambi i percorsi.
Una singola macchina virtuale proxy senza un servizio di bilanciamento del carico è sufficiente per lo sviluppo e il test.
Facoltativo (aggiunge disponibilità elevata e affidabilità di produzione):
- Macchine virtuali proxy aggiuntive per la ridondanza.
- Un bilanciatore del carico che fronteggia le macchine virtuali proxy. Fornisce un endpoint stabile e il failover automatico in caso di errore di un tunnel.
- Un servizio di controllo dell'integrità HTTP in ogni macchina virtuale proxy. Ciò consente al servizio di bilanciamento del carico di rilevare gli errori a livello di tunnel, non solo la disponibilità di macchine virtuali o porte.
Azure Databricks consiglia questa configurazione, ma adattarla ai requisiti di sicurezza e dell'ambiente.
Hub proxy del tunnel
L'hub proxy è costituito dai componenti seguenti.
-
Macchine virtuali proxy (almeno due per la disponibilità elevata). Ogni macchina virtuale proxy esegue tre servizi:
-
sshd: il daemon SSH accetta tunnel inversi in ingresso dall'host del tunnel locale interno e inserisce il servizio di ascolto del tunnel in
localhost(ad esempio,localhost:13306per MySQL). -
socat: collega l'interfaccia di rete della macchina virtuale al listener del tunnel (ad esempio,
NIC:3306 → localhost:13306), in modo che il traffico proveniente da Azure Databricks possa raggiungere l'endpoint del tunnel. - Servizio controllo integrità HTTP: restituisce HTTP 200 quando il tunnel è attivo e HTTP 503 quando non lo è. Un probe TCP normale rileva solo se socat è in ascolto; un probe HTTP a livello di applicazione rileva un tunnel inattivo anche quando socat è ancora in esecuzione.
-
sshd: il daemon SSH accetta tunnel inversi in ingresso dall'host del tunnel locale interno e inserisce il servizio di ascolto del tunnel in
-
Bilanciamento del carico:
- Front-end: indirizzo IP privato nella sottorete proxy.
- Pool backend: tutte le VM proxy.
- Regola di bilanciamento del carico: TCP sulla porta della risorsa (ad esempio, porta 3306 per MySQL).
- Probe di integrità: HTTP GET verso l'endpoint di controllo dell'integrità in ogni macchina virtuale proxy. Un punto di partenza consigliato è un intervallo di 5 secondi con 2 errori consecutivi per contrassegnare una macchina virtuale non sana, regolando in base alla tolleranza di ripristino.
- Servizio di connettività privata (obbligatorio per il calcolo serverless): collegato al front-end del servizio di bilanciamento del carico con una subnet NAT dedicata. Azure usa un servizio collegamento privato (PLS).
-
Host del tunnel locale: esegue un
autosshprocesso per ogni macchina virtuale proxy. Una singolaautosshconnessione supporta più-Rport forward (una connessione SSH, più tunnel) per le configurazioni a più risorse. Usa i servizi systemd conRestart=always. I tunnel interattivi terminano al logout e non sono adatti per l'ambiente di produzione.
Configurare Azure Databricks
Crea una connessione alla risorsa locale usando l'indirizzo IP front-end del servizio di bilanciamento del carico. Selezionare la scheda per il tipo di calcolo.
Annotazioni
Gli esempi seguenti usano MySQL. Per altri database sostituire il tipo di connessione, la porta e la coordinata Maven del driver JDBC.
Calcolo classico
Prima di connettersi, verificare che il peering tra la rete virtuale dell'hub proxy e la rete virtuale dell'area di lavoro Azure Databricks sia attiva. Usare quindi l'IP privato del front-end del bilanciamento del carico nella configurazione della connessione.
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>');
Le interrogazioni non riescono in modalità di accesso condiviso perché l'isolamento del classloader impedisce agli esecutori di accedere ai driver JDBC basati su Maven. Usare la modalità di accesso utente singolo per verificare che il driver sia disponibile nell'intero cluster. Prima di creare la connessione, aggiungere il driver JDBC all'elenco elementi consentiti del catalogo Unity:
ALTER METASTORE ADD ALLOWLIST maven ('mysql:mysql-connector-java:8.0.33');
Calcolo serverless
In qualità di amministratore dell'account, accedere alla console dell'account.
Nella barra laterale fare clic su Sicurezza.
Fare clic su Configurazioni di connettività di rete e creare un NCC per l'area dell'area di lavoro.
In NCC aggiungere una regola dell'endpoint privato e immettere l'ID risorsa del servizio.
Collegare il NCC all'area di lavoro e attendere 10-15 minuti per la propagazione.
Approvare la connessione all'endpoint privato nel servizio di connettività privata:
az network private-link-service connection update \ --service-name <pls-name> \ --resource-group <rg> \ --name "<connection-name>" \ --connection-status ApprovedCreare la connessione usando il dominio dell'endpoint privato:
CREATE CONNECTION mysql_onprem_serverless TYPE mysql OPTIONS ( host '<pe-domain>', port '3306', user '<db-user>', password '<db-password>' );
Il pulsante Test Connection nell'interfaccia utente di Azure Databricks non funziona per le connessioni dell'endpoint privato. Ignorarlo e creare direttamente la connessione.
Lakeflow Connect CDC
Il gateway Lakeflow Connect viene eseguito sui servizi di calcolo classici nella VNet dell'area di lavoro e raggiunge le VM proxy tramite peering. Usare l'indirizzo IP privato front-end del servizio di bilanciamento del carico come host di connessione, non l'INDIRIZZO IP di una singola macchina virtuale proxy. Vedere Disponibilità elevata e resilienza della pipeline.
Prima di creare una pipeline CDC, segui i passaggi seguenti per il motore di database:
Abilitare la registrazione delle modifiche: configurare il database per registrare le modifiche a livello di riga, ad esempio la registrazione binaria in MySQL, la replica logica in PostgreSQL o la registrazione supplementare in Oracle.
Concedere le autorizzazioni di replica: fornire all'utente della pipeline le autorizzazioni necessarie per leggere i log delle modifiche ed eseguire snapshot. Fare riferimento alla documentazione del connettore per il database specifico.
Impostare la conservazione dei log: configurare la conservazione dei log su almeno sette giorni. Se il gateway CDC è offline quando i log scadono, la pipeline deve eseguire un nuovo snapshot completo di tutte le tabelle di origine.
Per la configurazione specifica del motore, vedere la documentazione del connettore Lakeflow Connect.
Disponibilità elevata e resilienza della pipeline
Con due o più macchine virtuali proxy nel pool back-end, un errore del tunnel in una singola istanza non interrompe il servizio. Se un tunnel non riesce, il servizio controllo integrità restituisce HTTP 503. Il servizio di bilanciamento del carico arresta quindi il routing di nuove connessioni alla macchina virtuale entro circa 10 secondi.
Annotazioni
Usare l'indirizzo IP front-end del servizio di bilanciamento del carico nel stringa di connessione, non l'INDIRIZZO IP di una singola macchina virtuale proxy. In caso di interruzione di un tunnel, il servizio di bilanciamento del carico reindirizza automaticamente il traffico senza interventi manuali o tempi di inattività della pipeline.
| Scenario di errore | Senza controllo di integrità dell'applicazione | Con verifica dello stato dell'applicazione |
|---|---|---|
| La macchina virtuale proxy smette di rispondere | Il servizio di bilanciamento del carico rileva → failover | Il bilanciamento del carico rileva → failover |
| Ferma il port forwarder | Il bilanciamento del carico rileva → failover | Il bilanciatore di carico rileva il failover |
| Il tunnel SSH fallisce, il port forwarder è in esecuzione | Il servizio di bilanciamento del carico non è in grado di rilevare → errori intermittenti | Il load balancer rileva (HTTP 503) → failover |
Per le pipeline di Lakeflow Connect CDC, impostare la conservazione dei log binari su almeno 7 giorni. Se il gateway CDC è offline quando i log binari scadono, la pipeline deve rieseguire uno snapshot completo di tutte le tabelle di origine.
Limitazioni note
Questa soluzione presenta le limitazioni seguenti.
- Ogni risorsa locale richiede un mapping di porte distinto in ogni macchina virtuale proxy. Per più risorse dello stesso tipo sulla stessa porta predefinita, usare porte diverse nell'interfaccia di rete della macchina virtuale proxy (ad esempio, 3306, 3307 o 3308) o usare macchine virtuali proxy separate.
- È necessario effettuare il provisioning e gestire le macchine virtuali proxy e l'host del tunnel locale.
- Un servizio di bilanciamento del carico blocca la connettività Internet in uscita predefinita per le macchine virtuali nel pool back-end. Installare i pacchetti necessari prima di aggiungere macchine virtuali al pool.
- Il pulsante Test Connection nell'interfaccia utente di Azure Databricks non funziona per le connessioni dell'endpoint privato.
- In modalità di accesso condiviso, le librerie JDBC di Maven sono disponibili solo nel nodo driver. Usare la modalità di accesso utente singolo per i carichi di lavoro JDBC.