Configurazione IP mobile di Azure Load Balancer

Load Balancer offre numerose funzionalità per le applicazioni UDP e TCP.

IP mobile

Alcuni scenari di applicazione preferiscono o richiedono l'uso della stessa porta da parte di più istanze dell'applicazione in una singola macchina virtuale nel pool back-end. Esempi comuni di riutilizzo delle porte includono il clustering per la disponibilità elevata, le appliance virtuali di rete e l'esposizione di più endpoint TLS senza rieseguire la crittografia di rete.

Stato IP mobile Risultato
IP mobile abilitato Azure modifica il mapping dell'indirizzo IP all'indirizzo IP front-end del servizio di bilanciamento del carico
IP mobile disabilitato Azure espone l'indirizzo IP delle istanze della macchina virtuale

Per riutilizzare la porta di back-end tra più regole, è necessario abilitare l'indirizzo IP mobile nella definizione della regola. L'abilitazione dell'IP mobile consente una maggiore flessibilità.

Nei diagrammi viene illustrato il funzionamento del mapping degli indirizzi IP prima e dopo l'abilitazione dell'IP mobile: Questo diagramma mostra il traffico di rete tramite un servizio di bilanciamento del carico prima di abilitare l'indirizzo IP mobile.

Questo diagramma mostra il traffico di rete attraverso un servizio di bilanciamento del carico dopo l'abilitazione dell'indirizzo IP mobile.

L'indirizzo IP mobile viene configurato in una regola di Load Balancer tramite il portale di Azure, l'API REST, l'interfaccia della riga di comando, PowerShell o un altro client. Oltre alla configurazione della regola, è necessario configurare anche il sistema operativo guest della macchina virtuale per usare l'indirizzo IP mobile.

Diagramma del traffico del servizio di bilanciamento del carico per più indirizzi IP front-end con IP mobile.

Per questo scenario, ogni macchina virtuale nel pool back-end ha tre interfacce di rete:

  • Indirizzo IP back-end: scheda di interfaccia di rete virtuale associata alla macchina virtuale (configurazione IP della risorsa interfaccia di rete di Azure).
  • Front-end 1 (FIP1): interfaccia di loopback all'interno del sistema operativo guest configurato con l'indirizzo IP di FIP1.
  • Front-end 2 (FIP2): interfaccia di loopback all'interno del sistema operativo guest configurato con l'indirizzo IP di FIP2.

Si supponga la stessa configurazione front-end dello scenario precedente:

Front-end Indirizzo IP protocollo port
front-end verde 1 65.52.0.1 TCP 80
front-end viola 2 65.52.0.2 TCP 80

Vengono definite due regole per l'indirizzo IP mobile:

Regola Front-end Mapping al pool back-end
1 regola verde FIP1:80 back-end verde FIP1:80 (in VM1 e VM2)
2 regola viola FIP2:80 back-end viola FIP2:80 (in VM1 e VM2)

La tabella seguente illustra il mapping completo nel servizio di bilanciamento del carico:

Regola Indirizzo IP front-end IP protocollo port Destinazione port
regola verde 1 65.52.0.1 TCP 80 uguale a front-end (65.52.0.1) uguale a front-end (80)
regola viola 2 65.52.0.2 TCP 80 uguale a front-end (65.52.0.2) uguale a front-end (80)

La destinazione del flusso in ingresso è ora l'indirizzo IP del front-end nell'interfaccia di loopback della macchina virtuale. Ogni regola deve produrre un flusso con una combinazione univoca di indirizzo IP di destinazione e porta di destinazione. Modificando l'indirizzo IP di destinazione del flusso, è possibile riutilizzare la porta nella stessa macchina virtuale. Il servizio viene esposto al servizio di bilanciamento del carico associandolo all'indirizzo IP del front-end e alla porta dell'interfaccia di loopback corrispondente.

Si noti che nell'esempio la porta di destinazione non cambia. Negli scenari con indirizzo IP mobile, Azure Load Balancer supporta anche la definizione di una regola di bilanciamento del carico per modificare la porta di destinazione back-end e per differenziarla dalla porta di destinazione front-end.

Il tipo di regola con indirizzo IP mobile è alla base di diversi modelli di configurazione del servizio di bilanciamento di carico. Un esempio attualmente disponibile è la configurazione Configurare uno o più listener del gruppo di disponibilità AlwaysOn. Altri scenari di questo tipo verranno documentati nel tempo. Per informazioni più dettagliate sulle configurazioni specifiche del sistema operativo guest necessarie per abilitare l'indirizzo IP mobile, vedere Configurazione IP mobile di Azure Load Balancer nella sezione successiva.

