Servidores DNS com balanceamento de carga: UDP / TCP

10

Fui solicitado a reconstruir nossa infraestrutura de balanceamento de carga no data center.

A solicitação original era para balancear a carga de servidores FTP. Eu tentei fazer isso usando o balanceador de carga atual ( Piranha / LVS ), mas não o coloquei em funcionamento. Não apenas porque há pouca ou nenhuma documentação para este software. Como Piranha é considerado obsoleto, passei para HAProxy depois de alguns dias tentando, o que fez o trabalho em uma fração do tempo gasto em Piranha .

Portanto, tenho o balanceamento de carga FTP (modo passivo) no lugar. Agora, me pediram para substituir todo o Piranha Load Balancer no data center. Na configuração atual do Piranha, temos vários servidores web, servidores IIS .... aaaand DNS .

Não, aqui está o seguinte:
HAProxy parece ser um LB comumente usado, mas não é capaz de manipular UDP load balancing . Isso é uma chatice, pois gosto de como HAProxy funciona. Então eu pesquisei muito e encontrei várias coisas. A maioria das pessoas parece usar LVS como um LB para DNS (TCP / UDP). Alguns usam dlbDNS , alguns usam lbnamed e outros usam netfilter / iptables .

Como gostaria de manter o HAProxy para servidores FTP, HTTP e IIS, fiquei confuso ao usá-lo lado a lado com LVS .

Requisitos:
2 instâncias de LB com failover
2 servidores DNS (já existentes) com failover
Vários servidores de back-end (http, aplicativo, etc ...)

Perguntas:
Isso é possível? O balanceamento de carga do UDP em servidores DNS é necessário? Existe algum tipo de recurso que possa me mostrar como começar com isso? Ou existe uma solução LB que seja capaz de lidar não apenas com TCP / HTTP, mas também com o balanceamento de carga UDP?

PS: A solução LB deve ser não-hardware e licença open source / licença GPL / livre de custos.

Qualquer ajuda ou levar aos respectivos recursos é muito apreciada!

    
por Mosh Pit 18.02.2015 / 00:37

3 respostas

15

Não faça o balanceamento de carga do seu DNS.

É um protocolo incrivelmente leve - você precisaria de uma enorme quantidade de tráfego para precisar de mais de uma caixa (nesse caso, seria apenas um gargalo no balanceador de carga) e há resiliência embutida porque você pode usar vários registros NS em sua delegação (outros servidores serão usados se houver down).

    
por 18.02.2015 / 00:44
11

Não me sinto à vontade com este Q & A porque não foi realmente estabelecido de que tipo de servidor DNS você está falando. Há alguns equívocos significativos quando se trata da resiliência do DNS recursivo e é importante que as pessoas que navegam através dos mecanismos de busca não se afastem dessa discussão com uma falsa sensação de segurança.

  • DNS autoritativo : para servidores DNS autoritativos, o conhecimento comum sobre a resiliência do DNS é bastante preciso. Contanto que você tenha vários servidores DNS autoritativos que são geo-redundantes, você está bem. A principal razão para adicionar alta disponibilidade para IPs individuais é se você estiver hospedando muitas zonas autoritativas. Isso permite que você aumente seu número de servidores sem precisar alterar as configurações de registrador para todos os domínios hospedados.

  • DNS recursivo : use sempre alguma forma de solução de alta disponibilidade. (BGP, aparelho, etc.) É aqui que você pode ter sérios problemas. Todas as bibliotecas do resolvedor não são criadas da mesma forma: os clientes DNS do Windows farão um round robin no servidor inicial usado entre as consultas, mas a maioria dos sistemas baseados no Unix sempre percorrerá a lista sequencialmente. O que é mesmo menos conhecido é que essas bibliotecas Unix terão que esgotar o tempo de espera em cada domínio de pesquisa antes de passar para o próximo servidor. Se você tiver vários domínios de pesquisa configurados e o primeiro servidor na ordem de pesquisa do resolvedor estiver inativo, isso poderá criar atrasos significativos na resolução de DNS para cada solicitação: mais do que suficiente para causar problemas em seus aplicativos críticos.

Quando se trata de DNS recursivo, lembre-se de que a infraestrutura do seu servidor é tão resiliente quanto a configuração do cliente mais braindead. Conforme sua empresa cresce, isso é algo que você nunca tem controle. Não faça quaisquer suposições de design baseadas em um ambiente de SO de servidor homogêneo, já que as coisas raramente permanecem as mesmas em uma empresa em crescimento. Isso definitivamente vai morder alguém se você não planejar com antecedência.

    
por 19.02.2015 / 07:16
2

Nos dias de hoje, você pode usar dnsdist pelo PowerDNS

Do README

dnsdist is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in life is to route traffic to the best server, delivering top performance to legitimate users while shunting or blocking abusive traffic.

dnsdist is dynamic, in the sense that its configuration can be changed at runtime, and that its statistics can be queried from a console-like interface.

link

Eles fornecem repositórios para sistemas operacionais comuns: link

    
por 12.08.2016 / 02:34