Servidores DNS de equilibrio de carga: UDP / TCP

10

Me han pedido que reconstruya nuestra infraestructura de equilibrio de carga en el centro de datos.

La solicitud original era equilibrar la carga de los servidores FTP. Intenté hacerlo usando el equilibrador de carga actual ( Piranha / LVS), pero no lo puse en funcionamiento. No solo porque hay poca o ninguna documentación para este software. Dado que Piranhase considera obsoleto, fui HAProxydespués de un par de días intentándolo, lo que hizo el trabajo en una fracción del tiempo dedicado Piranha.

Así que tengo el equilibrio de carga FTP (modo pasivo) en su lugar. Ahora, me pidieron que reemplazara todo el equilibrador de carga de Piranha en el centro de datos. En la configuración actual de Piranha, tenemos varios servidores web, servidores IIS ... aaa y DNS .

No, aquí está la cosa:
HAProxyparece ser un LB de uso común, pero no es capaz de manejarUDP load balancing . Esto es un fastidio, ya que me gusta cómo HAProxyfunciona. Así que busqué mucho en Google y encontré varias cosas. La mayoría de las personas parecen usar LVScomo LB para DNS (TCP / UDP). Algunos usan dlbDNS, algunos usan lbnamedy algunos usan netfilter / iptables.

Como me gustaría seguir con los HAProxyservidores FTP, HTTP, IIS, me confundí al usarlo junto con LVS.

Requisitos:
2 instancias de LB con conmutación por error
2 servidores DNS (ya existentes) con conmutación por error
Múltiples servidores de fondo (http, aplicación, etc.)

Preguntas:
¿Es esto posible? ¿Es necesario el equilibrio de carga UDP en los servidores DNS? ¿Hay algún tipo de recurso que pueda mostrarme cómo comenzar con eso? ¿O hay una solución LB que es capaz de manejar no solo TCP / HTTP, sino también el equilibrio de carga UDP?

PD: La solución LB debe ser sin hardware y de código abierto / licencia GPL / sin costo.

Cualquier ayuda o conducir a los recursos respectivos es muy apreciada!

Mosh Pit
fuente
Verifique Nginx nginx.com/blog/announcing-udp-load-balancing. Esto parece responder a su pregunta de DNS
user433519

Respuestas:

15

No cargue el equilibrio de su DNS.

Es un protocolo increíblemente liviano: necesitaría una enorme cantidad de tráfico para necesitar más de una casilla (en cuyo caso, de todos modos, se quedará con un cuello de botella en su equilibrador de carga), y hay resistencia incorporada porque puede usar múltiples registros NS en su delegación (se usarán otros servidores si uno está caído).

Shane Madden
fuente
Definitivamente use los múltiples registros NS, ya que TCP se vuelve más común para DNS, solo deje que se equilibre la carga. Reinventar la rueda es doloroso por una razón.
cpt_fink
Varios servidores DNS ofrecen redundancia y evitan la falla total, pero un servidor DNS caído aún causaría retrasos en la resolución de nombres.
200_success
Vale, tiene sentido para mí. La cuestión es que todavía necesitaría una IP virtual para fines de conmutación por error si no me equivoco, porque tendremos 2 máquinas que contendrán el HAProxy y el LVS para el enrutamiento. ¿Cómo abordaría esto?
Mosh Pit
2
@MoshPit vrrpd o keepalived son buenas opciones.
Shane Madden
Supongo que está hablando de una configuración Active - Active Hot Standby, ¿correcto?
Mosh Pit
11

Me siento incómodo con estas preguntas y respuestas porque realmente no se ha establecido de qué tipo de servidor DNS está hablando. Hay algunos conceptos erróneos significativos cuando se trata de la resistencia del DNS recursivo y es importante que las personas que navegan a través de los motores de búsqueda no se salgan de esta discusión con una falsa sensación de seguridad.

  • DNS autorizado: para servidores DNS autorizados, el conocimiento común sobre la resistencia del DNS es bastante acertado. Siempre que tenga varios servidores DNS autorizados que sean geo-redundantes, estará bien. La razón principal para agregar alta disponibilidad para IP individuales es si aloja muchas zonas autorizadas. Esto le permite aumentar su número de servidores sin tener que cambiar la configuración del registrador para cada dominio alojado.

  • DNS recursivo : utilice siempre alguna forma de solución de alta disponibilidad. (BGP, electrodomésticos, etc.) Aquí es donde puede meterse en problemas serios. Todas las bibliotecas de resolución no se crean de la misma manera: los clientes DNS de Windows utilizarán el servidor inicial utilizado entre consultas, pero la mayoría de los sistemas basados ​​en Unix siempre recorrerán la lista secuencialmente. Lo que es aún menos conocido es que estas bibliotecas de Unix tendrán que agotar el tiempo de espera en cada combinación de dominio de búsqueda antes de pasar al siguiente servidor. Si tiene múltiples dominios de búsqueda configurados y el primer servidor en el orden de búsqueda de resolución está muerto, esto puede crear retrasos significativos en la resolución de DNS para cada solicitud: más que suficiente para causar problemas dentro de sus aplicaciones críticas.

Cuando se trata de DNS recursivo, recuerde que la infraestructura de su servidor es tan resistente como la configuración del cliente más inteligente. A medida que su empresa crece, esto es algo sobre lo que nunca tiene control. No haga suposiciones de diseño basadas en un entorno de sistema operativo de servidor homogéneo, ya que las cosas rara vez permanecen igual en una empresa en crecimiento. Esto definitivamente morderá a alguien si no planeas con anticipación.

Andrew B
fuente
Estamos utilizando bind / named como un servicio DNS hasta ahora.
Mosh Pit
Buen punto: estaba asumiendo autoridad en mi respuesta, pero tienes razón, puede ser un recurrente.
Shane Madden
1
@MoshPit Su comentario sobre el "servicio DNS" no aclaró si esto era recursivo o autoritario. Autorizado es cuando aloja dominios. Recursivo es algo que usaría para obtener la dirección IP de los dominios que no aloja. Los servidores que hacen ambas cosas son "mixtos", lo que va en contra de las mejores prácticas de seguridad.
Andrew B
1
Pido disculpas por eso, noté eso cuando publicaste ese comentario. Tenemos el control de nuestros propios servidores DNS, y estos son autorizados.
Mosh Pit
No use un equilibrador de carga para alta disponibilidad.
womble
2

En estos días puedes usar dnsdistPowerDNS

Desde el README

dnsdist es un equilibrador de carga altamente consciente de DNS, DoS y abuso. Su objetivo en la vida es enrutar el tráfico al mejor servidor, brindando el mejor rendimiento a los usuarios legítimos mientras se desvía o bloquea el tráfico abusivo.

dnsdist es dinámico, en el sentido de que su configuración se puede cambiar en tiempo de ejecución, y que sus estadísticas se pueden consultar desde una interfaz similar a una consola.

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

Proporcionan repositorios para sistemas operativos comunes: https://repo.powerdns.com/

Boden Garman
fuente