É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, sauf si un accès mondial est disponible et activé. 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 :

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

Console

  1. Dans la console Google Cloud, 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, 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 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.
  • 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 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, 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 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 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 HTTPS interne, procédez comme suit :

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": 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://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 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 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, 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 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. 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. 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, 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 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 aussi bien aux équilibreurs de charge réseau passthrough internes qu'aux équilibreurs de charge d'application internes.

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.

Étapes suivantes