Como conseguir Alta Disponibilidade e Escalabilidade - ARR e NLB

por Won Yoo

Obter Alta Disponibilidade e Escalabilidade:
ARR (Application Request Routing) da Microsoft para IIS 7.0 e superior e NLB (Balanceamento de Carga de Rede).

Microsoft Corporation
Autor: Ahmed Bisht, Won Yoo
Publicado: 13 de novembro de 2008

Resumo

Este documento fornece diretrizes prescritivas sobre como o ARR (Application Request Routing) pode ser usado com NLB (Balanceamento de Carga de Rede), para obter alta disponibilidade e escalabilidade.

Visão geral

O ARR (Application Request Routing) da Microsoft para o IIS 7.0 e superior é um módulo de roteamento com base em proxy que encaminha as solicitações HTTP para servidores de conteúdo com base em cabeçalhos HTTP, variáveis de servidor e algoritmos de balancear carga. Uma implantação típica do ARR é ilustrada no diagrama abaixo:

Diagram showing the A R R forwarding H T T P requests.

Embora o ARR forneça alta disponibilidade e escalabilidade para os servidores de conteúdo, a implantação geral não é altamente disponível ou escalonável porque:

  • ARR é o único ponto de falha.
  • A escalabilidade dos servidores de conteúdo é limitada pela capacidade máxima de um servidor de ARR.

Para superar esses desafios, os administradores podem considerar o uso de vários servidores de ARR com NLB (Balanceamento de Carga de Rede). O ARR pode ser implantado no modo ativo/passivo para obter apenas alta disponibilidade ou no modo ativo/ativo, para alcançar alta disponibilidade e escalabilidade. Este white paper descreve como o ARR e o NLB podem ser implantados juntos para habilitar os principais cenários do ARR e, ao mesmo tempo, obter alta disponibilidade e escalabilidade gerais. O NLB está disponível em todas as SKUs do Windows Server 2008.

Uso do Application Request Routing e Balanceamento de Carga de Rede

O ARR é criado como um módulo sobre o IIS e foi projetado para tomar as decisões de roteamento na camada 7 (aplicativo). Mais precisamente, o ARR depende de outro módulo do IIS, a Reescrita de URL, para inspecionar os cabeçalhos de solicitação HTTP de entrada e as variáveis de servidor para tomar as decisões de roteamento. Considerando esse design, os administradores podem escrever regras de roteamento inteligentes com base nas informações do nível do aplicativo, como:

  • Nome do host (HTTP_HOST): rotear o tráfego para diferentes servidores de conteúdo com base no nome do host.
  • Recurso solicitado (URL): com base em extensões de arquivo, determine se os recursos solicitados são para conteúdo estático ou conteúdo dinâmico e encaminhe as solicitações adequadamente.
  • Informações do cliente (HTTP_USER_AGENT): com base no tipo de navegador e na versão, encaminhe as solicitações para os servidores de conteúdo apropriados.
  • Cabeçalhos personalizados (definidos como um cookie por aplicativos): rotear o tráfego com base nas informações de cookie definidas por aplicativos, como preferência do usuário ou ID do usuário.

Acima estão apenas alguns dos exemplos. Para obter uma lista completa de cabeçalhos HTTP e variáveis de servidor, consulte o Apêndice A.

Como o NLB toma as decisões de roteamento na camada 3, informações específicas do aplicativo, como cabeçalhos HTTP e variáveis de servidor, não podem ser usadas para fornecer roteamento baseado no nível do aplicativo. Ao mesmo tempo, o ARR não fornece recursos de implantação tolerantes a falhas para si mesmo e deve contar com outras tecnologias e soluções complementares para obter alta disponibilidade para a camada ARR. O NLB opera em um nível diferente na pilha de rede e está habilitado nos mesmos servidores em que o ARR é implantado:

Digram showing connections between A R R 1 and 2 and content servers.

Cenário 1: roteamento baseado em HTTP e balanceamento de carga

O cenário de roteamento e balanceamento de carga baseado em HTTP, permite uma arquitetura de implantação de 3 camadas que envolve:

  • Camada 1 (Web): fornece duas finalidades de processamento de conteúdo estático e roteamento e balanceamento de carga das solicitações dinâmicas restantes para servidores de camada 2.
  • Camada 2 (Aplicativo): processa conteúdo dinâmico que depende da lógica de negócios.
  • Camada 3 (Dados): armazena dados.

