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:
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:
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:
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:
- Instale o recurso do NLB em todos os servidores de ARR.
- Crie um cluster do NLB para o ARR.
- Configure o NLB para implantação ativa/passiva.
Instalar o recurso do NLB em todos os servidores de ARR
- Abra o Server Manager.
- Expanda os recursos.
- Clique em Adicionar Recursos.
- No Assistente para Adicionar Recursos, selecione Balanceamento de Carga de Rede.
- SelecioneInstalar para confirmar a instalação do recurso do NLB.
- Verifique se o recurso do NLB foi instalado com êxito.
- Repita as etapas acima em todos os servidores de ARR.
Criar cluster do NLB para o ARR
- Verifique se o NLB está instalado em todas as instâncias de servidores de ARR.
- Acesse Iniciar > Todos os programas > Ferramentas Administrativas e abra o Gerenciador de Balanceamento de Carga de Rede.
- Clique com o botão direito do mouse em Clusters de Balanceamento de Carga de Rede e selecione Novo Cluster.
- 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.
- 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.
- 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.
- Digite o endereço IP virtual e selecioneOK.
- Clique em Avançar.
- Aceite os valores padrão. Para obter informações mais detalhadas, confira o Apêndice.
- Selecione Concluir para concluir a criação do cluster do NLB.
- 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.
- 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.
- 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.
- Selecione Concluir para adicionar o servidor membro ao cluster.
- O Gerenciador de Balanceador de Carga de Rede deve ser semelhante ao seguinte:
Configurar o NLB para implantação ativa/passiva
- 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.
- Selecione Host único e selecione OK.
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:
- Instale o recurso do NLB em todos os servidores de ARR.
- Crie um cluster do NLB para o ARR.
- 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.
- 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.
- 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.
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:
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:
- Instale o recurso do NLB.
- Crie um cluster do NLB para o ARR.
- 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:
- Instale o recurso do NLB.
- Crie um cluster do NLB para o ARR.
- 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
Instruções de NLB do Server Core:
- Instalar o recurso do NLB:
https://download.microsoft.com/download/6/3/5/6350896f-1e08-440b-9f24-d50f5e9b2390/ServerCoredeepdive.ppt
- Instalar o recurso do NLB:
NLB e SSL:
Outros links do NLB:
- https://technet.microsoft.com/library/cc782694.aspx
- https://technet.microsoft.com/library/cc778263.aspx
https://support.microsoft.com/kb/323437
https://support.microsoft.com/kb/890159
- https://blogs.msdn.com/clustering