Saltar al contenido

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

8 minutos de lectura
0

Pretendo ejecutar varios microservicios detrás del equilibrador de carga de aplicación. Quiero reenviar las solicitudes a grupos objetivo específicos en función de la ruta URL.

Descripción corta

Puedes usar un equilibrador de carga de aplicación para crear un agente de escucha con reglas que reenvíe las solicitudes a los grupos objetivo en función de la URL. Las reglas del patrón de rutas se aplican solo 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, consulta Condiciones de ruta.

Nota: Esta característica no es compatible con el equilibrador de carga clásico, el equilibrador de carga de red ni el equilibrador de carga de puerta de enlace.

Para establecer un enrutamiento basado en rutas en tu equilibrador de carga de aplicación, sigue estos pasos:

  1. Crea un grupo objetivo.
  2. Configura las reglas del agente de escucha.

Requisitos previos:

Resolución

Creación de un grupo objetivo

Después de crear las instancias, regístralas en un grupo objetivo. Según las reglas del agente de escucha configuradas, el equilibrador de carga de aplicación envía solicitudes a los objetivos registrados en función del puerto y el protocolo que has especificado. Sin embargo, puedes anular la información del puerto si registras los objetivos de forma individual. Para obtener más información, consulta Creación de un grupo objetivo para el equilibrador de carga de aplicación.

Por ejemplo, supongamos que tienes dos servicios, el servicio A y el servicio B. Las aplicaciones que ejecutan estos servicios utilizan el puerto 80. El servicio A ejecuta una aplicación en la ruta /svcA y el servicio B ejecuta una aplicación en la ruta /svcB.

  • Creas dos grupos objetivo con Protocolo como HTTP y Puerto como 80, cada uno con una aplicación desplegada.
  • Registras la instancia de Amazon EC2 que ejecuta el servicio A con target-group-A. Para este grupo objetivo, puedes configurar HealthCheckProtocol como HTTP y HealthCheckPath como /svcA.
  • Registra la instancia de Amazon EC2 que ejecuta el servicio B con target-group-B. Para este grupo de destino, puedes configurar HealthCheckProtocol como HTTP y HealthCheckPath como /svcB.

Puedes agregar o eliminar objetivos de tus grupos objetivo en cualquier momento. Para obtener más información, consulta Registro de destinos en el grupo objetivo del equilibrador de carga de aplicación.

Después de especificar un grupo objetivo, el equilibrador de carga supervisa continuamente el estado de todos los objetivos que se encuentran en la zona de disponibilidad activada. El equilibrador de carga redirige las solicitudes a los objetivos registrados que estén en buen estado. Para obtener más información, consulta Comprobaciones de estado de los grupos objetivo del equilibrador de carga de aplicación.

Configuración de reglas del agente de escucha

Al crear un agente de escucha para un equilibrador de carga de aplicación, puedes 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 puedes definir condiciones para la regla predeterminada. Si no se cumple ninguna de las condiciones para las reglas definidas, se lleva a cabo la acción que corresponde a la regla predeterminada.

Para implementar el enrutamiento basado en rutas en un equilibrador de carga de aplicación, debes configurar las reglas del agente de escucha. Configura una regla para cada patrón de ruta en función de dónde deseas enrutar las solicitudes.

Ejemplo de reglas del agente de escucha

El siguiente ejemplo muestra las reglas del agente de escucha para los servicios A y B:

Regla del agente de escucha 1: Si la ruta URL de la solicitud contiene la cadena /svcA, reenvía la solicitud a target-group-A. Haces esto porque 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ía esa solicitud a target-group-B. Haces esto porque target-group-B incluye el servicio B que ejecuta una aplicación en la ruta indicada.

Para actualizar las reglas del agente de escucha con condiciones y acciones, sigue estos pasos:

  1. Abre la consola de Amazon EC2.
  2. En el panel de navegación, en Equilibrio de carga, selecciona Equilibradores de carga.
  3. Elige el equilibrador de carga y, a continuación, selecciona Agentes de escucha y reglas.
  4. Para actualizar el agente de escucha, elige la pestaña Agentes de escucha y reglas y, a continuación, selecciona el texto de la columna Protocol:Port para abrir la página de detalles del agente de escucha.
  5. En la pestaña Reglas, en la sección Reglas del agente de escucha, selecciona la regla que deseas editar.
  6. Selecciona Acciones y, a continuación, elige Editar regla.
  7. Elige Agregar reglas.
  8. Modifica el nombre y las etiquetas según sea necesario. Para agregar etiquetas adicionales, elige Agregar etiquetas adicionales.
  9. Selecciona Siguiente.
  10. Para agregar una regla basada en rutas para /svcA, elige Agregar condición, Ruta y, a continuación, introduce el patrón de ruta /svcA. Selecciona Confirmar.
  11. Selecciona Siguiente.
  12. Para agregar una acción de reenvío, selecciona Acciones de enrutamiento como Reenviar a los grupos objetivo y, a continuación, en el menú, elige el grupo objetivo target-group-A.
  13. Selecciona Siguiente.
  14. Elige la prioridad adecuada.
  15. Revisa los detalles y las configuraciones actualizadas de tu regla. Cuando estés conforme con tus selecciones, elige Guardar cambios.

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

  • En el paso 10, introduce el patrón de ruta /svcB.
  • En el paso 12, elige el grupo objetivo target-group-B f.

Para obtener más información, consulta 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. Si su aplicación requieren que las solicitudes se enruten más en estas rutas, incluye un comodín en la condición de la regla de enrutamiento basada en rutas. Utiliza patrones de ruta similares a /svcA* o /svcB* para contabilizar los documentos de estas rutas al enrutar las solicitudes.

Probar el enrutamiento basado en rutas

Para probar el enrutamiento basado en rutas, copia el nombre de DNS de tu equilibrador de carga de aplicación en un navegador web y agrega la ruta URL /svcA o /svcB.

Por ejemplo, supongamos que el equilibrador de carga de aplicación tiene alb-demo-1234567890.us-west-2.elb.amazonaws.com como nombre de DNS.

  • 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.

Cuando el agente de escucha del equilibrador 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.

Si utilizas el enrutamiento basado en rutas, puedes hospedar varios microservicios detrás de un único equilibrador de carga de aplicación. Puedes dirigir el tráfico a cada servicio en función de las reglas del agente de escucha y los grupos objetivo. También puedes enrutar el tráfico en función de condiciones como el encabezado del host, el encabezado del agente de usuario o los valores de los parámetros de consulta. Para obtener más información, consulta Enrutamiento avanzado de solicitudes para equilibradores de carga de aplicación de AWS.

Información relacionada

¿Cómo soluciono los errores relacionados con las comprobaciones de estado de los equilibradores de carga de aplicación?

Solución de problemas de los equilibradores de carga de aplicación