Configuration IP flottante d’Azure Load Balancer

L’équilibreur de charge offre plusieurs fonctionnalités pour les applications UDP et TCP.

IP flottante

Dans certains scénarios d’application, il est préférable ou nécessaire que plusieurs instances d’application utilisent le même port sur une machine virtuelle du pool principal. Des exemples courants de réutilisation de port incluent le clustering pour la haute disponibilité, les appliances réseau virtuelles, ainsi que l’exposition de plusieurs points de terminaison TLS sans nouveau chiffrement.

État d’adresse IP flottante Résultat
Adresse IP flottante activée Azure fait passer le mappage d’adresses IP à l’adresse IP frontale de l’équilibreur de charge
Adresse IP flottante désactivée Azure expose l’adresse IP des instances de machine virtuelle

Si vous souhaitez réutiliser le port principal pour plusieurs règles, vous devez activer la fonctionnalité d’adresse IP flottante dans la définition des règles. L’activation de l’adresse IP flottante permet une plus grande flexibilité.

Dans les schémas, vous voyez comment fonctionne le mappage d’adresses IP avant et après l’activation des IP flottantes : Ce schéma montre le trafic réseau qui traverse un équilibreur de charge avant l’activation des IP flottantes.

Ce schéma montre le trafic réseau qui traverse un équilibreur de charge après l’activation des IP flottantes.

Vous configurez l’IP flottante sur une règle d’équilibreur de charge par le biais du portail Azure, de l’API REST, de l’interface CLI, de PowerShell ou d’un autre client. En plus de la règle, vous devez configurer le système d’exploitation invité de votre machine virtuelle pour utiliser l’IP flottante.

Diagramme du trafic de l’équilibreur de charge pour plusieurs adresses IP frontales avec une adresse IP flottante.

Pour ce scénario, chaque machine virtuelle du pool principal a trois interfaces réseau :

  • IP serveur principale : carte réseau virtuelle associée à la machine virtuelle (configuration IP de ressource de carte réseau d’Azure).
  • Frontend 1(FIP1) : interface de bouclage du SE invité qui est configurée avec l’adresse IP de FIP1.
  • Frontend 2 (FIP2) : interface de bouclage du SE invité qui est configurée avec l’adresse IP de FIP2.

Prenons pour exemple la même configuration frontale que dans le scénario précédent :

Serveur frontal Adresse IP protocol port
serveur frontal vert 1 65.52.0.1 TCP 80
serveur frontal violet 2 65.52.0.2 TCP 80

Nous définissons deux règles IP flottantes :

Règle Serveur frontal Mapping au pool principal
1 règle verte FIP1:80 serveur principal vert FIP1:80 (dans VM1 et VM2)
2 règle violette FIP2:80 serveur principal violet FIP2:80 (dans VM1 et VM2)

Le tableau suivant présente le mappage complet de l’équilibrage de charge :

Règle Adresse IP du serveur frontal protocol port Destination port
règle verte 1 65.52.0.1 TCP 80 identique au serveur frontal (65.52.0.1) identique au serveur frontal (80)
règle violette 2 65.52.0.2 TCP 80 identique au serveur frontal (65.52.0.2) identique au serveur frontal (80)

La destination du flux entrant est maintenant l’adresse IP de serveur frontal sur l’interface de bouclage de la machine virtuelle. Chaque règle doit produire un flux avec une combinaison unique d’adresse IP de destination et de port de destination. La réutilisation de port est possible sur la même machine virtuelle en modifiant l’adresse IP de destination en l’adresse IP frontale du flux. Votre service est exposé à l’équilibrage de charge en le liant à l’adresse IP du serveur frontal et au port de l’interface de bouclage associée.

Vous remarquerez que le port de destination ne change pas dans l’exemple. Dans un scénario d’adresse IP flottante, Azure Load Balancer prend également en charge la définition d’une règle d’équilibrage de charge pour modifier le port de destination principal afin qu’il soit différent du port de destination frontal.

Le type de règle faisant appel à l’adresse IP flottante constitue la base de plusieurs modèles de configuration d’équilibrage de charge. Un exemple actuellement disponible est la configuration Configurer un ou plusieurs écouteurs de groupe de disponibilité Always On. Au fil du temps, nous documenterons un plus grand nombre de ces scénarios. Pour plus d’informations sur les configurations de système d’exploitation invité spécifiques requises pour activer l’IP flottante, consultez Configuration de l’IP flottante Azure Load Balancer dans la section suivante.

