Casos de uso avanzados

En esta página, se describe cómo configurar extensiones de servicio con balanceadores de cargas de aplicaciones para casos de uso avanzados.

Reenvío dinámico

El reenvío dinámico te ayuda a vincular miles o incluso millones de arrendatarios a instancias de máquina virtual (VM) individuales o conjuntos de VMs. Puedes usar extensiones de servicio para determinar de forma programática a qué VMs se asigna un inquilino individual sin tener que actualizar un mapa de URL. Esto te ayuda a escalar mucho más allá de las limitaciones del mapa de URL existente.

Puedes configurar el reenvío dinámico con llamadas de tráfico y rutas con los siguientes balanceadores de cargas de aplicaciones: balanceador de cargas de aplicaciones externo regional, balanceador de cargas de aplicaciones interno regional y balanceador de cargas de aplicaciones interno entre regiones.

En esta sección, se explica un ejemplo en el que configuras una extensión de tráfico para enrutar el tráfico de forma aleatoria entre dos VMs. Usa los valores de muestra proporcionados.

  1. Configura una red llamada lb-network, una subred llamada backend-subnet y una subred de solo proxy en la región us-west1.

  2. Configura dos VMs en us-west1 para representar los extremos con enrutamiento dinámico.

    Especifica las direcciones IP como 10.1.2.1 y 10.1.2.2, respectivamente. Asegúrate de que ambas VMs estén asociadas con la etiqueta load-balanced-backend.

  3. Configura una regla de firewall, fw-allow-proxies, que permita el tráfico de la subred proxy a las VMs de tu red.

    gcloud compute firewall-rules create fw-allow-proxies \
        --network=df-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=source-range \
        --target-tags=load-balanced-backend \
        --rules=tcp:80,tcp:443,tcp:8080
    
  4. Crea un servicio de backend, l7-ilb-backend-service, con el reenvío dinámico y el registro habilitados:

    gcloud beta compute backend-services create l7-ilb-backend-service \
        --ip-port-dynamic-forwarding \
        --enable-logging \
        --region=us-west1
    
  5. Crea un mapa de URL, l7-ilb-map, para el servicio de backend.

    gcloud compute url-maps create l7-ilb-map \
        --default-service=l7-ilb-backend-service \
        --region=us-west1
    
  6. Crea un proxy de destino, l7-ilb-proxy.

    gcloud compute target-http-proxies create l7-ilb-proxy \
        --url-map=l7-ilb-map \
        --url-map-region=us-west1 \
        --region=us-west1
    
  7. Crea una regla de reenvío y reserva una dirección IP para el balanceador de cargas de aplicaciones.

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=backend-subnet \
        --subnet-region=us-west1 \
        --ports=80 \
        --region=us-west1 \
        --target-http-proxy=l7-ilb-proxy \
        --target-http-proxy-region=us-west1
    
  8. Configura un servicio de backend de texto destacado para la extensión de ubicación.

    Para el servidor de extensiones, usa el ejemplo de reenvío dinámico en el repositorio de GitHub de Service Extensions.

  9. Crea un archivo YAML, dynamic-ext.yaml, con el siguiente contenido:

    name: traffic-ext
        forwardingRules:
        - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule
        loadBalancingScheme: INTERNAL_MANAGED
        extensionChains:
        - name: "chain1"
          matchCondition:
            celExpression: 'request.host == "example.com"'
          extensions:
          - name: 'ext11'
            authority: ext11.com
            allowedDynamicForwarding: true
            service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-callout-service
            failOpen: false
            timeout: 0.1s
            supportedEvents:
            - REQUEST_HEADERS
    

    Reemplaza PROJECT_ID por el ID del proyecto.

    Importa la extensión de tráfico a la regla de reenvío:

    gcloud service-extensions lb-traffic-extensions import traffic-ext \
        --source=dynamic-ext.yaml \
        --region=us-west1
    

Con la extensión configurada, el tráfico se enruta según la implementación del servidor de la extensión.

¿Qué sigue?