Résoudre les problèmes courants de connectivité sortante dans Azure Load Balancer

Obtenez de l’aide pour résoudre les problèmes de connexion sortante dans Azure Load Balancer. Cela inclut la compréhension de la traduction d’adresses réseau sources (SNAT) et son impact sur les connexions, l’utilisation d’adresses IP publiques individuelles sur les machines virtuelles et la conception d’applications pour améliorer l’efficacité des connexions et éviter l’insuffisance de ports SNAT. La plupart des problèmes de connectivité sortante que les clients rencontrent sont dus à une insuffisance de ports SNAT et à l’expiration des délais de connexion, ce qui entraîne une perte de paquets.

Pour en savoir plus sur les ports SNAT, consultez Traduction d’adresses réseau source pour les connexions sortantes.

Comprendre l’utilisation de votre port SNAT

Suivez Diagnostics d’un équilibreur de charge standard avec des métriques, des alertes et l’intégrité des ressources pour surveiller l’utilisation et l’allocation du port SNAT de votre équilibreur de charge existant. Surveillez pour confirmer ou déterminer le risque d’épuisement SNAT. Si vous rencontrez des difficultés pour comprendre le comportement de votre connexion sortante, utilisez des statistiques de pile IP (netstat) ou collectez des captures de paquets. Vous pouvez effectuer ces captures de paquets dans le SE invité de votre instance, ou utiliser le Network Watcher pour la capture des paquets. Pour la plupart des scénarios, Azure recommande d’utiliser une passerelle NAT pour la connectivité sortante afin de réduire le risque d’épuisement SNAT. Une passerelle NAT est fortement recommandée si votre service lance des connexions sortantes TCP ou UDP répétées vers la même destination.

Optimiser vos déploiements Azure pour la connectivité sortante

Il est important d’optimiser vos déploiements Azure pour la connectivité sortante. L’optimisation peut empêcher ou atténuer les problèmes liés à la connectivité sortante.

Déployer une passerelle NAT pour la connectivité Internet sortante

Azure NAT Gateway est un service Azure hautement résilient et évolutif qui fournit une connectivité sortante à Internet à partir de votre réseau virtuel. La méthode unique d’une passerelle NAT permettant de consommer des ports SNAT permet de résoudre les problèmes courants d’épuisement et de connexion SNAT. Pour plus d’informations sur Azure NAT Gateway, consultez Qu’est-ce qu’Azure NAT Gateway ?.

  • Comment une passerelle NAT réduit-elle le risque d’épuisement des ports SNAT ?

    Azure Load Balancer alloue des quantités fixes de ports SNAT à chaque instance de machine virtuelle dans un pool principal. Cette méthode d’allocation peut conduire à l’épuisement du SNAT, notamment si des modèles de trafic irrégulier font qu’une machine virtuelle spécifique envoie un volume plus important de connexions sortantes. Contrairement à l’équilibreur de charge, une passerelle NAT alloue dynamiquement les ports SNAT dans toutes les instances de machine virtuelle au sein d’un sous-réseau.

    Une passerelle NAT rend les ports SNAT disponibles accessibles à chaque instance d’un sous-réseau. Cette allocation dynamique permet aux instances de machine virtuelle d’utiliser le nombre de ports SNAT dont chacun a besoin à partir du pool de ports disponible pour les nouvelles connexions. L’allocation dynamique réduit le risque d’épuisement SNAT.

    Diagramme d’Azure Load Balancer et d’Azure NAT Gateway.

  • Sélection du port et comportement de réutilisation.

    Une passerelle NAT sélectionne les ports au hasard dans le pool de ports disponible. S’il n’existe pas de ports disponibles, les ports SNAT sont réutilisés tant qu’il n’existe aucune connexion existante vers le même port et la même IP publique de destination. Ce comportement de sélection et de réutilisation des ports d’une passerelle NAT la rend moins susceptible de subir des interruptions de connexion.

    Pour en savoir plus sur le fonctionnement de SNAT et d’utilisation des ports pour la passerelle NAT, consultez Notions de base de SNAT. Dans certaines conditions, vous ne pourrez pas utiliser la passerelle NAT pour les connexions sortantes. Pour plus d’informations sur les limitations NAT Gateway, consultez Limitations NAT Gateway.

    Si vous ne parvenez pas à utiliser une passerelle NAT pour la connectivité sortante, reportez-vous aux autres options de migration décrites dans cet article.

Configurer des règles sortantes de l’équilibreur de charge pour optimiser les ports SNAT par machine virtuelle

Si vous utilisez un équilibreur de charge standard public et que vous rencontrez des défaillances d’épuisement ou de connexion SNAT, assurez-vous d’utiliser des règles de trafic sortant avec l’allocation manuelle des ports. Sinon, vous vous appuyez probablement sur l’accès sortant par défaut de l’équilibreur de charge. L’accès sortant par défaut alloue automatiquement un nombre conservateur de ports, basé sur le nombre d’instances de votre pool principal. L’accès sortant par défaut n’est pas une méthode recommandée pour activer les connexions sortantes. Lorsque votre pool principal est mis à l’échelle, vos connexions peuvent être affectées si les ports doivent être réaffectés.

Pour en savoir plus sur l’accès sortant par défaut et l’allocation de ports par défaut, consultez Traduction d’adresses réseau source pour les connexions sortantes.

Pour augmenter le nombre de ports SNAT disponibles par machine virtuelle, configurez les règles sortantes avec l’allocation manuelle des ports sur votre équilibreur de charge. Par exemple, si vous savez qu’il y a un maximum de 10 machines virtuelles dans votre pool principal, vous pouvez allouer 6 400 ports SNAT par machine virtuelle, plutôt que les 1 024 par défaut. Si vous avez besoin d’autres ports SNAT, vous pouvez ajouter plusieurs adresses IP frontales pour les connexions sortantes afin de multiplier le nombre de ports SNAT disponibles. Assurez-vous de comprendre pourquoi vous épuisez les ports SNAT avant d’ajouter d’autres adresses IP frontales.