Configuration du système d’exploitation invité pour l’IP flottante

Pour ce faire, vous configurez le système d’exploitation invité de la machine virtuelle pour recevoir tout le trafic lié à l’adresse IP frontale et au port de l’équilibreur de charge. La configuration de la machine virtuelle nécessite :

  • l’ajout d’une interface réseau de bouclage ;
  • la configuration de la boucle avec l’adresse IP frontale de l’équilibreur de charge ;
  • de s’assurer que le système peut envoyer/recevoir des paquets sur des interfaces dont l’adresse IP n’est pas affectée à cette interface. Les systèmes Windows nécessitent des interfaces de définition pour utiliser le modèle « hôte faible ». Pour les systèmes Linux, ce modèle est normalement utilisé par défaut.
  • la configuration du pare-feu hôte pour autoriser le trafic sur le port IP frontal.

Notes

Les exemples ci-dessous utilisent tous IPv4 ; pour utiliser IPv6, remplacez « ipv4 » par « ipv6 ». Notez également que l’adresse IP flottante pour IPv6 ne fonctionne pas pour les équilibreurs de charge internes.

Windows Server

Développez

Pour chaque machine virtuelle du pool de back-ends, exécutez les commandes suivantes à une invite de commandes Windows sur le serveur.

Pour obtenir la liste des noms d’interfaces que vous avez sur votre machine virtuelle, tapez la commande suivante :

netsh interface ipv4 show interface 

Pour la carte réseau de machine virtuelle (managée par Azure), tapez la commande suivante :

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(remplacez interfacename par le nom de cette interface)

Pour chaque interface de bouclage que vous avez ajoutée, répétez les commandes suivantes :

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

(remplacez loopbackinterface par le nom de cette interface de bouclage et floatingip et floatingipnetmask par les valeurs appropriées, par exemple celles qui correspondent à l’adresse IP frontale de l’équilibreur de charge)

Enfin, l’hôte invité utilise un pare-feu, assurez-vous qu’une règle est configurée afin que le trafic puisse atteindre la machine virtuelle sur les ports appropriés.

Cette exemple de configuration suppose une configuration IP frontale de l’équilibreur de charge de 1.2.3.4 et une règle d’équilibrage de charge pour le port 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

Développez

Pour chaque machine virtuelle du pool de back-ends, exécutez les commandes suivantes via une session SSH.

Pour obtenir la liste des noms d’interfaces que vous avez sur votre machine virtuelle, tapez la commande suivante :

ip addr

Pour chaque interface de bouclage, répétez ces commandes, qui attribuent l’adresse IP flottante à l’alias de bouclage :

sudo ip addr add floatingip/floatingipnetmask dev lo:0

(remplacez floatingip et floatingipnetmask par les valeurs appropriées qui correspondent à l’adresse IP frontale de l’équilibreur de charge)

Enfin, l’hôte invité utilise un pare-feu, assurez-vous qu’une règle est configurée afin que le trafic puisse atteindre la machine virtuelle sur les ports appropriés.

Cette exemple de configuration suppose une configuration IP frontale de l’équilibreur de charge de 1.2.3.4 et une règle d’équilibrage de charge pour le port 80. Cet exemple suppose également l’utilisation d’UFW (Uncomplicated Firewall) dans Ubuntu.

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

Limitations

  • Une fois l’IP flottante activée sur une règle d’équilibrage de charge, votre application doit utiliser la configuration IP principale de l’interface réseau pour le trafic sortant.
  • Vous ne pouvez pas utiliser l’IP flottante sur des configurations IPv4 secondaires pour des scénarios d’équilibrage de charge. Cette limitation ne s’applique pas aux équilibreurs de charge publics avec des configurations à double pile (IPv4 et IPv6), ni aux architectures qui utilisent une passerelle NAT Gateway pour la connectivité sortante.
  • Si votre application se lie à l’adresse IP front-end configurée sur l’interface de bouclage du système d’exploitation invité, la sortie Azure ne réécrit pas le flux sortant, et le flux échoue. Passez en revue les scénarios de sortie.

Étapes suivantes