Les instances Application Load Balancer (ALB) à double pile prennent en charge l'affinité de version IP. Cette fonctionnalité transfère les requêtes IPv4 vers les serveurs principaux IPv4 et les requêtes IPv6 vers les serveurs principaux IPv6. Elle simplifie l'architecture réseau en acheminant le trafic selon la version du protocole IP.
Architecture de la solution
Problématique
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 principaux IPv4 et IPv6, une instance ALB ne distingue pas par défaut les versions de protocole IP des clients. Elle transfère le trafic uniquement sur la base de l'algorithme de planification configuré, tel que le tourniquet pondéré ou les connexions les moins nombreuses pondérées.
Cette situation peut entraîner un transfert inter-protocole, où une requête provenant d'un client IPv6 est envoyée à un serveur principal ne prenant en charge qu'IPv4, ou inversement. Cette incompatibilité de protocole peut provoquer les problèmes suivants :
Des interruptions de service surviennent lorsqu'une application principale, qui écoute une seule version de protocole, reçoit une requête utilisant un protocole différent et ne parvient pas à la traiter.
Le transfert 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. Une fois activée, les requêtes IPv4 sont transférées exclusivement vers les serveurs principaux IPv4 et les requêtes IPv6 vers les serveurs principaux IPv6, ce qui évite les interruptions de service causées par le transfert inter-protocole. Si tous les serveurs principaux d'un protocole donné échouent aux contrôles 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 est déployée dans la région Chine (Shanghai). Par conséquent, 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 avec une priorité élevée 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 à double pile
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, repérez 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 à double pile 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.
-
Développez Advanced Settings et configurez les éléments suivants :
IP Version : Sélectionnez IPv4/IPv6 dual-stack. Cela vous permet d'ajouter des serveurs principaux IPv4 et IPv6.
IP Version Affinity : Sélectionnez Affinity mode. Une fois activé, les requêtes IPv4 sont transférées uniquement vers les serveurs principaux IPv4 et les requêtes IPv6 uniquement vers les serveurs principaux 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 Listener Protocol sur HTTP , saisissez
80pour Listener Port et cliquez sur Next.Cette rubrique utilise un écouteur HTTP pour illustrer la capacité de transfert 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 le transfert avec affinité
Lorsqu'un client résout le nom de domaine personnalisé d'une instance ALB à double pile, 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 transféré vers le serveur principal 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 transféré vers le serveur principal IPv6 ecs-ipv6.
Vérifier l'isolation par 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 transférée vers le serveur principal IPv6
ecs-ipv6.Rétablissez le service
ecs-ipv4:sudo systemctl start nginx. Les requêtes IPv4 retrouvent un 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 ALB.
Instance ECS : Pour plus de détails, consultez la rubrique Présentation de la facturation 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 à double pile
|
Zone géographique |
Région |
|
Chine |
Chine (Hangzhou), Chine (Shanghai), Chine (Shenzhen), Chine (Heyuan), Chine (Chengdu), Chine (Qingdao), Chine (Pékin), Chine (Zhangjiakou), Chine (Ulanqab), Chine (Hong Kong), Chine (Guangzhou) |
|
Asie-Pacifique |
Singapour, Malaisie (Kuala Lumpur), Japon (Tokyo), Indonésie (Jakarta), Corée du Sud (Séoul), Philippines (Manille) et Thaïlande (Bangkok) |
|
Europe et Amériques |
Royaume-Uni (Londres), Allemagne (Francfort), États-Unis (Virginie), États-Unis (Silicon Valley) et Mexique |
|
Moyen-Orient |
Arabie Saoudite (Riyad - Région partenaire) |
Considérations pour la production
Déploiement haute disponibilité : Déployez les serveurs principaux sur plusieurs zones de disponibilité. Assurez la redondance pour les serveurs principaux IPv4 et IPv6 afin d'éviter les points de défaillance uniques.
Configuration du contrôle d'état : Ajustez l'intervalle de contrôle d'état, le délai d'expiration et les seuils en fonction des exigences de votre service afin de retirer rapidement les serveurs défectueux de la rotation.
FAQ
Le mode affinité peut-il transférer IPv4 vers IPv6 ?
Non. Lorsque l'affinité de version IP est activée, les requêtes IPv4 sont envoyées uniquement aux serveurs principaux IPv4 et les requêtes IPv6 uniquement aux serveurs principaux IPv6. Aucun transfert inter-protocole ne se produit.
Gestion des requêtes IPv6 avec des serveurs principaux 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 principaux. Si l'affinité de version IP est activée, les requêtes IPv6 ne peuvent pas être transférées vers des serveurs principaux ne prenant en charge qu'IPv4. Assurez-vous que votre groupe de serveurs contient des serveurs principaux IPv4 et IPv6 sains.
Modification de la version d'adresse IP d'un groupe de serveurs
Non. La IP Version (IPv4 ou IPv4/IPv6 dual-stack) d'un groupe de serveurs ne peut pas être modifiée après sa création. Pour changer 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 à double pile cible.
Vous pouvez modifier l'option IP Version Affinity uniquement pour les groupes de serveurs créés avec l'option IP Version définie sur IPv4/IPv6 dual-stack .
Association de groupes à double pile avec des ALB IPv4 uniquement
Non. Un groupe de serveurs à double pile ne peut être associé qu'à des écouteurs sur une instance ALB à double pile.