Configura NEG de Internet

En esta guía, se usa un ejemplo para explicar los conceptos básicos sobre el uso de un origen personalizado en un grupo de extremos de red (NEG) de Internet. Un origen personalizado es un extremo de Internet externo a Google Cloud. Puedes usar un NEG de Internet como backend para un balanceador de cargas de HTTP(S) externo y mejorar el rendimiento mediante el almacenamiento en caché de Cloud CDN.

En la guía, se explica cómo configurar un balanceador de cargas de HTTP(S) externo global con un servicio de backend con Cloud CDN habilitado que se conecta mediante proxy a un servidor de origen personalizado en backend.example.com.

En el ejemplo, el balanceador de cargas acepta las solicitudes HTTPS de clientes y las reenvía mediante proxy como HTTP/2 al origen personalizado. Se da por sentado que el origen admite HTTP/2.

Otra opción sería configurar un balanceador de cargas para aceptar solicitudes HTTP o HTTP/2 y usar HTTPS cuando se reenvían solicitudes mediante proxy al origen personalizado.

La configuración de un NEG de Internet implica hacer lo siguiente:

  • Definir el extremo de Internet en un NEG de Internet
  • Agregar un NEG de Internet como el backend de un servicio de backend
  • Definir a qué tráfico de usuario se mapea este servicio de backend mediante la configuración del mapa de URL del balanceador de cargas de HTTP(S) externo

Antes de comenzar

Antes de continuar con esta guía, familiarízate con los siguientes conceptos:

Opcional: instala gcloud

Si prefieres trabajar desde la línea de comandos, instala la herramienta de línea de comandos de gcloud. Para obtener información conceptual y de instalación sobre la herramienta, consulta la Descripción general de la herramienta de línea de comandos de gcloud.

Si no ejecutaste la herramienta de línea de comandos de gcloud antes, primero ejecuta gcloud init para inicializar el directorio de gcloud.

Opcional: crea un proyecto nuevo

Estas instrucciones requieren un proyecto. Si aún no tienes uno, créalo ahora.

Se recomienda que los usuarios con el permiso resourcemanager.projects.create creen un proyecto nuevo antes de seguir con el resto de esta guía práctica. Crear un proyecto nuevo simplifica la limpieza al final de la guía.

Permisos

Para seguir esta guía, debes crear un NEG de Internet y crear o modificar un balanceador de cargas de HTTP(S) externo en un proyecto. Debes ser propietario o editor de proyecto o tener ambas de las siguientes funciones de IAM de Compute Engine.

Tarea Función requerida
Crear y modificar componentes del balanceador de cargas Administrador de redes
Crear y modificar los NEG Administrador de instancias de Compute

Configura un balanceador de cargas con un origen personalizado

En esta guía, se muestra cómo configurar y probar un NEG de Internet.

Descripción general de la configuración

En los pasos de esta sección, se describe cómo configurar los siguientes elementos:

  • Crear un NEG de Internet y conectar un extremo de red que defina el extremo INTERNET_IP_PORT o INTERNET_FQDN_PORT
  • Asociar este NEG con el servicio de backend del balanceador de cargas de HTTP(S) externo
  • Agregar la regla de reenvío para el balanceador de cargas de HTTP(S) externo

Una arquitectura de muestra se ve así:

Caso de uso típico para orígenes personalizados
Caso de uso típico para orígenes personalizados

En el diagrama, www.example.com tiene un frontend de balanceador de cargas con la dirección IP 120.1.1.1. Cuando hay un error de caché, las solicitudes de usuario para /cart/id/1223515 se recuperan del origen personalizado por medio de HTTP/2. El resto del tráfico entrante se dirige al servicio de backend de Google Cloud con las VM de Compute Engine o al depósito de backend, según el mapa de URL.

