Tous les produits
Search
Centre de documentation

Server Load Balancer:Dynamic forwarding

Dernière mise à jour :Aug 26, 2026

La fonctionnalité de transfert dynamique d'ALB Extensible Edition extrait l'adresse cible d'une requête en temps réel et transfère la requête directement, sans enregistrer les backends au préalable. Elle convient aux scénarios où les adresses backend changent dynamiquement, tels que la planification des sandboxs AI Agent et les passerelles pour un grand nombre de backends dynamiques. Un groupe de serveurs de plage d'adresses IP restreint la portée cible afin d'éviter que le trafic ne soit transféré vers des backends non autorisés.

Scénarios

Le transfert dynamique est adapté aux scénarios où les adresses backend changent dynamiquement pour chaque requête et où le nombre d'instances backend est élevé. Les scénarios typiques incluent :

  • Planification du trafic des sandboxs AI Agent : L'inférence AI Agent, l'exécution de code et les charges de travail similaires s'exécutent sur un grand nombre d'instances de sandbox (telles que les pods de divers produits de sandbox) qui sont provisionnées à la demande. Le planificateur de niveau supérieur écrit l'adresse IP et le port de l'instance de sandbox cible dans les en-têtes de requête, et ALB les extrait et transfère la requête directement, sans enregistrer au préalable les backends de sandbox qui changent fréquemment.

  • Transfert à domaine unique pour les mini-programmes et les jeux H5 : Les plateformes telles que les mini-programmes n'autorisent généralement la configuration que d'un seul nom de domaine valide. Sous un seul nom de domaine, vous pouvez utiliser des paramètres d'URL (tels que ?ip=1.1.X.X&port=1111) pour acheminer les requêtes vers différentes instances de serveur de jeu, remplaçant ainsi une solution Nginx auto-gérée.

  • Grand nombre de backends dynamiques : Lorsque le nombre d'instances backend est élevé, le transfert dynamique traite chaque requête en temps réel sans enregistrer les backends un par un. Il vous suffit de configurer les plages d'adresses IP et les plages de ports autorisées. Une seule instance peut desservir un grand nombre de backends dynamiques, ce qui évite la répartition sur plusieurs instances due aux limites de quota des groupes de serveurs.

Architecture

Lorsqu'une requête client atteint une instance ALB Extensible Edition, la règle de transfert dirige le trafic vers le composant de transfert dynamique associé au groupe de serveurs de plage d'adresses IP. Le composant passe par trois étapes successives : extraction du point de terminaison, validation de la portée cible et transfert dynamique. Il détermine l'adresse IP et le port cibles réels. Si la cible correspond à une plage autorisée, la requête est transférée directement vers cette adresse. Sinon, un code HTTP 403 est renvoyé.

  • Instance ALB Extensible Edition : Fournit des capacités d'équilibrage de charge et de transfert de trafic.

  • Groupe de serveurs de plage d'adresses IP : Déclare la portée cible que le transfert dynamique est autorisé à atteindre, sous forme de plages d'adresses IP et de plages de ports. Il doit être associé à une extension de service contenant le composant de transfert dynamique.

  • Extension de service : Héberge le composant de transfert dynamique. Elle prend effet après avoir été liée à un groupe de serveurs de plage d'adresses IP.

  • Composant de transfert dynamique : Extrait l'hôte et le port cibles des paramètres de requête ou des en-têtes de requête, et transfère la requête vers le backend après validation de la portée cible.

image

Prérequis

Procédure

1. Créer une instance ALB Extensible Edition

  1. Connectez-vous à la console ALB, sélectionnez la région Chine (Shanghai) et cliquez sur Create ALB.

  2. Sur la page d'achat, effectuez la configuration suivante et cliquez sur Create Now.

    • Region : Sélectionnez China (Shanghai).

    • Instance Network Type : Sélectionnez Internet.

    • VPC et Zone : Sélectionnez VPC1, sélectionnez Shanghai Zone B et Shanghai Zone F, puis sélectionnez VSW1 et VSW2. Activez Automatically Assign Public IP.

    • Protocol Version : Sélectionnez IPv4.

    • Edition (Instance Fee) : Sélectionnez Extensible Edition.

  3. Sur la page Confirm Order, confirmez les détails de configuration de l'instance et cliquez sur Activate Now.

