Soy nuevo en el equilibrio de carga y me pregunto si es posible usar múltiples equilibradores de carga para redirigir el tráfico a mis servidores de aplicaciones. Realmente no entiendo cómo se puede hacer esto. ¿No debería un nombre de dominio coincidir uno a uno con la dirección IP de un determinado servidor (en este caso, la IP de un equilibrador de carga)? Si cada servidor de equilibrio de carga tiene una IP diferente, ¿cómo pueden recibir la solicitud ambos equilibradores de carga (o 10 equilibradores de carga o 50 o 100)?
domain-name-system
nginx
load-balancing
haproxy
high-load
usuario3790827
fuente
fuente
Respuestas:
El uso de DNS round robin no es tan bueno para la alta disponibilidad: si un servidor se desconecta, los clientes aún intentarán conectarse y esperar un tiempo de espera.
Hay otras formas de lograr esto.
1) Balanceadores de carga activos / pasivos
Básicamente, un balanceador de carga maneja todo el tráfico para una dirección IP.
Si ese equilibrador se cae, el nodo pasivo salta y se hace cargo de la IP.
Tenga en cuenta que los equilibradores de carga prácticamente solo reenvían tráfico, por lo que para sitios pequeños y medianos esto puede funcionar bien.
2) Balanceadores de carga activos / activos
La misma IP de tráfico se configura en ambos (o muchos más) equilibradores de carga.
El tráfico entrante se envía a todos los equilibradores de carga, pero un algoritmo elige qué equilibrador debe responder, todos los demás descartan ese tráfico.
Una forma simple de pensarlo, tiene dos equilibradores de carga:
cuando la IP solicitante finaliza con un número par, el equilibrador de carga A responde, de lo contrario, el equilibrador de carga B responde.
Por supuesto, su infraestructura debe admitir esto y hay una sobrecarga debido al tráfico que se envía pero se descarta.
Más información, p. Ej. Aquí: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
fuente
La alta disponibilidad con equilibradores de carga se implementa comúnmente utilizando un protocolo de dirección IP virtual (VIP) que permite que varios hosts (es decir, equilibradores de carga) respondan a una dirección IP común de una de varias maneras posibles (variaciones en activo / pasivo, activo / activo) .
Hay una buena cantidad de estos protocolos, los que más he visto con equilibradores de carga regulares son VRRP y NLB (así como también una buena cantidad de protocolos de caja negra no descriptos en dispositivos). Expandiéndose a enrutadores y cortafuegos también se puede encontrar CARP , HRSP , GLSP , por ejemplo.
Esta estrategia tiene una serie de beneficios sobre el equilibrio de carga de DNS, que es una estrategia más simple (y que se trata en otra respuesta).
El equilibrio de carga de DNS está cargado, por ejemplo, con:
El uso de un protocolo de IP virtual para HA puede tener una opción para lograr, por ejemplo:
Solo usted sabe qué estrategia y protocolo se ajusta mejor a su escenario.
fuente
Los requisitos: tener una solución práctica que funcione para la nube o cualquier tipo de entorno donde no haya acceso a equilibradores de carga de hardware, protocolos BGP y todo eso.
Se desconoce el número de solicitud de ingresos de una aplicación, pero debe ser lo suficientemente alto como para satisfacer una mayor expectativa de carga sin temor.
Busquemos una aplicación con una naturaleza de carga similar, por ejemplo, la tienda de registro y la aplicación de búsqueda. Encontré uno .
Que quieren ellos:
¿Qué intentaron y aprendieron sobre ELB?
¿Por qué eligieron con Route53:
Ese ejemplo en particular muestra que en algunos escenarios (recopilador de registros, servicio de anuncios o similar) el balanceador de carga es redundante y la "solución round robin de verificación de estado de DNS" hace su trabajo muy bien.
Veamos qué dice AWS sobre la conmutación por error de DNS:
Esa técnica también hace que el ELB (no requerido, solo por una nota) sea más robusto, nuevamente se basa en RR + Health Check:
Veamos ahora cómo funciona detrás de escena. La pregunta obvia es cómo lidiar con el almacenamiento en caché de DNS:
y definir un recurso comodín
Algolia introdujo la "estrategia de reintento del cliente" que funciona bastante bien si su cliente (JS en su caso) puede manejar eso:
fuente