Para configurar este ejemplo, crea los siguientes recursos:

  • Una regla de reenvío con la dirección IP 120.1.1.1 dirige las solicitudes entrantes a un proxy de destino.
    • El networkTier de la regla de reenvío debe ser PREMIUM.
  • El proxy de destino compara cada solicitud con el mapa de URL a fin de determinar el servicio de backend apropiado para la solicitud.
    • El proxy de destino debe ser TargetHttpProxy o TargetHttpsProxy para los orígenes personalizados. En este ejemplo, se usa TargetHttpsProxy.
  • En el servicio de backend, Cloud CDN habilitado (opcional) permite almacenar en caché y entregar respuestas desde las cachés de Cloud CDN.
  • La configuración del servicio de backend dirige el tráfico a un NEG de Internet.
  • En este ejemplo, se incluye un encabezado de la solicitud definido por el usuario, que se requiere cuando el origen personalizado espera un valor específico para el encabezado Host de la solicitud HTTP.

Crea el NEG y el extremo de Internet

Console

  1. En Google Cloud Console, ve a la página Grupos de extremos de red.

    Ir a la página Grupos de extremos de red

  2. Haz clic en Crear un grupo de extremos de red.
  3. Ingresa el nombre del grupo de extremos de red: example-fqdn-neg.
  4. En Tipo de grupo de extremos de red, selecciona Grupo de extremos de red (Internet).
  5. En Puerto predeterminado, ingresa 443.
  6. En Nuevo extremo de red, selecciona Nombre y puerto de dominio completamente calificados.
  7. En el FQDN, ingresa backend.example.com.
  8. En Tipo de puerto, selecciona Predeterminado y verifica que el Número de puerto sea 443.
  9. Haz clic en Crear.

gcloud

  1. Crea un NEG de Internet y establece --network-endpoint-type como internet-fqdn-port (el nombre de host y el puerto en el que se encuentra el origen):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Agrega el extremo al NEG. Si no se especifica un puerto, la selección se establece de forma predeterminada en el puerto 80 (HTTP) o 443 (HTTPS; HTTP/2), según el protocolo configurado en el servicio de backend. Asegúrate de incluir la marca --global.

    gcloud compute network-endpoint-groups update example-fqdn-neg \
        --add-endpoint="fqdn=backend.example.com,port=443" \
        --global
    
  3. Enumera el NEG de Internet creado:

    gcloud compute network-endpoint-groups list --global
    

    Resultado:

    NAME                LOCATION   ENDPOINT_TYPE        SIZE
    example-fqdn-neg    global     INTERNET_FQDN_PORT   1
    

  4. Enumera el extremo dentro del NEG:

    gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \
        --global
    

    Resultado:

    INSTANCE   IP_ADDRESS   PORT   FQDN
                                   backend.example.com
    

Usa un balanceador de cargas existente

En el siguiente ejemplo, se actualiza un balanceador de cargas existente.

Si aún no tienes un balanceador de cargas de HTTP(S) externo, omite esta sección y ve a Usa un balanceador de cargas nuevo.

En el balanceador de cargas existente, el servicio predeterminado es un servicio de Google Cloud. El ejemplo modifica el mapa de URL existente mediante la incorporación de un comparador de rutas de acceso que envía todas las solicitudes de cart/id/1223515 al servicio de backend images, que está asociado con el NEG de Internet.

Console

Crea el servicio de backend y agrega el NEG de Internet

  1. En Google Cloud Console, ve a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Para agregar el servicio de backend a un balanceador de cargas existente, selecciona el balanceador de cargas de HTTP(S) externo y haz clic en Menú y, luego, selecciona Editar.
  3. Haz clic en Configuración de backend.
  4. En el menú desplegable Crear o seleccionar servicios y depósitos de backend, selecciona Servicios de backend > Crear un servicio de backend.
  5. Configura el nombre del servicio de backend como images.
  6. En Tipo de backend, selecciona Grupo de extremos de red de Internet.
  7. Selecciona el protocolo que quieres usar desde el balanceador de cargas al NEG de Internet. En este ejemplo, selecciona HTTP/2.
  8. En Nuevo backend > Grupo de extremos de red de Internet, selecciona example-fqdn-neg y, luego, haz clic en Listo.
  9. Selecciona Habilitar Cloud CDN.
  10. Conserva la configuración predeterminada de modo de almacenamiento en caché y de TTL.
  11. En Configuración avanzada, en Encabezados de solicitud personalizados, haz clic en Agregar encabezado.
    1. En Nombre del encabezado, ingresa Host.
    2. En Valor de encabezado, ingresa backend.example.com.
  12. Haz clic en Crear.
  13. Mantén la ventana abierta para continuar.

