É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 :

  • 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. Si vous activez l'accès mondial, 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.

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 les équilibreurs de charge réseau passthrough interne :

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

  • Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux:

    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 explique comment créer une règle de transfert avec un libellé de service.

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é les équilibreurs de charge réseau passthrough internes, les équilibreurs de charge d'application internes régionaux ou les équilibreurs de charge réseau proxy internes régionaux, consultez les pages suivantes pour obtenir des exemples complets:

Console

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Suivez les étapes de l'assistant pour créer un équilibreur de charge réseau passthrough interne ou un équilibreur de charge d'application interne régional, puis cliquez sur Configurer.
  4. Saisissez le nom de l'équilibreur de charge.
  5. Cliquez sur Continuer.
  6. Renseignez la section Configuration du backend.
  7. Cliquez sur Configuration de l'interface. 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 réseau passthrough 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 réseau proxy externe régional:

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

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge d'application interne régional avec HTTPS:

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=PORT \
    --service-label=SERVICE_LABEL

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge d'application interne régional avec HTTP:

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.
  • TARGET_PROXY_NAME est le nom du proxy cible.
  • 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 réseau passthrough internes, la valeur de PROTOCOL est TCP ou UDP, correspondant au protocole du service de backend de l'équilibreur de charge. Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux, le protocole doit être TCP.
  • Pour les équilibreurs de charge réseau passthrough internes, PORTS correspond à un tableau comportant jusqu'à cinq ports par numéro, ou au mot ALL. Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux, vous pouvez référencer un seul port compris entre 1 et 65 535. Pour en savoir plus, consultez les Spécifications de ports dans les concepts liés aux règles de transfert.
  • SERVICE_LABEL correspond au libellé de service que vous avez choisi. 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 réseau passthrough interne, procédez comme suit :

POST https://compute.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 réseau proxy externe régional:

POST https://compute.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/targetTcpProxies/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"
}

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge d'application interne régional avec HTTPS:

POST https://compute.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": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

Pour créer une règle de transfert avec un libellé de service pour un équilibreur de charge d'application interne régional avec HTTP:

POST https://compute.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 réseau passthrough interne.
  • TARGET_PROXY_NAME est le nom du proxy cible.
  • 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 réseau passthrough internes, la valeur de PROTOCOL est TCP ou UDP, correspondant au protocole du service de backend de l'équilibreur de charge. Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux, le protocole doit être TCP.
  • Pour les équilibreurs de charge réseau passthrough internes, PORTS correspond à un tableau comportant jusqu'à cinq ports par numéro, ou au mot ALL. Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux, vous pouvez référencer un seul port compris entre 1 et 65 535. Pour en savoir plus, consultez les Spécifications de ports dans les concepts liés aux règles de transfert.
  • SERVICE_LABEL correspond au libellé de service que vous avez choisi. 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. Dans la console Google Cloud, accédez à la page Équilibrage de charge.

    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 les équilibreurs de charge réseau passthrough internes ou les équilibreurs de charge d'application internes régionaux. 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 réseau passthrough internes, utilisez INTERNAL.
    • Pour les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge réseau proxy internes régionaux, 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://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/forwardingRules/FORWARDING_RULE_NAME

Réponse de l'équilibreur de charge réseau passthrough interne:

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

Réponse de l'équilibreur de charge réseau proxy interne régional et de l'équilibreur de charge d'application interne régional:

{
  ...
  "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 à tous les équilibreurs de charge compatibles.

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