¿Cómo configurar ARR en modo activo/pasivo (también conocido como conmutación por error)?

¿Cómo configurar ARR en modo activo/pasivo (también conocido como conmutación por error)?

El problema

Estoy intentando configurar varias granjas de servidores web (para diferentes sitios) siguiendo las instruccionesArquitectura NLB+ARR. Digamos que tengo 6 máquinas virtuales:

  1. Clúster ARR+NLB de 2 máquinas virtuales. Recibe tráfico y lo reenvía a servidores de contenidos. Las reglas de reescritura de URL con condiciones de encabezado de host HTTP se utilizan para enrutar solicitudes a servidores de contenido correctos.
  2. Servidores de contenido del sitio 1: 2 máquinas virtuales. Alojamientohttp://www.mysite1.com/
  3. Servidores de contenido del sitio 2: 2 máquinas virtuales. Alojamientohttp://www.mysite2.com/

Todo funciona bien, he probado que tengo alta disponibilidad en ambos niveles.

Ahora, por una razón, el Sitio 2 debe funcionar en modo activo/pasivo, de modo que solo 1 VM reciba tráfico, mientras que la otra sea para conmutación por error. En cierto modo, quiero algo similar al modo de host único de NLB, pero para ARR.

¿Cómo se puede lograr esto?

Soluciones alternativas

He probado varios enfoques indirectos para lograr el comportamiento deseado.

  1. Algoritmo de equilibrio de carga.Intenté configurar los pesos round y robin a 1/0. El problema es que no se puede establecer 0. Debe ser al menos 1. Puede establecer 4 mil millones + algo/1, pero no estoy seguro de si esto garantiza que ninguna solicitud aleatoria llegue al segundo nodo.
  2. Nombre de host para la afinidad del servidor.En la configuración avanzada de Host Name Affinity, puedo configurar solo 1 servidor para asignarlo al Sitio 2. Funciona, pero el problema es que las tablas de enrutamiento no están sincronizadas entre las 2 VM ARR. Entonces, de vez en cuando ARR1 afiniza el tráfico a un nodo, mientras que ARR2 al otro, que no es activo/pasivo.
  3. Afinidad de nombre de host + host único NLB.Como modificación del enfoque anterior, también puedo cambiar el NLB al modo de host único para resolver el problema de sincronización de la tabla de enrutamiento. El problema en este caso es que también estoy desactivando el equilibrio de carga ARR para el Sitio 1.
  4. Afinidad de nombre de host + Host único NLB + 2 direcciones IP.Si agrego la segunda dirección IP a la solución anterior, creo 2 clústeres NLB que funcionan en diferentes modos, todo debería funcionar bien. El problema es que no quiero pagar por la segunda IP pública.

Ninguna de las soluciones es perfecta.

La imagen de la solución ideal.

Realmente me gustaría saber una manera de poner el ARR en modo de host único como se puede hacer con el NLB. Y haga que sincronice el enrutamiento entre nodos.

¿Alguien sabe cómo hacer eso? ¿O conoce enfoques alternativos?

Respuesta1

He encontrado una forma que parece funcionar, aunque no del todo. esta descritoaquí. La idea es utilizar el algoritmo de equilibrio de carga 'Server Variable Hash' y 'HTTP_HOST' como variable. De esta manera, todas las instancias de ARR asignan un host determinado al mismo servidor de contenido. He probado que recurren a otro servidor disponible si el asignado no funciona.

Sin embargo, el problema con la solución es que no se puede controlar a qué servidor de contenido se asigna un host, ya que está determinado por una función hash. Sin embargo, en cierto modo es correcto: si tiene miedo de activar cualquier nodo, ¿cómo puede esperar una conmutación por error confiable? Tienes que estar seguro en todos tus servidores de contenido al mismo tiempo.

Otro problema es que no puede utilizar varios nombres de host para cada sitio, porque probablemente los asignará a diferentes servidores.

información relacionada