Conecta el servicio de backend a un mapa de URL existente

  1. Haz clic en Reglas de host y ruta.
  2. La primera fila o filas tienen servicios de Google Cloud en la columna derecha, y una de ellas ya se propagó con la regla predeterminada Any unmatched (default) para hosts y Rutas.
  3. Asegúrate de que exista una fila con images seleccionado en la columna de la derecha. Si no existe, haz clic en Agregar regla de host y de ruta y selecciona images. Propaga los otros campos de la siguiente manera:
    1. En Hosts, ingresa *.
    2. En Rutas, ingresa /cart/id/1223515.

Revisa y finaliza

  1. Haz clic en Revisar y finalizar.
  2. Compara la configuración con lo que pretendías crear.
  3. Si todo parece correcto, haz clic en Crear para crear el balanceador de cargas de HTTP(S) externo.

gcloud

  1. Crea un servicio de backend nuevo para el NEG:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. Configura el servicio de backend para agregar el encabezado de solicitud personalizado Host: backend.example.com a la solicitud:

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Usa el comando backend-services add-backend para agregar el NEG de Internet al servicio de backend:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Conecta el servicio de backend nuevo con el mapa de URL del balanceador de cargas mediante la creación de una regla coincidente nueva para dirigir las solicitudes a ese backend.

    gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \
      --default-service=GCP_SERVICE_EXAMPLE \
      --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \
      --backend-service-path-rules=/CART/ID/1223515=IMAGES
    

    Reemplaza lo siguiente:

    • EXAMPLE_URL_MAP: El nombre del mapa de URL existente
    • GCP_SERVICE_EXAMPLE: El nombre de un servicio de backend predeterminado existente
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: El nombre de esta regla de ruta de acceso nueva
    • /CART/ID/1223515: La ruta
    • IMAGES: El nombre del nuevo servicio de backend con el NEG de Internet conectado

Usa un balanceador de cargas nuevo

En el siguiente ejemplo, se crea un balanceador de cargas de HTTP(S) externo que usa el NEG de Internet como servicio predeterminado (cualquier host, cualquier ruta de acceso).

Si ya tienes un balanceador de cargas de HTTP(S) externo que deseas modificar, omite esta sección y ve a Usa un balanceador de cargas existente.

Console

Crea el servicio de backend y agrega el NEG de Internet

  1. En Google Cloud Console, ve a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Balanceo de cargas HTTP(S), haz clic en Iniciar configuración.
  4. Selecciona De Internet a mis VM.
  5. Ingresa un nombre para el balanceador de cargas nuevo. Este nombre será el nombre del mapa de URL nuevo. Para este ejemplo, llámalo example-url-map.
  6. Haz clic en Configuración de backend.
  7. En el menú desplegable Crear o seleccionar servicios y depósitos de backend, selecciona Servicios de backend > Crear un servicio de backend.
  8. Configura el nombre del servicio de backend como images.
  9. En Tipo de backend, selecciona Grupo de extremos de red de Internet.
  10. Selecciona el protocolo que quieres usar desde el balanceador de cargas al NEG de Internet. En este ejemplo, selecciona HTTP/2.
  11. En Nuevo backend > Grupo de extremos de red de Internet, selecciona example-fqdn-neg y, luego, haz clic en Listo.
  12. Selecciona Habilitar Cloud CDN.
  13. En Configuración avanzada, en Encabezados de solicitud personalizados, haz clic en Agregar encabezado.
    1. En Nombre del encabezado, ingresa Host.
    2. En Valor de encabezado, ingresa backend.example.com.
  14. Haz clic en Crear.
  15. Mantén la ventana abierta para continuar.

