Como configurar o ARR no modo ativo / passivo (também conhecido como failover)?

3

O problema

Estou tentando configurar vários farms da Web (para sites diferentes) seguindo o arquitetura NLB + ARR . Digamos que eu tenha 6 VMs:

  1. Cluster ARR + NLB de 2 VMs. Ele recebe tráfego e encaminha para os servidores de conteúdo. Regras de reconfiguração de URL com condições de cabeçalho do Host HTTP são usadas para rotear solicitações para corrigir servidores de conteúdo.
  2. Servidores de conteúdo do site 1: 2 VMs. Hospedando o link
  3. Servidores de conteúdo do site 2: 2 VMs. Hospedando o link

Tudo funciona bem, testei que tenho alta disponibilidade nas duas camadas.

Agora, por uma razão, o Site 2 deve funcionar no modo ativo / passivo, para que apenas 1 VM receba tráfego, enquanto a outra seja para failover. De certa forma, quero algo semelhante ao modo de host único do NLB, mas para o ARR.

Como isso pode ser alcançado?

Soluções alternativas

Eu tentei várias abordagens indiretas para alcançar o comportamento desejado.

  1. Algoritmo de balanceamento de carga. Tentei definir a volta e pesar para 1/0. O problema é que você não pode definir 0. Deve ser pelo menos 1. Você pode definir 4 bilhões + smth / 1, mas não tenho certeza se isso garante que nenhuma solicitação aleatória vá para o segundo nó.
  2. Nome do host para afinidade de servidor. Em configurações avançadas de afinidade de nome de host, posso configurar apenas 1 servidor a ser alocado para o site 2. Ele funciona, mas o problema é que as tabelas de roteamento não são sincronizadas entre o 2 VMs ARR. Assim, de tempos em tempos, a ARR1 afiniza o tráfego para um nó, enquanto a ARR2 para a outra, que não é ativa / passiva.
  3. Afinidade do Nome do Host + Host Único do NLB. Como uma modificação da abordagem anterior, também posso alternar o NLB para o modo de host único para resolver o problema de sincronização da tabela de roteamento. O problema neste caso é que eu estou desligando o balanceamento de carga ARR para o Site 1 também.
  4. Host de Afinidade de Nome do Host + NLB Host Único + 2 Endereços IP. Se eu adicionar o segundo endereço IP à solução anterior, crie dois clusters NLB funcionando em modos diferentes, tudo deve funcionar bem. O problema é que não quero pagar pelo segundo IP público.

Nenhuma das soluções é perfeita.

A imagem da solução ideal

Eu realmente gostaria de saber uma maneira de colocar o ARR em um único modo de host, como pode ser feito para o NLB. E sincronize o roteamento entre nós.

Alguém sabe como fazer isso? Ou conhece abordagens alternativas?

    
por Pavel Gatilov 17.05.2015 / 12:58

1 resposta

1

Encontrei uma maneira que parece funcionar, embora não completamente. É descrito aqui . A idéia é usar o algoritmo de balanceamento de carga 'Server Variable Hash' e 'HTTP_HOST' como a variável. Dessa forma, todas as instâncias do ARR mapeiam um determinado host para o mesmo servidor de conteúdo. Eu testei que eles fazem fallback para outro servidor disponível se o mapeado não estiver funcionando.

O problema com a solução, porém, é que você não pode controlar em qual servidor de conteúdo um host está mapeado, ele é determinado por uma função hash. No entanto, de certa forma está correto - se você tem medo de tornar qualquer nó ativo, como você pode esperar um failover confiável? Você precisa ter certeza em todos os seus servidores de conteúdo ao mesmo tempo.

Outro problema é que você não pode usar vários nomes de host para cada site, porque é provável que você os mapeie em servidores diferentes.

    
por 28.07.2015 / 11:36