Usando o Application Request Routing para migrar sites para o IIS7 - parte 1

Vários de nossos clientes encontram dificuldades para migrar os seus servidores e aplicações do IIS5 ou IIS6 para novos servidores baseados no IIS7.x (ou do PHP rodando no Linux/Unix para o IIS7). O grande problema é a dificuldade de homologar divervas aplicações e colocá-las todas em produção em poucos dias.

imageNa prática, para implementar tal solução é necessário ter um mecanismo que permita a homologação e migração gradual das aplicações para um novo ambiente de forma transparente para os seus usuários.

Muitos desses clientes já possuem um equipamento capaz de realizar o balanceamento de carga na camada 3 (camada de rede), mas para atingir esse objetivo é necessário implementar um balanceamento na camada de aplicação (protocolo HTTP, camada 7) que seja capaz de interpretar os requests e redirecionar o tráfego para os servidores apropriados.

Para atender felizmente contamos com um novo componente OOB do IIS7, o Application Request Routing (ARR) que é capaz cumprir esta tarefa. Lembrando que vamos usar o termo ARR mas na realidade estamos falando de um servidor Web IIS especializado (que não irá servir páginas diretamente, e sim fazer um “proxy-reverso” para outros servidores Web. Os servidores Web que hospedam o conteúdo podem ser de quaisquer versões ou plataformas (você pode ter até um Apache rodando em Linux e usar o ARR para fazer esse roteamento das aplicações). Vou descrever como montar esta solução nos meus próximos posts, e vamos começar pelo básico: a instalação do IIS e do ARR:

Instalação do IIS

Vamos começar com um laboratório onde instalamos dois servidores Windows 2008 R2 x64 em ambiente virtual (Hyper-V), para posterior configuração do Application Request Routing, chamados aqui de de ARR-1 e ARR-2. Note que recomendo que em um ambiente de produção real, sejam utilizados servidores físicos para esta função (afinal, quando é que você iria virtualizar os seus balanceadores de carga de hardware que possui hoje?)

Os servidores IIS devem possuir os requisitos mínimos necessários. A instalação do IIS restringi-se somente aos componentes descritos conforme a listagem a seguir:

· IIS-CommonHttpFeatures

· IIS-StaticContent

· IIS-DefaultDocument

· IIS-HttpErrors

· IIS-HttpRedirect

· IIS-HealthAndDiagnostics

· IIS-HttpLogging

· IIS-LoggingLibraries

· IIS-RequestMonitor

· IIS-HttpTracing

· IIS-Security

· IIS-RequestFiltering

· IIS-IPSecurity

· IIS-Performance

· IIS-HttpCompressionStatic

· IIS-HttpCompressionDynamic

 

Para fazer a instalação do IIS 7.5 via prompt de comando, utilizamos o seguinte comando:

start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-HttpErrors;IIS-HttpRedirect;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-Security;IIS-IPSecurity;IIS-RequestFiltering;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementScriptingTools;WAS-WindowsActivationService;WAS-ProcessModel;IIS-NetFxExtensibility;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-ManagementService

 

Para confirmar via prompt de comando se a instalação ocorreu conforme o esperado utilizamos o seguinte comando:

Servermanagercmd.exe /query

Além disso, foi necessário instalar o Feature “Desktop Experience”, requirido posteriormente para a configuração do recurso de Offline Files (depois explico por que isso é necessário). Para instalar este componente via prompt de comando, utilizamos o seguinte:

start /w pkgmgr.exe /iu:Desktop-Experience

Instalação do Application Request Routing (ARR).

O Application Request Routing (ARR) é um component OOB (Out-of-Box) que deve ser baixado do site da Microsoft ou do IIS.NET. Para fazer download do mesmo, basta utilizar o seguinte endereço:

https://www.iis.net/downloads/category/handle-requests 

No próximo post, vou continuar descrevendo como montarmos a estrutura necessária para migrar aplicações de um ambiente IIS5/6 para o IIS7 de forma transparente para o usuário final.

Vejo vocês logo!

Paulo.

 

UPDATE (09/02/2013): Links para download do ARR foram atualizados, algumas referências às versões RC dos pacotes citados anteriormente foram removidos.