O diagrama a seguir ilustra a implantação de três camadas:

Diagram showing the content flow between A R R and content servers in each tier.

Embora o exemplo acima mostre uma regra de roteamento que diferencia o conteúdo estático do conteúdo dinâmico, outro cenário comum é diferenciar solicitações de apresentação de solicitações de serviço Web.

Opção1: Ativo/Passivo

No modo Ativo/Passivo, normalmente há dois servidores de ARR nos quais um servidor processa as solicitações enquanto o outro servidor permanece como um servidor de failover. Conforme observado acima, embora essa configuração atinja alta disponibilidade removendo o único ponto de falha, ela não é uma solução de expansão, pois a capacidade agregada dos servidores de conteúdo é limitada pela capacidade máxima de um servidor de ARR.

Nessa configuração, como dois servidores de ARR são configurados da mesma maneira, uma configuração compartilhada é usada. Primeiro, instale o ARR em ambos os servidores e, em seguida, crie o cluster do NLB. O cluster do NLB está configurado para aceitar o tráfego em apenas um dos nós de cluster. Isso é obtido configurando as regras de porta do cluster com o modo de filtragem de host único. O nó que aceita o tráfego é determinado pela configuração de prioridade do host dos nós de cluster do NLB. Consulte a configuração do NLB para obter mais detalhes.

Com exceção do recurso de afinidade de nome de host no ARR, não há informações de estado de runtime que devem ser compartilhadas entre os dois servidores de ARR. Portanto, para esse cenário, nenhuma configuração especial é necessária em ARR ou NLB. Mesmo se você usar o recurso de afinidade de servidor no ARR, as informações de estado com afinidade, serão disponibilizadas para o servidor passivo por meio de um cookie no cabeçalho da solicitação.

Esse cenário tem suporte total no ARR Versão 1.

Configuração do ARR

Etapa 1: habilitar a configuração compartilhada em dois servidores de ARR.

  • Siga as etapas neste documento para configurar a configuração compartilhada no IIS.

Etapa 2: configurar a arquitetura de implantação de 3 camadas usando o ARR.

  • Siga as etapas neste documento para configurar o ARR na arquitetura de implantação de 3 camadas.

  • Em um nível alto, o documento acima descreve:

    • Como disponibilizar conteúdo estático no servidor de ARR.
    • Como escrever regras de reescrita de URL para conteúdo estático para que elas sejam atendidas diretamente do servidor de ARR.
    • Como escrever regras de reescrita de URL para conteúdo dinâmico para que sejam encaminhadas para os servidores de aplicativos.

Configuração do NLB

A configuração do NLB é dividida nas seguintes etapas:

  1. Instale o recurso do NLB em todos os servidores de ARR.
  2. Crie um cluster do NLB para o ARR.
  3. Configure o NLB para implantação ativa/passiva.

Instalar o recurso do NLB em todos os servidores de ARR

  1. Abra o Server Manager.
    Screenshot of the Server Manager window showing details in the main pane.
  2. Expanda os recursos.
  3. Clique em Adicionar Recursos.
  4. No Assistente para Adicionar Recursos, selecione Balanceamento de Carga de Rede.
    Screenshot of the Add Features Wizard window showing features in the main pane.
  5. SelecioneInstalar para confirmar a instalação do recurso do NLB.
    Screenshot of the Add Features Wizard window showing the Confirm Installation Selections in the main pane.
  6. Verifique se o recurso do NLB foi instalado com êxito.
    Screenshot of the Add Features Wizard window showing the Installation Results page in the main pane.
  7. Repita as etapas acima em todos os servidores de ARR.

