¿Cómo consigo un enrutamiento basado en rutas en un balanceador de carga de aplicación?

8 minutos de lectura
0

Ejecuto varios microservicios detrás del balanceador de carga de aplicación. Quiero reenviar las solicitudes a grupos de destino específicos en función de la ruta URL.

Breve descripción

Un equilibrador de carga de aplicación permite crear un agente de escucha con reglas que reenvíe las solicitudes a los grupos de destino en función de la URL. Esta función no está disponible para otros tipos de equilibradores de carga, como el equilibrador de carga clásico, el equilibrador de carga de red y el equilibrador de carga de puerta de enlace. Las reglas del patrón de ruta solo se aplican a la ruta de la URL y no a los parámetros de consulta de la URL. Para obtener más información sobre los patrones de ruta, consulte Path conditions (Condiciones de ruta).

Para establecer un enrutamiento basado en rutas en su balanceador de carga de aplicación, haga lo siguiente:

  1. Cree un grupo de destino.
  2. Configure las reglas del agente de escucha.

Antes de crear los grupos de destino, asegúrese de que se cumplen los siguientes requisitos previos:

Resolución

Supongamos que tiene dos servicios, el servicio A y el servicio B, con aplicaciones que se ejecutan en estos servicios en el puerto 80. Por ejemplo, el servicio A ejecuta una aplicación en la ruta /svcA y el servicio B ejecuta una aplicación en la ruta /svcB.

Crear un grupo de destino

Una vez creadas las instancias, regístrelas en un grupo de destino. Según las reglas del agente de escucha configuradas en el balanceador de carga, las solicitudes se reenvían a los destinos registrados mediante el puerto y el protocolo que especificó para el grupo de destino. Sin embargo, puede anular la información del puerto si registra los destinos de forma individual. Para obtener más información, consulte Create a target group (Crear un grupo de destino).

Por ejemplo, supongamos que crea dos grupos de destino con Protocolo como HTTP y Puerto como 80, cada uno con una aplicación desplegada. Por ejemplo, registra la instancia de EC2 que ejecuta el servicio A con target-group-A. Para este grupo de destino, puede configurar HealthCheckProtocol como HTTP y HealthCheckPath como /svcA.

Registra la instancia de EC2 que ejecuta el servicio B con target-group-B. Para este grupo de destino, puede configurar HealthCheckProtocol como HTTP y HealthCheckPath como /svcB.

Puede añadir o eliminar destinos de sus grupos de destino en cualquier momento. Para obtener más información, consulte Register targets with your target group.

Tras especificar un grupo de destino en una regla para un agente de escucha, el balanceador de cargas supervisa continuamente el estado de todos los destinos registrados en el grupo de destino que se encuentran en la zona de disponibilidad habilitada para el balanceador de carga. El balanceador de carga redirige las solicitudes a los destinos registrados que estén en buen estado. Para obtener más información, consulte Health checks for your target groups.

Configurar reglas del agente de escucha

Al crear un agente de escucha para un balanceador de carga de aplicación, puede definir una o más reglas además de la regla predeterminada. Una regla se compone de una prioridad, una acción y una o más condiciones. No puede definir condiciones para la regla predeterminada. Si no se cumple ninguna de las condiciones para ninguna de las reglas no predeterminadas, se lleva a cabo la acción que corresponda a la regla predeterminada.

Para obtener más información sobre la prioridad de las reglas, consulte Reorder rules.

Para obtener más información sobre las acciones de las reglas, consulte Rule action types.

Para obtener más información sobre las condiciones de las reglas, consulte Rule condition types.

Para implementar el enrutamiento basado en rutas en un balanceador de carga de aplicación, debe configurar las reglas del agente de escucha. Debe configurar una regla para cada patrón de ruta que se base en el que desea enrutar las solicitudes.

Por ejemplo:

Regla del agente de escucha 1: Si la ruta URL de la solicitud contiene la cadena /svcA, reenvíe la solicitud a target-group-A. Esto se debe a que target-group-A incluye el servicio A que ejecuta una aplicación en la ruta indicada.