Conecta el servicio de backend a un mapa de URL nuevo

  1. Haz clic en Reglas de host y ruta.
  2. Asegúrate de que exista una fila con images seleccionado en la columna de la derecha. Las primeras dos columnas ya se propagaron con la regla predeterminada Any unmatched (default).
  3. Mantén la ventana abierta para continuar.

Agrega el frontend

  1. Haga clic en Configuración de frontend.
  2. En Nombre, ingresa example-forwarding-rule.
  3. En Protocolo, selecciona HTTPS.
  4. Haz clic en la lista desplegable Certificado.
    1. Si ya tienes un recurso de certificado SSL autoadministrado que deseas usar como certificado SSL principal, selecciónalo en el menú desplegable.
    2. De lo contrario, selecciona Crear un nuevo certificado.
    3. Selecciona Subir certificado o Crear certificado administrado por Google.
    4. Si eliges Subir certificado, sigue estos pasos:
      1. En Nombre, ingresa example-ssl.
      2. En los campos correspondientes, sube el Certificado de clave pública (archivo .crt), la Cadena de certificados (archivo .csr) y la Clave privada (archivo .key).
      3. Haz clic en Crear.
    5. Si seleccionas Crear certificado administrado por Google, en Dominios, ingresa un dominio y, luego, haz clic en Crear.
  5. Para agregar otros recursos de certificado, además del recurso de certificado SSL principal, haz lo siguiente:
    1. Haz clic en Certificados adicionales > Agregar certificado.
    2. Selecciona un certificado de la lista Certificados o haz clic en Crear un certificado nuevo y sigue las instrucciones anteriores.
  6. Haz clic en Listo.
  7. Mantén la ventana abierta para continuar.

Revisa y finaliza

  1. Haz clic en Revisar y finalizar.
  2. Compara la configuración con lo que pretendías crear.
  3. Si todo parece correcto, haz clic en Crear para crear el balanceador de cargas de HTTP(S) externo.

gcloud

  1. Crea un servicio de backend nuevo para el NEG:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --protocol=HTTP2
    
  2. Configura el servicio de backend para agregar el encabezado de solicitud personalizado Host: backend.example.com a la solicitud:

    gcloud compute backend-services update images \
       --custom-request-header "Host: backend.example.com" --global
    
  3. Usa el comando backend-services add-backend para agregar el NEG de Internet al servicio de backend:

    gcloud compute backend-services add-backend images \
      --network-endpoint-group "example-fqdn-neg" \
      --global-network-endpoint-group \
      --global
    
  4. Crea un mapa de URL que especifique el servicio de backend como el valor de --default-service.

    gcloud compute url-maps create example-url-map \
       --default-service images \
       --global
    
  5. Crea un recurso de certificado.

    1. Crea un recurso de certificado SSL autoadministrado:

      gcloud compute ssl-certificates create example-ssl \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
      
    2. Crea un recurso de certificado SSL administrado por Google:

      gcloud beta compute ssl-certificates create example-ssl \
      --domains DOMAIN
      
  6. Crea un proxy HTTPS de destino nuevo mediante la conexión del mapa de URL y el certificado SSL.

    gcloud compute target-https-proxies create example-target-https-proxy \
      --url-map=example-url-map \
      --ssl-certificates=example-ssl \
      --global
    
  7. Crea una regla de reenvío global, que configure una dirección IP Anycast global. El balanceador de cargas escucha la dirección IP Anycast en los puertos configurados. Los clientes pueden conectarse al backend a través de la red de Google Cloud.

    gcloud compute forwarding-rules create example-forwarding-rule \
       --ip-protocol=TCP \
       --ports=443 \
       --global \
       --target-https-proxy=example-target-https-proxy
    

Realiza pruebas

Recupera la dirección IP de la regla de reenvío y usa el navegador o una herramienta de línea de comandos (por ejemplo, curl) para conectarte a ella.

gcloud compute forwarding-rules list

Para obtener ayuda con la solución de problemas, consulta Soluciona problemas de NEG de Internet y de origen personalizado.

Próximos pasos