2. Créer une extension de service et ajouter un composant de transfert dynamique

  1. Dans la console Service Extensions, cliquez sur Create Service Extension. Dans la section Service Extension Configuration, saisissez un Extension name tel que ext-dyn-fwd-plugin.

  2. Le paramètre Extension Type est défini par défaut sur Plug-in. Pour Component name, sélectionnez Dynamic Forwarding dans la liste déroulante. Sous Quick Configuration (Select to Auto-Fill Current Rule Parameters), cliquez sur Common Headers pour utiliser le modèle système prédéfini, puis cliquez sur Create.

    • Extraction Source : La valeur par défaut est Header, ce qui signifie que l'adresse IP et le port cibles sont extraits des en-têtes de requête HTTP.

    • Extraction Mode : La valeur par défaut est Separated Mode, ce qui signifie que l'adresse IP et le port cibles se trouvent dans deux champs différents et doivent être spécifiés séparément.

    • Target Host Source : La valeur par défaut est X-Target-Host. Le composant de transfert dynamique lit l'adresse IP cible à partir de cet en-tête de requête.

    • Target Port Source : La valeur par défaut est X-Target-Port. Le composant de transfert dynamique lit le port cible à partir de cet en-tête de requête.

    • Default Port : La valeur par défaut est 80. Il s'agit du port de secours utilisé lorsqu'aucun port n'est extrait de la requête.

Remarque

Le composant de transfert dynamique ne peut pas être ajouté à la même extension de service que d'autres composants.

3. Préparer les serveurs backend

  1. Créez une instance ECS en suivant la configuration ci-dessous. Le groupe de sécurité de l'instance ECS doit autoriser le trafic entrant provenant du bloc CIDR de VPC1.

    • Region : Sélectionnez China (Shanghai).

    • Network and Zone : Sélectionnez VPC1 et VSW1, et sélectionnez Specify Primary Private IP Address of Primary ENI. Dans ce tutoriel, VSW1 correspond à la plage d'adresses IP 172.16.10.0/24, et l'adresse IP privée principale de l'ENI principale est définie sur 172.16.10.100.

    • Image : Sélectionnez Alibaba Cloud Linux 3.2104 LTS 64-bit.

  2. Dans la console ECS, recherchez l'instance. Dans la colonne Actions, choisissez Network and Security Group > Manage Secondary Private IP Address. Cliquez sur Increase, saisissez 172.16.10.101, puis cliquez sur OK. Reportez-vous à la rubrique Enable the operating system to recognize a secondary private IP address pour configurer l'instance ECS afin qu'elle reconnaisse l'adresse IP. Connectez-vous à l'instance ECS et exécutez ip a. Vous pouvez constater que l'instance ECS a reconnu l'adresse IP privée secondaire.

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 00:16:3e:xx:xx:xx brd ff:ff:ff:ff:ff:ff
          altname enp3s0
          inet 172.16.10.100/24 brd 172.16.10.255 scope global noprefixroute eth0
             valid_lft forever preferred_lft forever
          inet 172.16.10.101/24 brd 172.16.10.255 scope global secondary noprefixroute eth0
             valid_lft forever preferred_lft forever
          inet6 fe80::xxxx:xxff:fexx:xxxx/64 scope link
             valid_lft forever preferred_lft forever   
  3. Sur l'instance ECS backend, installez Nginx et déployez un service echo qui écoute sur les ports 80 et 81. Pour toute requête, il renvoie l'adresse IP:Port cible réelle atteinte par la requête, ce qui permet de vérifier le point d'atterrissage du transfert dynamique.

    # 1. Install nginx
    sudo dnf install -y nginx
    
    # 2. Write the echo configuration
    sudo tee /etc/nginx/conf.d/echo.conf >/dev/null <<'EOF'
    server {
        listen 80 default_server;
        listen 81 default_server;
        server_name _;
        location / {
            default_type text/plain;
            return 200 "served: $server_addr:$server_port\n";
        }
    }
    EOF
    
    # 3. Remove the default_server flag from the default site to avoid conflicts
    sudo sed -i 's/ default_server//g' /etc/nginx/nginx.conf
    
    # 4. Validate the configuration, enable autostart, and start the service
    sudo nginx -t
    sudo systemctl enable nginx
    sudo systemctl restart nginx
    
    # 5. Test locally
    curl 172.16.10.100:80
    curl 172.16.10.100:81
    curl 172.16.10.101:80
    curl 172.16.10.101:81

4. Créez un groupe de serveurs de type « IP Address Range »