Criar cluster do NLB para o ARR

  1. Verifique se o NLB está instalado em todas as instâncias de servidores de ARR.
  2. Acesse Iniciar > Todos os programas > Ferramentas Administrativas e abra o Gerenciador de Balanceamento de Carga de Rede.
    Screenshot of the Network Load Balancing Manager window with Network Load Balancing Clusters highlighted.
  3. Clique com o botão direito do mouse em Clusters de Balanceamento de Carga de Rede e selecione Novo Cluster.
    Screenshot of the New Cluster dialog.
  4. Na caixa de diálogo Novo Cluster, na caixa de texto Host, digite o endereço do servidor de um dos servidores de ARR. Se houver várias interfaces, digite o endereço do servidor no qual você deseja criar o cluster do NLB.
    Screenshot of the New Cluster dialog showing an I P address in the host input box.
  5. No modo ativo/passivo (modo de host único no NLB), a prioridade determina a ordem na qual o failover ocorre. Por padrão, o servidor com prioridade 1 é o nó ativo.
    Screenshot of the New Cluster Host Parameters dialog with default settings.
  6. O IP do cluster, um endereço IP virtual, é necessário. Selecione Adicionar. Esse é o endereço IP com o qual os clientes se comunicarão.
    Screenshot of the New Cluster Cluster I P Addresses dialog.
  7. Digite o endereço IP virtual e selecioneOK.
    Screenshot of the Add I P Address dialog
  8. Clique em Avançar.
    Screenshot of the Cluster I P Addresses dialog showing an I P address and subnet mask.
  9. Aceite os valores padrão. Para obter informações mais detalhadas, confira o Apêndice.
    Screenshot of the Cluster Parameters dialog showing default parameters.
  10. Selecione Concluir para concluir a criação do cluster do NLB.
    Screenshot of the Port Rules dialog
  11. Agora que o cluster do NLB foi criado, inclua membros adicionais ao cluster. Siga as etapas restantes em todos os servidores membros adicionais. No Gerenciador de Balanceamento de Carga de Rede, clique com o botão direito do mouse no cluster recém-selecionado e selecione Adicionar host ao cluster.
    Screenshot of the Add Host to Cluster dialog.
  12. Digite o endereço do servidor do membro a ser adicionado. Se houver várias interfaces, selecione a que deve ser usada pelo cluster do NLB.
    Screenshot of the Connect dialog. There is an I P address in the host input box.
  13. Observe que a atribuição de prioridade é mutuamente exclusiva e única entre os servidores membros no cluster. No modo ativo/passivo (modo de host único no NLB), a prioridade determina a ordem de failover.
    Screenshot of the Host Parameters dialog. Priority is set to 2.
  14. Selecione Concluir para adicionar o servidor membro ao cluster.
    Screenshot of the Port Rules dialog. The Finish button is selected.
  15. O Gerenciador de Balanceador de Carga de Rede deve ser semelhante ao seguinte:
    Screenshot of the Network Load Balancing Manager window.

Configurar o NLB para implantação ativa/passiva

  1. Para configurar o NLB para implantação ativa/passiva, no Gerenciador de Balanceamento de Carga de Rede, clique com o botão direito do mouse no cluster e selecione Propriedades do Cluster. Selecione o guia Regras de Porta. Selecione Editar.
    Screenshot of the Properties dialog with the Port Rules tab selected.
  2. Selecione Host único e selecione OK.
    Screenshot of the Add/Edit Port Rule dialog. Single host is selected in the Filtering mode section.

O NLB é configurado com êxito para funcionar no modo ativo/passivo com o ARR.

Opção2: Ativo/Ativo

No modo Ativo/Ativo, é possível ter dois ou mais servidores de ARR. Essa configuração obtém alta disponibilidade e escalabilidade, ao contrário do modo Ativo/Passivo, que alcança apenas alta disponibilidade.

Conforme observado anteriormente, como vários servidores de ARR são configurados da mesma maneira, uma configuração compartilhada é usada. A principal diferença é como o NLB é configurado. Para utilizar todos os servidores de ARR ao mesmo tempo, a regra de porta do cluster do NLB é configurada em vários modos de host.

Independentemente se recurso de afinidade estar habilitado no NLB ou não, nenhuma configuração especial é necessária nos servidores de ARR. Por exemplo, os servidores de ARR usam uma configuração compartilhada para que sejam configurados da mesma maneira. Em segundo lugar, como o ARR usa um cookie cliente para armazenar as informações de afinidade do servidor para seu próprio uso, essas informações estão disponíveis por solicitação e, portanto, estão disponíveis nos servidores de ARR. A recomendação para o NLB é definir a afinidade como nenhuma, pois resulta em uma distribuição de carga mais uniforme.

Esse cenário tem suporte total no ARR Versão 1.

Configuração do ARR

A configuração do ARR para Ativo/Ativo é idêntica à de Ativo/Passivo. A principal diferença é como o NLB é configurado.