Configurazione del sistema operativo guest IP mobile

Per funzionare, configurare il sistema operativo guest per la macchina virtuale per ricevere tutto il traffico associato per l'IP front-end e la porta del bilanciamento del carico. La configurazione della macchina virtuale richiede quanto segue:

  • aggiunta di un'interfaccia di rete loopback
  • configurazione del loopback con l'indirizzo IP front-end del bilanciamento del carico
  • garantire che il sistema possa inviare/ricevere pacchetti sulle interfacce che non hanno l'indirizzo IP assegnato a tale interfaccia. I sistemi Windows richiedono l'impostazione delle interfacce per l'uso del modello "host debole". Per i sistemi Linux, questo modello normalmente viene usato per impostazione predefinita.
  • configurazione del firewall host per consentire il traffico sulla porta IP front-end.

Nota

Gli esempi seguenti usano tutti IPv4; per usare IPv6, sostituire "ipv4" con "ipv6". Si noti anche che l'indirizzo IP mobile per IPv6 non funziona per i Load Balancer interni.

Windows Server

Espandi

Per ogni macchina virtuale nel pool back-end, eseguire i comandi seguenti al prompt dei comandi di Windows nel server.

Per ottenere l'elenco dei nomi di interfaccia disponibili nella macchina virtuale, digitare questo comando:

netsh interface ipv4 show interface 

Per la scheda di interfaccia di rete della macchina virtuale (gestita da Azure), digitare questo comando

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(sostituire "interfacename" con il nome di questa interfaccia).

Per ogni interfaccia di loopback aggiunta, ripetere questi comandi:

netsh interface ipv4 add addr floatingipaddress floatingip floatingipnetmask
netsh interface ipv4 set interface floatingipaddress weakhostreceive=enabled  weakhostsend=enabled 

(sostituire loopbackinterface con il nome di questa interfaccia loopback e floatingip e floatingipmask con i valori appropriati che corrispondono all'IP front-end del bilanciamento del carico)

Infine, se l'host guest usa un firewall, assicurarsi che una regola sia configurata in modo che il traffico possa raggiungere la macchina virtuale sulle porte appropriate.

Questa configurazione di esempio presuppone una configurazione IP front-end del servizio di bilanciamento del carico 1.2.3.4 e una regola di bilanciamento del carico per la porta 80:

netsh int ipv4 set int "Ethernet" weakhostreceive=enabled
netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0
netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled
netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes

Ubuntu

Espandi

Per ogni macchina virtuale nel pool back-end, eseguire i comandi seguenti tramite una sessione SSH.

Per ottenere l'elenco dei nomi di interfaccia disponibili nella macchina virtuale, digitare questo comando:

ip addr

Per ogni interfaccia di loopback, ripetere questi comandi, che assegnano l'IP mobile all'alias di loopback:

sudo ip addr add floatingip/floatingipnetmask dev lo:0

(sostituire floatingip e floatingipnetmask con i valori appropriati che corrispondono all'IP front-end del bilanciamento del carico)

Infine, se l'host guest usa un firewall, assicurarsi che una regola sia configurata in modo che il traffico possa raggiungere la macchina virtuale sulle porte appropriate.

Questa configurazione di esempio presuppone una configurazione IP front-end del servizio di bilanciamento del carico 1.2.3.4 e una regola di bilanciamento del carico per la porta 80. In questo esempio si presuppone anche l'uso di UFW (Uncomplicated Firewall) in Ubuntu.

sudo ip addr add 1.2.3.4/24 dev lo:0
sudo ufw allow 80/tcp

Limitazioni

  • Con l'indirizzo IP mobile abilitato in una regola di bilanciamento del carico, l'applicazione deve usare la configurazione IP primaria dell'interfaccia di rete per l'uscita.
  • Non è possibile usare l'indirizzo IP mobile nelle configurazioni IPv4 secondarie per gli scenari di bilanciamento del carico. Questa limitazione non si applica ai servizi di bilanciamento del carico pubblico con configurazioni dual-stack (IPv4 e IPv6) o alle architetture che usano un gateway NAT per la connettività in uscita.
  • Se l'applicazione viene associata all'indirizzo IP front-end configurato nell'interfaccia di loopback nel sistema operativo guest, il flusso in uscita di Azure non riscriverà il flusso in uscita e il flusso non riesce. Esaminare gli scenari in uscita.

Passaggi successivi