Équilibrage de charge interne et noms DNS

Un enregistrement d'adresse DNS, également appelé enregistrement A, permet de mapper un nom DNS à une adresse IP. Lorsque vous créez la règle de transfert pour un équilibreur de charge interne, vous pouvez éventuellement définir un libellé de service permettant à Google Cloud de créer un nom DNS interne Compute Engine pour cet équilibreur de charge. Ce nom DNS interne est créé à partir de votre ID de projet, du nom de la règle de transfert et d'un libellé de service de votre choix.

Spécifications

  • Cette fonctionnalité est compatible avec les règles de transfert pour les équilibreurs de charge suivants :

    • Équilibrage de charge TCP/UDP interne
    • Équilibrage de charge HTTP(S) interne
  • Pour plus de détails sur le format du nom DNS que Google Cloud crée pour votre équilibreur de charge, reportez-vous à la section Format des enregistrements DNS. Étant donné que le nom DNS contient le nom de la règle de transfert, chaque nom DNS est unique, même si vous utilisez le même libellé de service pour plusieurs règles de transfert.

  • À moins qu'un autre serveur de noms soit configuré, les VM clientes de toutes les régions d'un même projet et d'un même réseau VPC peuvent effectuer des recherches DNS afin de déterminer le nom DNS interne de l'équilibreur de charge. Pour accéder à l'équilibreur de charge, les VM clientes doivent être situées dans la même région, sauf si un accès mondial est disponible et activé. Si vous activez l'accès mondial pour l'équilibrage de charge TCP/UDP interne, un client de n'importe quelle région peut accéder à l'équilibreur de charge.

  • Vous ne pouvez spécifier un libellé de service que lorsque vous créez une règle de transfert. Vous n'avez pas la possibilité d'ajouter un libellé de service à une règle de transfert existante. Toutefois, vous pouvez remplacer une règle de transfert existante par une nouvelle règle de transfert dotée d'un libellé de service. La règle de remplacement peut utiliser la même adresse IP interne que la règle d'origine, à condition que vous ayez auparavant supprimé cette dernière.

  • Les noms DNS internes créés à partir des libellés de service sont soumis aux restrictions suivantes :

    • Aucun enregistrement inversé (PTR) correspondant n'est créé.
    • Chaque règle de transfert ne peut comporter qu'un seul libellé de service.
    • Hormis le libellé de service et la règle de transfert, vous ne pouvez modifier aucune des autres parties du nom DNS interne, y compris son format et son nom de domaine (.internal).

    Si vous avez besoin de noms DNS plus flexibles pour votre équilibreur de charge interne, vous pouvez créer des enregistrements personnalisés dans une zone privée gérée Cloud DNS.

  • Vous ne pouvez pas définir un libellé de service sur une règle de transfert interne faisant référence à une adresse IP interne partagée. Cela signifie que les enregistrements A DNS internes à Compute Engine ne peuvent pas être créés automatiquement pour une adresse IP interne ayant l'option --purpose=SHARED_LOADBALANCER_VIP, car l'adresse est utilisée par deux règles de transfert internes ou plus.

Format des enregistrements DNS

Lorsque vous ajoutez un libellé de service à une règle de transfert, Google Cloud crée un enregistrement A DNS interne à Compute Engine en utilisant l'un des formats suivants :

  • Pour l'équilibrage de charge TCP/UDP interne :

    SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT_ID.internal

  • Pour l'équilibrage de charge HTTP(S) interne :

    SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT_ID.internal

SERVICE_LABEL est le libellé de service de la règle de transfert que vous spécifiez. Il doit respecter le format suivant :

  • Vous pouvez utiliser jusqu'à 63 lettres minuscules (de a à z), chiffres (de 0 à 9) ou tirets (-).
  • Le libellé du service doit commencer par une lettre minuscule.
  • Le libellé de service doit se terminer par une lettre minuscule ou un chiffre.

FORWARDING_RULE_NAME est le nom de la règle de transfert que vous créez.

REGION est la région de l'équilibreur de charge.

PROJECT_ID est l'ID de votre projet. Les ID de projet définis sous la forme organization:project-id sont convertis au format project-id.organization. Par exemple, si votre ID de projet est example.com:example-marketing-prod, Google Cloud utilise example-marketing-prod.example.com.

Créer une règle de transfert avec un libellé de service

Cette procédure indique comment créer une règle de transfert avec un libellé de service pour un équilibreur de charge TCP/UDP interne ou un équilibreur de charge HTTP(S) interne.