Etapa 1: habilitar a configuração compartilhada em dois servidores de ARR.

  • Siga as etapas neste documento para configurar a configuração compartilhada no IIS.

Etapa 2: configurar a arquitetura de implantação de 3 camadas usando o ARR.

  • Siga as etapas neste documento para configurar o ARR na arquitetura de implantação de 3 camadas.

  • Em um nível alto, o documento acima descreve:

    • Como disponibilizar conteúdo estático no servidor de ARR.
    • Como escrever regras de reescrita de URL para conteúdo estático para que elas sejam atendidas diretamente do servidor de ARR.
    • Como escrever regras de reescrita de URL para conteúdo dinâmico para que sejam encaminhadas para os servidores de aplicativos.

Configuração do NLB

A configuração do NLB é dividida nas seguintes etapas:

  1. Instale o recurso do NLB em todos os servidores de ARR.
  2. Crie um cluster do NLB para o ARR.
  3. Configure o NLB para implantação ativa/ativa.

Instalar o recurso do NLB em todos os servidores de ARR: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Instalar o NLB).

Criar cluster do NLB para o ARR: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#criar nlb).

Configure o NLB para implantação ativa/ativa.

  1. Para configurar o NLB para implantação ativa/ativa, no Gerenciador de Balanceamento de Carga de Rede, clique com o botão direito do mouse no cluster e selecione Propriedades do Cluster. Selecione o guia Regras de Porta. Selecione Editar.
    Screenshot of the Properties dialog.
  2. Selecione Vários hosts. Para a configuração de Afinidade, selecione Nenhum. Conforme mencionado acima, a recomendação é não usar a afinidade no NLB, pois isso resultará em uma melhor distribuição de carga.
    Screenshot of the Add/Edit Port Rule dialog. Multiple host is selected in the Filtering mode section.

O NLB é configurado com êxito para funcionar no modo ativo/ativo com o ARR.

Cenário 2: hospedagem compartilhada usando a afinidade de nome de host

Esse cenário utiliza o recurso de afinidade de nome de host no ARR, para habilitar uma implantação de hospedagem compartilhada para:

  • Reduza o gerenciamento manual e a manutenção envolvidos com a implantação tradicional de hospedagem compartilhada.
  • Maximize os recursos de servidor existentes, garantindo que todos os recursos do servidor sejam utilizados uniformemente.
  • Dimensione facilmente o ambiente.
  • Crie oportunidades de negócios para vender capacidade adicional.

Para obter mais informações sobre hospedagem compartilhada e o ARR, consulte este documento.

O diagrama a seguir ilustra o ambiente de hospedagem compartilhado usando o ARR:

Diagram showing the flow of requests and responses.

Opção1: Ativo/Passivo

Conforme observado anteriormente, no modo Ativo/Passivo, normalmente há dois servidores de ARR nos quais um servidor processa as solicitações enquanto o outro servidor permanece como um servidor de failover. Embora essa configuração alcance alta disponibilidade removendo o único ponto de falha, ela não é uma solução de expansão, pois a capacidade agregada dos servidores de conteúdo é limitada pela capacidade máxima de um servidor de ARR.

Nessa configuração, como dois servidores de ARR são configurados da mesma maneira, uma configuração compartilhada é usada. O cluster do NLB está configurado para aceitar o tráfego apenas em um dos nós de cluster. Isso é feito configurando as regras de cluster com o modo de filtragem de host único. O nó que aceita o tráfego é determinado pela configuração de prioridade do host dos nós de cluster do NLB. Consulte a configuração do NLB para obter mais detalhes.

O recurso de afinidade de nome de host no ARR cria afinidade para as solicitações, para um servidor específico (ou um grupo de servidores no RC) com base no nome do host. As informações de estado de runtime do mapeamento com afinidade entre os nomes de host e os servidores de conteúdo, são armazenadas na memória dentro de uma instância de um servidor de ARR. Na versão do ARR Versão 1, o ARR aproveita o Cache Externo da Microsoft Versão 1 para o IIS, para compartilhar e manter esse estado de runtime entre vários servidores de ARR. Mais informações sobre esse cenário estão disponíveis neste documento.

Esse cenário tem suporte total no ARR Versão 1.

Configuração do ARR

