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:
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.