Cette procédure se concentre uniquement sur la création d'une règle de transfert avec un libellé de service. Les propriétés de la configuration du backend de l'équilibreur de charge et les autres propriétés de la configuration du frontend sont omises. Si vous n'avez jamais utilisé l'équilibrage de charge TCP/UDP interne ou l'équilibrage de charge HTTP(S) interne auparavant, consultez les pages suivantes pour obtenir des exemples complets :

Console

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur Créer un équilibreur de charge.
  3. Sous Équilibrage de charge HTTP(S), Équilibrage de charge TCP ou Équilibrage de charge UDP, cliquez sur Démarrer la configuration.
  4. Sous Internet ou interne uniquement, sélectionnez Seulement entre les VM, puis cliquez sur Continuer.
  5. Dans le champ Nom, saisissez le nom de l'équilibreur de charge.
  6. Renseignez la section Configuration du backend.
  7. Cliquez sur Configuration du frontend. Procédez à la configuration du frontend en renseignant la zone Libellé de service au bas de cette section.
  8. Cliquez sur OK, puis sur Vérification et finalisation.

gcloud

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge TCP/UDP interne, procédez comme suit :

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL \
    --region=REGION \
    --backend-service-region=REGION \
    --backend-service=BACKEND_SERVICE_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=PROTOCOL \
    --ports=PORTS \
    --service-label=SERVICE_LABEL

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge HTTPS interne, procédez comme suit :

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-https-proxy-region=REGION \
    --target-https-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=443 \
    --service-label=SERVICE_LABEL

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge HTTP interne, procédez comme suit :

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-http-proxy-region=REGION \
    --target-http-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=PORT \
    --service-label=SERVICE_LABEL

Remplacez les espaces réservés par les valeurs appropriées.

  • FORWARDING_RULE_NAME est le nom de la règle de transfert de l'équilibreur de charge.
  • REGION est la région de l'équilibreur de charge.
  • BACKEND_SERVICE_NAME est le nom du service de backend de l'équilibreur de charge TCP/UDP interne.
  • TARGET_PROXY_NAME est le nom du proxy HTTPS cible (pour un équilibreur de charge HTTPS interne) ou du proxy HTTP cible (pour un équilibreur de charge HTTP interne).
  • NETWORK est le nom du réseau VPC dans lequel l'équilibreur de charge est créé.
  • SUBNET est le nom d'un sous-réseau du réseau VPC. Le sous-réseau doit se trouver dans la même région que le service de backend ou le proxy cible de l'équilibreur de charge.
  • INTERNAL_IP est une adresse IP interne comprise dans la plage d'adresses IP principale du sous-réseau choisi. Vous pouvez omettre l'option --address afin de laisser Google Cloud sélectionner une adresse IP disponible.
  • Pour les équilibreurs de charge TCP/UDP internes, PROTOCOL correspond à TCP ou à UDP, selon le protocole du service de backend de l'équilibreur de charge. Pour les équilibreurs de charge HTTP(S) internes, le protocole doit être TCP.
  • Pour les équilibreurs de charge TCP/UDP internes, PORTS correspond à un tableau comportant jusqu'à cinq ports par numéro, ou le mot ALL. Pour les équilibreurs de charge HTTPS internes, vous devez utiliser 443 pour le port. Pour les équilibreurs de charge HTTP internes, vous pouvez utiliser 80 ou 8080 pour PORT. Pour plus d'informations, consultez les Spécifications de ports dans les concepts liés aux règles de transfert.
  • SERVICE_LABEL correspond au libellé de service souhaité. Celui-ci doit respecter les conventions de dénomination.

api

Dans les exemples suivants, vous créez des règles de transfert à l'aide de la méthode forwardingRules.insert.

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge TCP/UDP interne, procédez comme suit :

POST https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL",
  "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/backendServices/BACKEND_SERVICE_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "PROTOCOL",
  "ports": PORTS,
  "serviceLabel": "SERVICE_LABEL"
}

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge HTTPS interne, procédez comme suit :

POST https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpsProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": 443,
  "serviceLabel": "SERVICE_LABEL"
}

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge HTTP interne, procédez comme suit :

POST https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