Le routage dynamique détermine les cibles de transfert en fonction du contenu de la requête. En l'absence de contraintes, des requêtes forgées pourraient rediriger le trafic vers des adresses non autorisées, ce qui engendre des risques de SSRF (Server-Side Request Forgery). Configurez un groupe de serveurs de type « IP Address Range » comme limite de sécurité obligatoire : seules les requêtes dont l'adresse IP cible et le port correspondent à une entrée autorisée sont transférées. Toutes les autres requêtes renvoient une erreur HTTP 403.

  1. Dans la console Server Groups, cliquez sur Create Server Group.

  2. Configurez les paramètres suivants, puis cliquez sur Create :

    • Server Group Type : sélectionnez IP Address Range.

    • Server Group Name : saisissez un nom personnalisé, par exemple sgp-dyn-fwd.

    • Backend Protocol : la valeur par défaut est HTTP.

    • Sélectionnez Use Existing Service Extension et choisissez l'extension de service ext-dyn-fwd-plugin.

  3. Une fois le message Server Group Created affiché, cliquez sur Add Backend Servers. Dans la boîte de dialogue Add IP Address Segment , saisissez la IP Address Range 172.16.10.0/24 et la Port Range 80-81, puis cliquez sur OK.

5. Créez un écouteur

  1. Dans la console ALB, cliquez sur l'ID de l'instance cible pour accéder à la page Instance Details . Sous l'onglet Listener , cliquez sur Create Listener.

  2. À l'étape Configure Listener , définissez le paramètre Listener Protocol sur HTTPS et le paramètre Listener Port sur 443, puis cliquez sur Next.

  3. À l'étape Configure SSL Certificate , sélectionnez un certificat serveur correspondant à votre nom de domaine personnalisé, puis cliquez sur Next.

  4. À l'étape Select Server Group , sélectionnez le type IP Address Range et le groupe de serveurs sgp-dyn-fwd, puis cliquez sur Next.

    Remarque

    Ce tutoriel utilise la règle de transfert par défaut pour acheminer le trafic vers le groupe de serveurs de type « IP Address Range ». Pour ajouter des fonctionnalités telles que l'authentification ou la limitation du débit, créez des règles de transfert supplémentaires sous l'écouteur et associez-les aux extensions de service correspondantes.

  5. À l'étape Configuration Review , vérifiez la configuration et cliquez sur Submit.

6. Configurez la résolution DNS

Associez votre nom de domaine personnalisé au nom DNS de l'instance ALB à l'aide d'un enregistrement CNAME. Les clients accèdent à ALB via votre nom de domaine personnalisé.

Ce tutoriel utilise Alibaba Cloud DNS à titre d'exemple. Pour les noms de domaine non enregistrés auprès d'Alibaba Cloud, vous devez d'abord ajouter le domaine à la console DNS.

  1. Dans la console ALB, copiez le Domain Name de l'instance cible.

  2. Connectez-vous à la console DNS . Dans la colonne Actions du domaine cible, cliquez sur Settings . Sur la page Settings , cliquez sur Add Record.

  3. Ajoutez un enregistrement CNAME avec les informations suivantes, puis cliquez sur OK :

    • Record Type : sélectionnez CNAME.

    • Hostname : saisissez un préfixe de domaine, par exemple test. Par exemple, si votre domaine racine est example.com, le domaine permettant d'accéder à ALB est test.example.com.

    • Query Source et TTL : conservez les valeurs par défaut.

    • Record Value : saisissez le nom DNS de l'instance ALB.

  4. Dans la boîte de dialogue Change Resource Record Confirmation , confirmez les informations de résolution et cliquez sur OK.

7. Vérifiez la configuration

Une requête doit remplir les conditions suivantes pour recevoir une réponse positive :

  • Le composant de routage dynamique peut extraire l'adresse IP cible et le port de la requête (si aucun port n'est explicitement spécifié, le paramètre Default Port est utilisé par défaut).

  • La combinaison de l'adresse IP et du port se situe dans la plage autorisée du groupe de serveurs de type « IP Address Range ».

  • Un service backend écoute sur l'adresse IP et le port spécifiés, et renvoie une réponse.

La requête contient une adresse cible valide

Transfert vers l'adresse IP principale
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo

Réponse attendue : HTTP 200, avec l'écho served: 172.16.10.100:80.

Transfert vers l'adresse IP secondaire (vérification de différentes adresses IP)
curl -v \
  -H "X-Target-Host: 172.16.10.101" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo

Réponse attendue : HTTP 200, avec l'écho served: 172.16.10.101:80. Cela prouve que l'adresse IP cible change dynamiquement selon la requête.

Redirection vers un autre port (vérification de ports différents)
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 81" \
  https://test.example.com/echo

Réponse attendue : HTTP 200, avec l'écho served: 172.16.10.100:81. Cela prouve que le port cible change également dynamiquement pour chaque requête.

Aucun port transmis (vérification du recours au port par défaut)
curl -v \
  -H "X-Target-Host: 172.16.10.101" \
  https://test.example.com/echo

