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. 

Na 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. 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. Para fazer download do mesmo, basta utilizar o seguinte endereço:

https://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE.

O pacote acima contém os seguintes componentes:

§ Application Request Routing v.2.0

§ URLRewrite v.2.0 RC2

§ Microsoft Web Farm Framework v.1.0 for IIS7

§ Microsoft External Cache v.1.0 for IIS7

Após instalar o ARR e demais pacotes, atualizamos o URLRewrite para a versão final (RTW), disponível no seguinte endereço:

https://go.microsoft.com/?linkid=9722532

Para instalar o URLRewrite v.2.0 RTW, também foi necessário parar o serviço WAS, com o seguinte comando:

net stop WAS

Este comando também para o serviço W3SVC (World Wide Web Publishing Service). Após completar a instalação, para reiniciar o WAS e o W3SVC, executamos o seguinte comando:

net start W3SVC

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.