Remplacez les espaces réservés par les valeurs appropriées.

  • FORWARDING_RULE_NAME est le nom de la règle de transfert de l'équilibreur de charge.
  • REGION est la région de l'équilibreur de charge.
  • BACKEND_SERVICE_NAME est le nom du service de backend de l'équilibreur de charge TCP/UDP interne.
  • TARGET_PROXY_NAME est le nom du proxy HTTPS cible (pour un équilibreur de charge HTTPS interne) ou du proxy HTTP cible (pour un équilibreur de charge HTTP interne).
  • NETWORK est le nom du réseau VPC dans lequel l'équilibreur de charge est créé.
  • SUBNET est le nom d'un sous-réseau du réseau VPC. Le sous-réseau doit se trouver dans la même région que le service de backend ou le proxy cible de l'équilibreur de charge.
  • INTERNAL_IP est une adresse IP interne comprise dans la plage d'adresses IP principale du sous-réseau choisi. Vous pouvez omettre la clé IPAddress afin de laisser Google Cloud sélectionner une adresse IP disponible.
  • Pour les équilibreurs de charge TCP/UDP internes, PROTOCOL correspond à TCP ou à UDP, selon le protocole du service de backend de l'équilibreur de charge. Pour les équilibreurs de charge HTTP(S) internes, le protocole doit être TCP.
  • Pour les équilibreurs de charge TCP/UDP internes, PORTS correspond à un tableau comportant jusqu'à cinq ports par numéro, ou le mot ALL. Pour les équilibreurs de charge HTTPS internes, vous devez utiliser 443 pour le port. Pour les équilibreurs de charge HTTP internes, vous pouvez utiliser 80 ou 8080 pour PORT. Pour plus d'informations, consultez les Spécifications de ports dans les concepts liés aux règles de transfert.
  • SERVICE_LABEL correspond au libellé de service souhaité. Celui-ci doit respecter les conventions de dénomination.

Afficher les libellés de service

Console

Vous pouvez afficher le nom DNS interne Compute Engine (créé à partir du libellé de service) correspondant à chaque règle de transfert interne d'un équilibreur de charge interne :

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur le nom de l'équilibreur de charge interne pour afficher sa page d'informations.
  3. Les règles de transfert internes attribuées à l'équilibreur de charge sont répertoriées dans la section Frontend. La colonne Nom DNS indique le nom DNS interne Compute Engine attribué à chaque règle de transfert. Le libellé de service constitue la première partie de ce nom (avant le premier point). Si aucun nom n'est affiché, cela signifie qu'aucun libellé de service n'a été défini pour la règle de transfert.

gcloud

  1. Répertoriez les règles de transfert dans votre projet utilisées par l'équilibrage de charge TCP/UDP interne ou l'équilibrage de charge HTTP(S) interne. Identifiez celle dont vous avez besoin et notez son nom et sa région pour l'étape suivante.

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=SCHEME"
    

    La valeur de SCHEME dépend des règles de transfert que vous devez répertorier :

    • Pour les équilibreurs de charge TCP/UDP internes, utilisez INTERNAL.
    • Pour les équilibreurs de charge HTTP(S) internes, utilisez INTERNAL_MANAGED.
  2. Décrivez la règle de transfert en remplaçant FORWARDING_RULE_NAME par son nom et REGION par sa région :

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(serviceLabel)"
    

api

Afficher la règle de transfert et le libellé de service via la méthode forwardingRules.get

La réponse à la requête API comprend le libellé de service (serviceLabel) et le nom DNS interne Compute Engine (serviceName).

GET https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules/FORWARDING_RULE_NAME

Réponse TCP/UDP :

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT.internal",
  ...
}

Réponse HTTP(S) :

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT.internal",
  ...
}

Exemple

La procédure suivante montre comment remplacer une règle de transfert par une règle dotée d'un libellé de service. Cette procédure s'applique pour l'équilibrage de charge TCP/UDP interne et l'équilibrage de charge HTTP interne.

Si vous n'avez pas encore créé de règle de transfert pour votre équilibreur de charge interne, ignorez cet exemple et consultez la page Créer une règle de transfert avec un libellé de service.

  1. Décrivez la règle de transfert existante de votre équilibreur de charge, en indiquant l'adresse IP interne de la règle de transfert :

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)
    
  2. Supprimez la règle de transfert :

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. Créez une règle de transfert de remplacement avec le même nom et la même adresse IP interne, et avec un libellé de service. Pour obtenir des instructions, reportez-vous à la page Créer une règle de transfert avec un libellé de service.

Étape suivante