Réponse attendue : HTTP 200, avec l'écho served: 172.16.10.101:80. La requête ne contient pas de port ; le composant de redirection dynamique utilise donc le port 80 par défaut en solution de repli.

La requête ne contient aucune adresse cible

curl -v \
  https://test.example.com/echo

Réponse attendue : HTTP 403, avec l'écho endpoint not provided. Le composant de redirection dynamique ne peut pas extraire d'adresse IP cible de la requête.

L'adresse ou le port cible n'est pas dans la plage autorisée

curl -v \
  -H "X-Target-Host: 10.99.99.99" \
  -H "X-Target-Port: 80" \
  https://test.example.com/echo
curl -v \
  -H "X-Target-Host: 172.16.10.100" \
  -H "X-Target-Port: 12345" \
  https://test.example.com/echo

Réponse attendue : HTTP 403, avec l'écho endpoint not allowed. L'adresse IP ou le port extrait est rejeté car il ne figure pas dans la plage autorisée du groupe de serveurs.

Informations complémentaires

Facturation

  • ALB Extensible Edition : actuellement en aperçu public. Les utilisateurs peuvent l'essayer gratuitement. L'EIP associé à l'instance ALB Extensible Edition dispose de ses propres règles de facturation ; les frais sont facturés via l'EIP.

  • Instances ECS : pour plus de détails, consultez la présentation de la facturation ECS. Si vous créez une instance ECS à des fins de test, nous vous recommandons de créer une instance à faible spécification en paiement à l'utilisation et de la libérer rapidement.

  • Frais de nom de domaine et de résolution DNS publique : outre les frais de nom de domaine auprès de votre fournisseur de domaine, la configuration de la résolution DNS publique sur Alibaba Cloud entraîne des frais de résolution DNS autoritaire publique.

  • Frais de certificat : l'achat ou le téléchargement d'un certificat sur Alibaba Cloud entraîne des frais de certificat de serveur.

Limites

  • Le protocole backend pour la redirection dynamique prend actuellement uniquement en charge HTTP.

  • Les groupes de serveurs de type « IP Address Range » ne permettent pas d'ajouter des plages d'adresses telles que 22.0.0.0/8, 33.0.0.0/8, 100.0.0.0/8 ou 127.0.0.0/8.

  • Un seul groupe de serveurs de type « IP Address Range » prend en charge un maximum de 200 entrées de plage IP par défaut (chaque entrée correspond à une combinaison d'une plage IP et d'une plage de ports).

Régions prenant en charge ALB Extensible Edition

Région géographique

Région

Zone

Chine

Chine (Ulanqab)

Zone A, Zone B et Zone C

Chine (Hangzhou)

Zone J et Zone K

Chine (Pékin)

Zone I, Zone K et Zone L

Chine (Shanghai)

Zone B et Zone F

Chine (Hong Kong)

Zone B, Zone C et Zone D

Asie-Pacifique

Singapour

Zone A, Zone B et Zone C

Japon (Tokyo)

Zone B, Zone C et Zone E

Malaisie (Kuala Lumpur)

Zone A, Zone B et Zone C

Europe et Amériques

Allemagne (Francfort)

Zone A et Zone B

États-Unis (Silicon Valley)

Zone A et Zone B

Moyen-Orient

Émirats arabes unis (Dubaï)

Zone A et Zone B

Bonnes pratiques

  • Ordonnez correctement plusieurs configurations d'extraction d'adresse cible : lorsque plusieurs configurations d'extraction d'adresse cible sont spécifiées, le système les fait correspondre dans l'ordre croissant du numéro de séquence. La première correspondance s'applique. Placez en premier les configurations les plus fréquemment utilisées et les plus restrictives.

  • Maintenez une plage cible autorisée restreinte : tout en garantissant la disponibilité du service, limitez les plages d'adresses IP et les plages de ports aux seuls backends réellement requis par votre activité. Évitez de configurer des plages trop larges.

  • Utilisez les règles de transfert avec souplesse : les groupes de serveurs de type « IP Address Range » peuvent servir de cibles de transfert dans les règles de transfert. Combinez-les avec des conditions de transfert, des extensions de service et des actions de transfert pour répondre à des besoins complexes d'orchestration du trafic.

FAQ

Toutes les requêtes renvoient 403 avec endpoint not allowed

Vérifiez que le groupe de serveurs de type « IP Address Range » est configuré avec les bonnes plages d'adresses IP et de ports, et que l'adresse IP cible et le port transmis par la requête se situent bien dans ces plages.

Toutes les requêtes renvoient 403 avec endpoint not provided

Vérifiez si la requête inclut les en-têtes X-Target-Host et X-Target-Port. Vous pouvez consulter la configuration de l'extension de service pour confirmer.