Etapa 1: configurar o ARR para hospedagem compartilhada com afinidade de nome de host.

  • Siga as etapas neste documento para configurar o recurso de afinidade de nome de host no ARR, para hospedagem compartilhada.

Etapa 2: habilitar e configurar o Cache Externo.

  • Siga as etapas neste documento para habilitar e configurar o Cache Externo.

Configuração do NLB

A configuração do NLB é dividida nas seguintes etapas:

  1. Instale o recurso do NLB.
  2. Crie um cluster do NLB para o ARR.
  3. Configure o NLB para implantação ativa/passiva.

Instalar o recurso do NLB: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Instalar recursos do NLB).

Criar cluster do NLB para o ARR: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Criar cluster do NLB para o ARR).

Configurar o NLB para implantação ativa/passiva: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Configurar o NLB para implantação ativa/passiva).

Opção2: Ativo/Ativo no ARR

No modo Ativo/Ativo, é possível ter dois ou mais servidores de ARR. Essa configuração obtém alta disponibilidade e escalabilidade, ao contrário do modo Ativo/Passivo, que alcança apenas alta disponibilidade. Como vários servidores de ARR são configurados da mesma maneira, uma configuração compartilhada é usada. Para utilizar todos os servidores de ARR ao mesmo tempo, o NLB é configurado em vários modos de host. Conforme observado anteriormente, as informações de estado de runtime do mapeamento com afinidade entre os nomes de host e os servidores de conteúdo são armazenadas na memória em uma instância de um servidor de ARR. Para compartilhar essas informações entre vários servidores de ARR, o Cache Externo da Microsoft para IIS é usado. Para obter mais informações sobre o Cache Externo, consulte este documento.

Configuração do ARR

A configuração do ARR para Ativo/Ativo é idêntica à de Ativo/Passivo. A principal diferença é como o NLB é configurado.

Etapa 1: configurar o ARR para hospedagem compartilhada com afinidade de nome de host.

  • Siga as etapas neste documento para configurar o recurso de afinidade de nome de host no ARR, para hospedagem compartilhada.

Etapa 2: habilitar e configurar o Cache Externo.

  • Siga as etapas neste documento para habilitar e configurar o Cache Externo.

Configuração do NLB

A configuração do NLB é dividida nas seguintes etapas:

  1. Instale o recurso do NLB.
  2. Crie um cluster do NLB para o ARR.
  3. Configure o NLB para implantação ativa/ativa.

Instalar o recurso do NLB: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Instalar recursos do NLB).

Criar cluster do NLB para o ARR: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Criar cluster do NLB para o ARR).

Configurar o NLB para implantação ativa/ativa: documentado [aqui](achieving-high-availability-and-scalability-arr-and-nlb.md#Configurar o NLB para implantação ativa/ativa). A recomendação é não usar afinidade no NLB para este cenário de ARR.

Resumo

Neste white paper, dois cenários principais do ARR foram revisados para obter alta disponibilidade e escalabilidade implantando vários servidores de ARR e usando o NLB.

Apêndice

Apêndice A: todos os cabeçalhos HTTP disponíveis e variáveis de servidor para gravar regras de decisão de roteamento

ALL_HTTP ALL_RAW APPL_MD_PATH
APPL_PHYSICAL_PATH CERT_COOKIE CERT_FLAGS
CERT_ISSUER CERT_KEYSIZE CERT_SECRETKEYSIZE
CERT_SERIALNUMBER CERT_SERVER_ISSUER CERT_SERVER_SUBJECT
CERT_SUBJECT CONTENT_LENGTH CONTENT_TYPE
DOCUMENT_ROOT GATEWAY_INTERFACE HTTP_ACCEPT
HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION
HTTP_CONTENT_LENGTH HTTP_HOST HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH HTTP_REFERER HTTP_UA_CPU
HTTP_USER_AGENT HTTPS HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE HTTPS_SERVER_ISSUER HTTPS_SERVER_SUBJECT
INSTANCE_ID INSTANCE_META_PATH LOCAL_ADDR
PATH_INFO PATH_TRANSLATED QUERY_STRING
REMOTE_ADDR REMOTE_HOST REMOTE_PORT
REMOTE_USER REQUEST_FILENAME REQUEST_METHOD
REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME
SERVER_ADDR SERVER_NAME SERVER_PORT
SERVER_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE
URL

Apêndice B: documentação adicional do NLB