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

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

O problema

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

  1. Cluster ARR+NLB de 2 VMs. Ele recebe tráfego e o encaminha para servidores de conteúdo. Regras de reescrita de URL com condições de cabeçalho de host HTTP são usadas para rotear solicitações para servidores de conteúdo corretos.
  2. Servidores de conteúdo do site 1: 2 VMs. Hospedagemhttp://www.meusite1.com/
  3. Servidores de conteúdo do site 2: 2 VMs. Hospedagemhttp://www.meusite2.com/

Tudo funciona bem, testei que tenho alta disponibilidade em ambas as camadas.

Agora, por alguma razão, o Site 2 deve funcionar em modo ativo/passivo, para que apenas 1 VM receba tráfego, enquanto a outra é 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

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

  1. Algoritmo de balanceamento de carga.Tentei definir pesos redondos e robin 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 do servidor.Nas configurações avançadas do Host Name Affinity, consigo configurar apenas 1 servidor para ser alocado no Site 2. Funciona, mas o problema é que as tabelas de roteamento não estão sincronizadas entre as 2 VMs ARR. Assim, de vez em quando o ARR1 afiniza o tráfego para um nó, enquanto o ARR2 para o outro, que não é ativo/passivo.
  3. Afinidade de nome de host + host único NLB.Como uma modificação da abordagem anterior, também posso mudar o NLB para o modo de host único para resolver o problema de sincronização da tabela de roteamento. O problema neste caso é que também estou desativando o balanceamento de carga ARR para o Site 1.
  4. Afinidade de nome de host + host único NLB + 2 endereços IP.Se eu adicionar o segundo endereço IP à solução anterior, criar 2 clusters NLB trabalhando em modos diferentes, tudo deverá 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 no modo de host único, como pode ser feito para o NLB. E sincronize o roteamento entre os nós.

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

Responder1

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

O problema com a solução, entretanto, é que você não pode controlar em qual servidor de conteúdo um host é mapeado; isso é determinado por uma função hash. No entanto, de certa forma, está correto - se você tem medo de tornar qualquer nó ativo, como pode esperar um failover confiável? Você precisa ter certeza de 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 provavelmente você os mapeará em servidores diferentes.

informação relacionada