Les instances Application Load Balancer (ALB) à pile double prennent en charge l'affinité de version IP. Cette fonctionnalité redirige les requêtes IPv4 vers des serveurs backend IPv4 et les requêtes IPv6 vers des serveurs backend IPv6. Elle simplifie l'architecture réseau en acheminant le trafic selon la version du protocole IP.
L'affinité de version IP est une fonctionnalité sur liste blanche. Pour l'utiliser, contactez votre gestionnaire commercial.
Architecture de la solution
Problème
Lors de la migration d'IPv4 vers IPv6, les services pour les deux protocoles doivent souvent coexister. Lorsqu'un groupe de serveurs contient à la fois des serveurs backend IPv4 et IPv6, une instance ALB ne différencie pas par défaut les versions de protocole IP des clients. Elle transfère le trafic uniquement selon l'algorithme de planification configuré, tel que le tourniquet pondéré ou le nombre minimal de connexions pondéré.
Cette situation peut entraîner une redirection inter-protocole, où une requête provenant d'un client IPv6 est envoyée à un serveur backend compatible uniquement avec IPv4, ou inversement. Cette incompatibilité de protocole peut provoquer les problèmes suivants :
Des interruptions de service surviennent lorsqu'une application backend, qui écoute une seule version de protocole, reçoit une requête utilisant un autre protocole et ne parvient pas à la traiter.
La redirection mixte ne prend pas en charge les services qui doivent gérer le trafic différemment selon la version du protocole IP du client, comme la répartition du trafic basée sur le protocole ou le routage prioritaire IPv6.
Solution
Les groupes de serveurs ALB prennent en charge l'affinité de version IP. Lorsqu'elle est activée, les requêtes IPv4 sont transférées exclusivement vers des serveurs backend IPv4 et les requêtes IPv6 vers des serveurs backend IPv6, ce qui évite les interruptions de service causées par la redirection inter-protocole. Si tous les serveurs backend d'un protocole donné échouent aux vérifications d'état, les requêtes sont distribuées au mieux parmi ces serveurs non sains plutôt que d'être acheminées vers des serveurs de l'autre protocole.
Prérequis
Vous avez enregistré un nom de domaine personnalisé. L'instance ALB décrite dans cette rubrique étant déployée dans la région Chine (Shanghai), le nom de domaine doit disposer d'un enregistrement ICP.
Procédure
Avant de commencer, assurez-vous d'avoir créé un VPC VPC1 dans la région Chine (Shanghai), des vSwitches VSW1 et VSW2 respectivement dans la zone de disponibilité E et la zone de disponibilité G, et d'avoir activé IPv6 pour les vSwitches.
Étape 1 : Créer des instances ECS et déployer les services
-
Créez deux instances ECS selon les configurations suivantes.
Nom de l'instance
Région
VPC
vSwitch
Version IP
Image
ecs-ipv4
Chine (Shanghai)
VPC1VSW1IPv4
Alibaba Cloud Linux 3.2104 LTS 64 bits
ecs-ipv6
VSW2IPv6
Lors de la création de l'instance ECS, dans la section Network and Security Group, sélectionnez Assign IPv6 Address for Free.
-
Connectez-vous aux instances
ecs-ipv4etecs-ipv6et exécutez la commande suivante pour déployer le service Nginx.ecs-ipv4
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv4 backend" | sudo tee /usr/share/nginx/html/index.htmlecs-ipv6
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html -
Ajoutez des règles entrantes à haute priorité aux groupes de sécurité des deux instances ECS afin d'autoriser le trafic sur le port 80.
Nom de l'instance
Action
Protocole
Source
Destination (cette instance)
ecs-ipv4
Autoriser
TCP personnalisé
Après avoir sélectionné
IPv4, sélectionnezVPC CIDR Block.Pour
Port, sélectionnezHTTP (80).ecs-ipv6
Sélectionnez
IPv6, puis sélectionnezThis VPC's CIDR block.Pour plus d'informations, consultez les rubriques Créer une instance à l'aide de l'assistant , Se connecter à une instance ECS et Ajouter une règle de groupe de sécurité .
Étape 2 : Créer une instance ALB à pile double
Connectez-vous à la console ALB, sélectionnez la région Chine (Shanghai) et cliquez sur Create ALB.
-
Spécifiez les paramètres suivants, conservez les valeurs par défaut pour les autres options et cliquez sur Buy Now :
Instance Network Type : Sélectionnez Public.
VPC : Sélectionnez
VPC1.Availability Zone : Sélectionnez la zone de disponibilité E et la zone de disponibilité G, les vSwitches correspondants
VSW1etVSW2, ainsi que Auto-assign Public IP.Address Type : Sélectionnez Dual-stack.
-
Edition (Instance Fee) : Sélectionnez Standard.
L'affinité de version IP est prise en charge uniquement par les instances ALB Standard et WAF-enhanced, et non par les instances Basic ou Advanced.
Une fois l'instance créée, cliquez sur son ID pour ouvrir la page Instance Details. Dans la section Basic Information, localisez Network Type et cliquez sur Change Network Type à côté de IPv6: Private. Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
Étape 3 : Créer un groupe de serveurs à pile double avec affinité
Dans la console des groupes de serveurs, cliquez sur Create Server Group.
-
Spécifiez les paramètres suivants et cliquez sur Create :
-
Server Group Type : Sélectionnez Server.
L'affinité de version IP est disponible uniquement pour les groupes de serveurs de type Server et IP.
Server Group Name : Saisissez
sgp-alb-dualstack.VPC : Sélectionnez
VPC1.Backend Server Protocol : Sélectionnez HTTP.
-
Dans la section Protocol Configuration, effectuez les configurations suivantes :
IP Version : Sélectionnez IPv4/IPv6 dual-stack. Cela vous permet d'ajouter des serveurs backend IPv4 et IPv6.
IP Version Affinity : Sélectionnez Affinity mode. Lorsqu'elle est activée, les requêtes IPv4 sont transférées uniquement vers les backends IPv4 et les requêtes IPv6 uniquement vers les backends IPv6.
-
Cliquez sur Add Backend Server dans la boîte de dialogue The server group is created. Dans la colonne IP, sélectionnez une adresse IPv4 pour
ecs-ipv4et une adresse IPv6 pourecs-ipv6. Sélectionnez les deux instances et cliquez sur Next.À l'étape Ports/Weights, définissez le Port des deux serveurs sur
80et cliquez sur OK pour terminer l'ajout.
Étape 4 : Créer un écouteur
Dans la console ALB, cliquez sur l'ID de l'instance cible pour accéder à sa page de détails. Sous l'onglet Listener, cliquez sur Create Listener.
-
À l'étape Configure Listener, définissez le paramètre Listener Protocol sur HTTP , saisissez
80pour le paramètre Listener Port et cliquez sur Next.Cette rubrique utilise un écouteur HTTP pour illustrer la capacité de redirection avec affinité. Nous recommandons d'utiliser un écouteur HTTPS dans un environnement de production.
À l'étape Select Server Group, sélectionnez le groupe de serveurs
sgp-alb-dualstacket cliquez sur Next.À l'étape Configuration Review, confirmez la configuration et cliquez sur Submit.
Étape 5 : Configurer la résolution DNS
Créez un enregistrement CNAME pour mapper votre nom de domaine personnalisé au nom DNS de l'instance ALB.
L'exemple suivant utilise Alibaba Cloud DNS. Si votre domaine n'est pas enregistré auprès d'Alibaba Cloud, vous devez d'abord ajouter le nom de domaine à la console Alibaba Cloud DNS.
Dans la console ALB, copiez le Domain Name de l'instance cible.
Connectez-vous à la console Alibaba Cloud DNS. Dans la colonne Actions correspondant à votre domaine cible, cliquez sur Settings. Sur la page Settings, cliquez sur Add Record.
-
Ajoutez un enregistrement CNAME avec les paramètres suivants et cliquez sur OK :
Record Type : Sélectionnez CNAME.
Hostname : Saisissez un préfixe de nom de domaine, par exemple
test. Si votre domaine racine estexample.com, le nom de domaine utilisé pour accéder à l'ALB esttest.example.com.Query Source et TTL : Conservez les valeurs par défaut.
Record Value : Saisissez le nom DNS de l'instance ALB.
Dans la boîte de dialogue Change Resource Record Confirmation, vérifiez les informations DNS et cliquez sur OK.
Étape 6 : Vérifier la redirection avec affinité
Lorsqu'un client résout le nom de domaine personnalisé d'une instance ALB à pile double, le serveur DNS renvoie un enregistrement A (IPv4) ou AAAA (IPv6) en fonction des capacités réseau du client.
Tester les requêtes IPv4
curl -4 http://test.example.com
Toutes les requêtes doivent renvoyer Hello from IPv4 backend, ce qui confirme que le trafic IPv4 est redirigé vers le backend IPv4 ecs-ipv4.
Tester les requêtes IPv6
curl -6 http://test.example.com
Toutes les requêtes doivent renvoyer Hello from IPv6 backend, ce qui confirme que le trafic IPv6 est redirigé vers le backend IPv6 ecs-ipv6.
Vérifier l'isolation de l'affinité
Arrêtez le service Nginx sur
ecs-ipv4:sudo systemctl stop nginx.Testez à nouveau la requête IPv4. La requête échouera et ne sera pas redirigée vers le backend IPv6
ecs-ipv6.Rétablissez le service
ecs-ipv4:sudo systemctl start nginx. Les requêtes IPv4 reprennent leur fonctionnement normal.
Informations complémentaires
Facturation
Instance ALB : ALB prend en charge le paiement à l'utilisation (postpayé) et les plans de ressources (prépayés). Pour plus d'informations, consultez la rubrique Règles de facturation d'ALB.
Instance ECS : Pour plus de détails, consultez la rubrique Présentation de la facturation pour ECS. Si vous créez une instance ECS à des fins de test, nous vous recommandons d'utiliser une instance à faible spécification en paiement à l'utilisation et de la libérer rapidement après utilisation.
Frais de nom de domaine et de résolution DNS : En plus des frais de nom de domaine facturés par votre fournisseur, vous devez payer la résolution DNS publique faisant autorité lorsque vous configurez la résolution DNS sur Alibaba Cloud.
Frais de réseau public : Vous êtes facturé pour l'adresse IP publique associée à l'instance ALB et pour la bande passante publique IPv6 du VPC dans lequel réside l'instance.
Régions prenant en charge les instances ALB à pile double
|
Zone géographique |
Région |
|
Chine |
Chine (Hangzhou), Chine (Shanghai), Chine (Shenzhen), Chine (Heyuan), Chine (Chengdu), Chine (Qingdao), Chine (Beijing), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Hong Kong), Chine (Guangzhou) |
|
Asie-Pacifique |
Singapour, Malaisie (Kuala Lumpur), Japon (Tokyo), Indonésie (Jakarta), Corée du Sud (Seoul), Philippines (Manila) et Thaïlande (Bangkok) |
|
Europe et Amériques |
Royaume-Uni (Londres), Allemagne (Francfort), États-Unis (Virginie), États-Unis (Silicon Valley) et Mexique |
|
Moyen-Orient |
SAU (Riyadh - Partner Region) |
Considérations pour la production
Déploiement haute disponibilité : Déployez les serveurs backend dans plusieurs zones de disponibilité. Assurez la redondance pour les backends IPv4 et IPv6 afin d'éviter les points de défaillance uniques.
Configuration des vérifications d'état : Ajustez l'intervalle, le délai d'expiration et les seuils des vérifications d'état en fonction des exigences de votre service afin de retirer rapidement les serveurs défectueux de la rotation.
FAQ
Le mode affinité peut-il rediriger IPv4 vers IPv6 ?
Non. Lorsque l'affinité de version IP est activée, les requêtes IPv4 sont envoyées uniquement aux serveurs backend IPv4 et les requêtes IPv6 uniquement aux serveurs backend IPv6. Aucune redirection inter-protocole ne se produit.
Gestion des requêtes IPv6 avec des backends IPv4 uniquement
Si l'affinité de version IP est désactivée, ALB peut traduire les requêtes IPv6 en IPv4 avant de les envoyer aux serveurs backend. Si l'affinité de version IP est activée, les requêtes IPv6 ne peuvent pas être redirigées vers des backends compatibles uniquement avec IPv4. Assurez-vous que votre groupe de serveurs contient des serveurs backend IPv4 et IPv6 sains.
Modification de la version d'adresse IP d'un groupe de serveurs
Non. Le paramètre IP Version (IPv4 ou IPv4/IPv6 dual-stack) d'un groupe de serveurs ne peut pas être modifié après sa création. Pour modifier ce paramètre, vous devez créer un nouveau groupe de serveurs et supprimer l'ancien.
Modification de l'affinité de version IP d'un groupe de serveurs
Oui. Dans la console des groupes de serveurs, cliquez sur Modify Basic Information dans la colonne Actions correspondant au groupe de serveurs à pile double cible.
Vous pouvez modifier le paramètre IP Version Affinity uniquement pour les groupes de serveurs créés avec le paramètre IP Version défini sur IPv4/IPv6 dual-stack .
Association de groupes à pile double avec des ALB IPv4 uniquement
Non. Un groupe de serveurs à pile double ne peut être associé qu'à des écouteurs sur une instance ALB à pile double.