Les instances NLB à pile double prennent en charge l'affinité de version d'IP. Lorsqu'elle est activée, cette fonctionnalité achemine les requêtes IPv4 vers les serveurs principaux IPv4 et les requêtes IPv6 vers les serveurs principaux IPv6. Elle permet ainsi de router le trafic selon la version du protocole et de simplifier votre architecture réseau.
Architecture
Scénario
Lors de la migration d'IPv4 vers IPv6, les deux services doivent souvent coexister. Lorsqu'un groupe de serveurs contient à la fois des serveurs principaux IPv4 et IPv6, NLB ne distingue pas par défaut les versions d'IP des requêtes clientes. Il achemine le trafic uniquement sur la base de l'algorithme de planification, tel que le tourniquet (round-robin) ou le nombre minimal de connexions.
Cette configuration peut entraîner un acheminement inter-protocoles. Par exemple, une requête cliente IPv6 peut atteindre un serveur principal ne prenant en charge qu'IPv4, ou inversement. De telles incompatibilités peuvent provoquer les problèmes suivants :
Le serveur principal ne peut pas obtenir l'adresse IP réelle du client, ce qui affecte l'analyse régionale basée sur la source et le contrôle d'accès.
Pour obtenir l'adresse IP source, vous devez déployer une couche de proxy supplémentaire, telle que Nginx avec le protocole Proxy activé, ce qui augmente les coûts opérationnels.
Solution
Les groupes de serveurs NLB prennent en charge l'affinité de version d'IP pour un acheminement 4-vers-4 et 6-vers-6.
Les serveurs principaux peuvent obtenir directement les adresses IP clientes d'origine sans couche de proxy supplémentaire. Si tous les serveurs principaux d'un protocole spécifique échouent aux contrôles d'état, les requêtes sont acheminées dans la mesure du possible vers d'autres serveurs au sein du même groupe de protocole, mais ne sont pas routées vers d'autres protocoles.
Prérequis
Vous avez enregistré un nom de domaine personnalisé. Ce tutoriel utilise la région Chine (Shanghai) pour déployer l'instance NLB. Par conséquent, vous devez demander un fichier ICP pour votre nom de domaine.
Procédure
Avant de commencer, assurez-vous d'avoir créé un VPC nommé VPC1 dans la région Chine (Shanghai), créé les vSwitches VSW1 et VSW2 dans les zones de disponibilité E et G respectivement, et activé IPv6 sur les vSwitches.
1. Créer des instances ECS et déployer les services
-
Créez deux instances ECS avec les configurations suivantes.
Paramètre
Région
VPC
vSwitch
Version d'IP
Image
ecs-ipv4
Chine (Shanghai)
VPC1VSW1IPv4
Alibaba Cloud Linux 3.2104 LTS 64 bits
ecs-ipv6
VSW2IPv6
Lors de l'achat de l'instance ECS, dans la section Network and Security Groups, sélectionnez Assign IPv6 Address Free of Charge.
-
Connectez-vous à distance aux instances
ecs-ipv4etecs-ipv6, puis exécutez les commandes suivantes pour déployer les services 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 aux groupes de sécurité des deux instances ECS pour autoriser le trafic entrant sur le port 80. Assurez-vous que les règles ont une priorité suffisamment élevée.
Nom de l'instance
Action
Protocole
Source
Destination
ecs-ipv4
Autoriser
TCP personnalisé
Après avoir sélectionné
IPv4, sélectionnezCIDR block of this VPC.Après avoir sélectionné
Port Range, sélectionnezHTTP (80).ecs-ipv6
Après avoir sélectionné
IPv6, sélectionnezCIDR block of this VPC.
Pour plus d'informations, consultez les rubriques Créer une instance à l'aide de l'assistant , Se connecter à une instance ECS et Ajouter des règles de groupe de sécurité .
2. Créer une instance NLB à pile double
Connectez-vous à la console NLB, sélectionnez la région Chine (Shanghai), puis cliquez sur Create NLB.
-
Spécifiez les paramètres suivants, conservez les valeurs par défaut pour les autres options, puis cliquez sur Create :
Network Type : Sélectionnez Public.
VPC : Sélectionnez
VPC1.Zone : Sélectionnez les zones de disponibilité E et G, choisissez les vSwitches correspondants
VSW1etVSW2, puis sélectionnez Purchase EIP.IP Version : Sélectionnez Dual-Stack.
Une fois l'instance créée, cliquez sur son ID pour accéder à la page Instance Details. Dans la section Basic Information, repérez Network Type et cliquez sur Change Network Type à droite de IPv6: Private. Dans la boîte de dialogue qui s'affiche, cliquez sur OK. Vérifiez ensuite que le type de réseau IPv6 est désormais public.
3. Créer un groupe de serveurs à pile double et activer l'affinité
Dans la console Server Group, cliquez sur Create Server Group.
-
Spécifiez les paramètres suivants et cliquez sur Create :
Server Group Type : Sélectionnez Server.
Server Group Name : Saisissez
sgp-dualstack.VPC : Sélectionnez
VPC1.Backend Server Protocol : Sélectionnez TCP.
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. Lorsqu'elle est activée, les requêtes IPv4 sont acheminées uniquement vers les serveurs principaux IPv4 et les requêtes IPv6 uniquement vers les serveurs principaux IPv6.
-
Dans la boîte de dialogue The server group is created, cliquez sur Add Backend Server. Dans la colonne IP, sélectionnez l'adresse IPv4 pour
ecs-ipv4et l'adresse IPv6 pourecs-ipv6. Sélectionnez les deux instances et cliquez sur Next.Lors de l'ajout en masse de serveurs principaux IPv6, cliquez sur l'icône des paramètres à côté de l'en-tête de la colonne IP et sélectionnez Prefer IPv6 over IPv4 . Le système sélectionne alors par défaut les adresses IPv6 des serveurs.
À l'étape Ports/Weights, définissez le Port des deux serveurs sur
80et cliquez sur OK.
4. Créer un écouteur
Dans la console NLB, cliquez sur l'ID de l'instance cible pour accéder à la page Instance Details. Sous l'onglet Listener, cliquez sur Create Listener.
À l'étape Configure Listener, définissez le Listener Protocol sur TCP, saisissez
80pour le Listener Port, puis cliquez sur Next.À l'étape Select Server Group, sélectionnez le groupe de serveurs
sgp-dualstacket cliquez sur Next.À l'étape Configuration Review, confirmez la configuration et cliquez sur Submit.
5. Configurer les enregistrements DNS
Créez un enregistrement CNAME pour mapper votre nom de domaine personnalisé au nom DNS de l'instance NLB.
Ce tutoriel utilise Alibaba Cloud DNS à titre d'exemple. Si votre nom de 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 NLB, copiez le Domain Name de l'instance cible.
Connectez-vous à la console Alibaba Cloud DNS. Dans la colonne Actions de votre nom de 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 pour le nom de domaine, par exemple
test. Si votre nom de domaine racine estexample.com, le nom de domaine utilisé pour accéder à l'instance NLB esttest.example.com.Query Source et TTL : Conservez les valeurs par défaut.
Record Value : Saisissez le nom DNS de l'instance NLB.
Dans la boîte de dialogue Change Resource Record Confirmation, confirmez les informations de l'enregistrement DNS et cliquez sur OK.
6. Vérifier l'acheminement basé sur l'affinité
Lorsqu'un client accède à l'instance NLB à pile double via un nom de domaine personnalisé, le serveur DNS renvoie un enregistrement A (IPv4) ou AAAA (IPv6) en fonction de la version d'IP du client.
Tester les requêtes IPv4
curl -4 http://test.example.com
Après plusieurs requêtes, la réponse doit toujours être Hello from IPv4 backend. Cela indique que les requêtes IPv4 sont acheminées vers le serveur principal IPv4 ecs-ipv4.
Tester les requêtes IPv6
curl -6 http://test.example.com
Après plusieurs requêtes, la réponse doit toujours être Hello from IPv6 backend. Cela indique que les requêtes IPv6 sont acheminées vers le serveur principal IPv6 ecs-ipv6.
Vérifier l'isolation par affinité
Arrêtez le service Nginx sur
ecs-ipv4en exécutant la commande suivante :sudo systemctl stop nginx.Testez à nouveau la requête IPv4. La requête échoue et n'est pas acheminée vers le serveur principal IPv6
ecs-ipv6.Rétablissez le service sur
ecs-ipv4en exécutant la commande suivante :sudo systemctl start nginx. Les requêtes IPv4 fonctionnent désormais comme prévu.
Informations complémentaires
Facturation
Instance NLB : NLB prend en charge deux méthodes de facturation : paiement à l'utilisation et plan de ressources. Pour plus d'informations, consultez la rubrique Facturation NLB.
Instance ECS : Pour plus d'informations, consultez la rubrique Présentation de la facturation ECS. À des fins de test, créez une instance de faible spécification en paiement à l'utilisation et libérez-la après les tests pour éviter des frais inutiles.
Frais de nom de domaine et de résolution DNS : En plus des frais de nom de domaine facturés par votre fournisseur, Alibaba Cloud facture les frais DNS publics faisant autorité pour la résolution DNS.
Frais de réseau public : Des frais de réseau public s'appliquent à l'EIP associée à l'instance NLB et à la bande passante publique IPv6 du VPC où réside l'instance.
Régions prises en charge pour NLB à pile double
|
Zone |
Région |
|
Chine |
Chine (Hangzhou), Chine (Pékin), Chine (Shenzhen), Chine (Shanghai), Chine (Qingdao), Chine (Zhangjiakou), Chine (Chengdu), Chine (Guangzhou), Chine (Hong Kong), Chine (Heyuan), Chine (Ulanqab) |
|
Asie-Pacifique |
Thaïlande (Bangkok), Philippines (Manille), Singapour, Japon (Tokyo), Corée du Sud (Séoul), Malaisie (Kuala Lumpur), Indonésie (Jakarta) |
|
Europe et Amériques |
Allemagne (Francfort), Royaume-Uni (Londres), États-Unis (Virginie), États-Unis (Silicon Valley), Mexique |
|
Moyen-Orient |
Arabie saoudite (Riyad) |
Considérations pour l'environnement de production
Déploiement haute disponibilité : Déployez les serveurs principaux 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 contrôles d'état : Ajustez l'intervalle de contrôle d'état, le délai d'expiration et les seuils en fonction de vos besoins métier pour garantir que les serveurs défectueux soient rapidement retirés.
FAQ
Les requêtes IPv4 sont-elles acheminées vers les backends IPv6 en mode affinité ?
Non. Lorsque le mode affinité est activé, les requêtes IPv4 sont acheminées uniquement vers les serveurs principaux IPv4 et les requêtes IPv6 uniquement vers les serveurs principaux IPv6. Aucun acheminement inter-protocoles ne se produit.
Comment les requêtes IPv6 sont-elles gérées avec uniquement des backends IPv4 ?
Si le mode affinité est désactivé, NLB peut traduire les requêtes IPv6 en IPv4 et les envoyer aux serveurs principaux. Si le mode affinité est activé, les requêtes IPv6 ne peuvent pas être acheminées. Dans ce scénario, vous devez ajouter des serveurs principaux pour les deux versions d'IP au groupe de serveurs afin de garantir le traitement des requêtes IPv4 et IPv6.
Puis-je modifier la version d'IP d'un groupe de serveurs ?
Non. La version du protocole IP d'un groupe de serveurs (IPv4 ou IPv4/IPv6 dual-stack) ne peut pas être modifiée après la création du groupe de serveurs. Pour changer de version, vous devez supprimer le groupe de serveurs et en créer un nouveau.
Puis-je modifier l'affinité de version d'IP d'un groupe de serveurs ?
Oui. Dans la console Server Group, repérez le groupe de serveurs à pile double cible et cliquez sur Modify Basic Information dans la colonne Actions pour modifier le paramètre.
Un groupe de serveurs à pile double peut-il être associé à un NLB IPv4 uniquement ?
Non. Un groupe de serveurs à pile double ne peut être associé qu'à un écouteur d'une instance NLB à pile double.