Regla del agente de escucha 2: Si la ruta URL de su solicitud contiene la cadena /svcB, reenvíe esa solicitud a target-group-B. Esto se debe a que target-group-B incluye el servicio B que ejecuta una aplicación en la ruta indicada.

Para crear un agente de escucha HTTP nuevo, consulte Create an HTTP listener (Crear un agente de escucha HTTP).

Para crear un agente de escucha HTTPS nuevo, consulte Create an HTTPS listener (Crear un agente de escucha HTTPS).

Para actualizar las reglas del agente de escucha con condiciones y acciones, haga lo siguiente:

  1. Abra la consola de Amazon EC2.
  2. En el panel de navegación, en Equilibrio de carga, seleccione equilibrador de carga.
  3. Seleccione el equilibrador de carga y, a continuación, elija Agentes de escucha.
  4. Para actualizar el agente de escucha, elija ** Ver/editar reglas**.
  5. Seleccione ** Agregar reglas **, con el signo más, en la barra de menús. Esto añade iconos de Insertar regla en las ubicaciones en las que puede insertar una regla en el orden de prioridad.
  6. Elija uno de los iconos de Insertar regla añadidos en el paso anterior.
  7. Para añadir una regla basada en rutas para /svcA, elija Añadir condición, Ruta y, a continuación, introduzca el patrón de ruta /svcA. Para guardar la condición, seleccione el icono de la marca de verificación.
  8. Para añadir una acción de reenvío, seleccione Añadir acción, Reenviar a y, a continuación, elija el grupo de destino target-group-A.
  9. Seleccione Guardar.

Repita los pasos anteriores para la ruta /svcB con los siguientes cambios:

  • En el paso 6, introduzca el patrón de ruta /svcB.
  • En el paso 7, elija el grupo de destino target-group-B.

Para obtener más información, consulte Reglas del agente de escucha para el equilibrador de carga de aplicación.

Nota: Las reglas de enrutamiento basado en rutas buscan una coincidencia exacta. En este ejemplo, el enrutamiento basado en rutas utiliza las definiciones de ruta /svcA y /svcB. Si su aplicación requiere que las solicitudes se enruten más adelante en estas rutas, por ejemplo, /svcA/doc o /svcB/doc, incluya un comodín al escribir la condición de la regla de enrutamiento basado en rutas. Utilice patrones de ruta similares a /svcA* o /svcB* para asegurarse de que todos los documentos de estas rutas se tengan en cuenta al enrutar las solicitudes.

Probar el enrutamiento basado en rutas

Para probar este enrutamiento, copie el nombre de DNS de su balanceador de carga de aplicación en un navegador web y añada la ruta URL /svcA o /svcB. Cuando el agente de escucha del balanceador de carga de aplicación recibe la solicitud, la reenvía al grupo de destino correspondiente en función de la condición de la ruta.

Por ejemplo, supongamos que el nombre de DNS del balanceador de carga de aplicación es alb-demo-1234567890.us-west-2.elb.amazonaws.com:

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA debe devolver el servicio A.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB debe devolver el servicio B.

Con el enrutamiento basado en rutas, su balanceador de carga de aplicación le permite alojar varios microservicios detrás de un solo balanceador de carga mediante reglas del agente de escucha y grupos de destino. Por lo tanto, puede configurar reglas complejas para dirigir las solicitudes del cliente a sus aplicaciones. Además de las reglas basadas en rutas, también puede enrutar las solicitudes a determinadas aplicaciones en función del encabezado del host, el encabezado agente-usuario y los valores de los parámetros de consulta. Para obtener más información, consulte Enrutamiento avanzado de solicitudes para equilibradores de carga de aplicación de AWS.


Información relacionada

¿Cómo soluciono problemas y corrijo fallos en las comprobaciones de estado de los equilibradores de carga de aplicación?

Solucionar problemas en los equilibradores de carga de aplicación

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años