Pour obtenir des instructions détaillées, consultez Concevoir vos applications pour utiliser efficacement les connexions plus loin dans cet article. Pour ajouter d’autres adresses IP pour les connexions sortantes, créez une configuration IP frontale pour chaque nouvelle adresse IP. Lorsque des règles de trafic sortant sont configurées, vous pouvez sélectionner plusieurs configurations IP frontales pour un pool principal. Il est recommandé d’utiliser différentes adresses IP pour la connectivité entrante et sortante. Différentes adresses IP isolent le trafic pour améliorer la surveillance et la résolution des problèmes.

Configurer une adresse IP publique individuelle sur une machine virtuelle

Pour les déploiements à plus petite échelle, vous pouvez envisager d’affecter une adresse IP publique à une machine virtuelle. Si une adresse IP publique est affectée à une machine virtuelle, tous les ports fournis par l’adresse IP publique sont disponibles pour la machine virtuelle. Contrairement à un équilibreur de charge ou une passerelle NAT, les ports sont accessibles uniquement à la seule machine virtuelle associée à l’adresse IP.

Nous vous recommandons vivement d’envisager d’utiliser la passerelle NAT à la place, car l’attribution d’adresses IP publiques individuelles n’est pas une solution évolutive.

Notes

Si vous devez connecter votre réseau virtuel Azure à des services PaaS Azure tels que Stockage Azure, Azure SQL, Azure Cosmos DB ou à d’autres services Azure disponibles, vous pouvez utiliser Azure Private Link pour éviter entièrement SNAT. Azure Private Link envoie le trafic de votre réseau virtuel aux services Azure via le réseau principal Azure au lieu d’Internet.

Private Link est l’option recommandée sur les points de terminaison de service pour l’accès privé aux services hébergés Azure. Pour plus d’informations sur la différence entre les points de terminaison Private Link et de service, consultez Comparer les points de terminaison privés et les points de terminaison de service.

Concevoir des applications efficaces en matière de connexion

Lorsque vous concevez vos applications, assurez-vous qu’elles utilisent efficacement les connexions. L’efficacité de la connexion peut réduire ou éliminer l’épuisement des ports SNAT dans vos applications déployées.

Modifier l’application pour réutiliser des connexions

Au lieu de générer des connexions TCP atomiques individuelles pour chaque requête, nous vous recommandons de configurer votre application pour réutiliser les connexions. La réutilisation des connexions se traduit par des transactions TCP plus performantes et est particulièrement pertinente pour les protocoles comme HTTP/1.1, où la réutilisation des connexions est la valeur par défaut. Cette réutilisation s’applique à d’autres protocoles qui utilisent HTTP comme transport, tel que REST.

Modifier l’application pour utiliser un regroupement de connexions

Utilisez un schéma de regroupement de connexions dans votre application, dans lequel les demandes sont distribuées en interne sur un ensemble fixe de connexions et réutilisées lorsque cela est possible. Ce schéma limite le nombre de ports SNAT utilisés et crée un environnement plus prévisible.

Il peut accroître le débit des demandes en autorisant plusieurs opérations simultanées quand une seule connexion se bloque sur la réponse d’une opération.

Il est possible que le regroupement de connexions existe déjà dans le framework que vous utilisez pour développer votre application ou dans les paramètres de configuration de votre application. Vous pouvez associer le regroupement de connexions à la réutilisation des connexions. Vos diverses demandes consomment alors un nombre de ports fixe et prévisible vers les mêmes adresse IP et port de destination.

Les demandes profitent d’une utilisation efficace des transactions TCP, ce qui réduit la latence et l’utilisation de ressources. Les transactions UDP peuvent également être appropriées. La gestion du nombre de flux UDP peut éviter des conditions d’épuisement et gérer l’utilisation du port de traduction d’adresses réseau sources.

Modifier l’application pour utiliser une logique de nouvelle tentative moins agressive

Lorsque les ports SNAT arrivent à épuisement ou que des applications échouent, des tentatives de reconnexion agressives ou par force brute sans logique de réduction ou d’interruption ne feront que générer ou accentuer le problème. Vous pouvez réduire la demande de ports SNAT en utilisant une logique de nouvelle tentative moins agressive.

Selon le délai d’inactivité configuré, si les nouvelles tentatives sont trop agressives, les connexions peuvent ne pas avoir suffisamment de temps pour fermer et libérer des ports SNAT pour la réutilisation.

Utiliser des conservations de connexion active pour réinitialiser le délai d’inactivité en sortie

Les règles sortantes de l’équilibreur de charge ont un délai d’inactivité de 4 minutes par défaut qui est ajustable jusqu’à 100 minutes. Vous pouvez également utiliser des conservations de connexion active pour actualiser un flux inactif et réinitialiser ce délai d’expiration, si nécessaire. Lorsque vous utilisez des conservations de connexion active TCP, il suffit de les activer sur un côté de la connexion.

Par exemple, il suffit de les activer sur le côté serveur uniquement pour réinitialiser la minuterie d’inactivité ; il est inutile que les 2 côtés lancent des conservations de connexion active. Des concepts similaires existent pour la couche d’application, notamment les configurations client-serveur de base de données. Examinez côté serveur les options de persistance de connexion spécifiques aux applications.

Étapes suivantes

Pour plus d’informations sur l’épuisement des ports SNAT, les options de connectivité sortante et l’accès sortant par défaut, consultez :