compreender a equilibragem de carga em asp.net

Estou a escrever um site que vai começar a usar um balancer de carga e estou a tentar perceber.

    Será que isto faz todo o equilíbrio por ti?
  1. você tem uma camada Web separada que fica no servidor distribuído que faz algum trabalho antes de enviar para o sub-servidor, como o auth ou outro trabalho?
Parece que muitos dos artigos que continuo a ler não me dão uma resposta directa, ou não estou a entendê-los correctamente. gostava de saber como funciona o equilíbrio de carga a partir de um lado técnico, e se alguém tem algum código para partilhar isso também seria bom.

Entendo que o caching vai ser um problema, mas isso também é um tópico diferente.

Author: Taylan Aydinli, 2013-11-20

3 answers

Os IIS não têm um balancer de carga por omissão, mas pode usar pelo menos duas tecnologias da Microsoft:

Ambas as tecnologias não requerem nenhum código per se, é uma questão de infra-estruturas. Mas é claro que você deve se lembrar sobre o ambiente balanceado de carga durante o desenvolvimento. Por exemplo, para fazer um Web sites verdadeiramente equilibrado, eles devem ser apátridas. Caso contrário, você terá que fornecer o chamado stickiness entre o cliente e o servidor, de modo que o mesmo cliente estará conectando-se sempre ao mesmo servidor.

Para fazer o serviço apátrida, não persistir qualquer estado (sessão, por exemplo, em caso de ASP.NET ) no servidor, mas em servidor externo partilhado entre todos os servidores na quinta. Por isso é comum, por exemplo, usar externo ASP.NET Session server (modos StateServer ou SQLServer) para todos os sites do conjunto.

Editar:

Só para esclarecer algumas coisas, algumas palavras sobre ambas as tecnologias mencionadas:
  • o NLB funciona a nível da rede (Na verdade, como um controlador de rede), por isso sem qualquer conhecimento sobre as aplicações utilizadas. Você cria os chamados grupos que consistem de algumas máquinas / servidores e expô-los como um único endereço IP. Em seguida, outra máquina pode usar este IP como qualquer outro IP, mas as conexões serão direcionadas para uma das máquinas do cluster automaticamente. Um cluster é configurado em cada servidor, não há nenhuma máquina de roteamento externa adicional. Dependendo das configurações dos aglomerados, como já mencionamos, uma stickiness pode ser ativada ou desativada (chamada aqui de um único ou nenhuma afinidade). Há também uma carga parâmetro weight , para que possa definir a distribuição de carga pesada, enviando mais ligações para a máquina mais rápida, por exemplo. Mas este parâmetro é estático, não pode ser dinamicamente baseado em rede, CPU ou qualquer outro uso. Na verdade, o NLB não se importa se a aplicação target está mesmo a correr, apenas encaminha o tráfego de rede para a máquina seleccionada. Mas ele percebe que os servidores ficaram offline, então não haverá roteamento lá. As vantagens do NLB são o facto de ser bastante leve e não exigir qualquer Niquel.
  • ARR é muito mais sofisticado, é construído como um módulo em cima do IIS e é projetado para tomar as decisões de roteamento a nível da aplicação. O balanceamento de carga de rede é apenas uma de suas características, Uma vez que é uma solução de roteamento mais completa. Ele tem "roteamento baseado em regras, afinidade cliente e nome do host, balanceamento de carga de solicitações do Servidor HTTP, e cache de disco distribuído" como a Microsoft afirma. Você cria lá fazendas de servidores com muitas opções como o balanço de carga algoritmo, distribuição de carga e stickiness do cliente. Você pode definir testes de saúde e regras de roteamento para encaminhar pedidos para outros servidores. A desvantagem de tudo isso é que deve haver uma máquina dedicada onde ARR é instalado, para que ele precisa de mais recursos (e custos).
  • NLB & ARR - como usar uma única máquina ARR pode ser o único ponto de falha, A Microsoft afirma que vale a pena considerar a criação de um aglomerado NLB de ARR Niquel.
 17
Author: Konrad Kokosa, 2013-11-20 23:00:16

Algumas dicas, e talvez itens para se familiarizar completamente com:

  • ARR como todas as respostas acima é um "proxy" que lida com o tráfego de seus usuários para seus servidores.

  • Você pode lidar com Estado como Konrad pontos, ou você pode ter ARR fazer "pegajoso" sessões (certifique-se que um cliente vai sempre para "este servidor" - presumivelmente, o servidor que mantém o estado para que o cliente específico). Veja a discussão/comentários sobre essa resposta é óptima.

  • Não uso um chapéu de TI / servidor há tanto tempo e francamente não toquei em mãos de agrupamento (sempre "manipulado para mim automaticamente" por algum fornecedor), então eu fiz esta pergunta do nosso anfitrião, "o que/como é a replicação entre o nosso cluster/fazenda" feito?"- A pergunta abrange coisas como

      Só estou a trabalhar / a definir coisas num servidor, isso é replicado através de X VMs no nosso cluster/quinta? Quanto tempo?
  • E dinamicamente? ficheiros gerados, código e/ou gerados pelo utilizador (sistema de ficheiros)? Se estiver no sistema de ficheiros VM1, e eu tiver 10 VMs balanceados, e o cliente pode atacar qualquer um deles a qualquer momento, então...? E a encriptação? por exemplo, se usar o DPAPI para encriptar a web.material de configuração( p.ex.: db conn strings/ seções), Qual é o impacto disso (porque é baseado na chave da máquina, e bem, a coisa óbvia é que agora você tem máquina(s) ou VM(S). RSA reescrever....?
  • SSL: o ARR também pode tratar disto por ti, e isso é óptimo! Mas, como com todo o poder, vem um " con " - se você verificar/validar no seu código, por exemplo HttpRequest.Será sempre. Os seus servidores / VMs não têm o cert, a ARR tem. O comando encriptado está entre o cliente e o ARR . ARR para seus servidores/VMs não é. como o link explica, se você preferir o contrário (sem offloading), você poder...mas isso significa que todos os seus servidores / VMs devem então ter um cert (e como isso diz respeito à "replicação" acima começa a estourar em sua cabeça).

  • Não era para ser abrangente, apenas listando as coisas da memória...Hth
     5
    Author: EdSF, 2013-11-20 16:27:46