Meu empregador, Vertigo Software, gentilmente hospedou este blog no último ano. Mas, à medida que o tráfego do blog cresceu, ele exerceu uma pressão notável e crescente sobre nossa largura de banda. Mesmo em um dia normal, o tráfego do blog consome sólidos 30% de nossa conexão com a Internet – e muito mais se o algo for popular. E isso é depois de considerando todos os truques de redução de largura de banda que pude imaginar.
Embora eu aprecie muito a generosidade do meu empregador, não gosto de fazer com que as conexões de Internet de todos os meus colegas de trabalho fiquem lentas. Portanto, quando meu amigo e coautor Phil Haack mencionou que poderíamos compartilhar um servidor dedicado por meio de um contato dele, e eu aproveitei a oportunidade.
Eu sou um que acredita muito na virtualizaçãoPor isso, eu queria um servidor físico robusto que pudesse suportar a execução de pelo menos quatro servidores virtuais. E eu queria que ele executasse um sistema operacional host de 64 bits, como o 64 bits oferece grandes benefícios de desempenho para servidores. Ninguém em sã consciência deveria construir um servidor de 32 bits hoje.
O contato a que ele se referia trabalha na CrystalTech. E, caramba, a CrystalTech jamais nos ligue:
- Windows Server 2003 R2 x64
- Quad-core Xeon X3210 @ 2,13 Ghz
- 4 GB DE RAM
- Matriz RAID-5 de 300 GB
Nada mal. É, obviamente, uma quantidade obscena de energia para nossas necessidades relativamente modestas. Já mencionei o quanto gosto de meus novos amigos da CrystalTech? Ou o quanto o as ótimas ofertas que eles têm em hospedagem?
Mas, falando sério, trata-se efetivamente de um novo patrocinador para este blog, portanto, seja bem-vindo.
Eu já estava hospedando esse servidor como uma VM, portanto, eis o que fiz para mudar para um hardware completamente novo:
- desliguei minha VM
- compactado e compactado
- transferi-o para o novo servidor
- inicializou novamente
Tudo o que tive de fazer foi alterar o endereço IP na VM e estava funcionando como se nada tivesse mudado. Essa é a migração de servidor mais fácil que já experimentei, tudo graças à virtualização.
Phil e eu somos desenvolvedores do ecossistema Windows, por isso seguimos o que sabíamos. Mas a virtualização oferece total flexibilidade. Eu poderia criar um novo servidor Linux a qualquer momento se decidisse mudar este blog para a pilha LAMP. Ou poderia brincar com o último release candidate do Windows Server 2008. E todos eles podem ser executados em paralelo, desde que tenhamos memória suficiente. Isso é o que mais gosto na virtualização: a liberdade.
Embora Phil e eu compartilhemos o acesso de administrador à máquina host, temos nossos próprios playgrounds particulares em nossos servidores virtuais. Estamos completamente isolados das peculiaridades e esquisitices um do outro: nada do que fazemos (bem, quase nada) pode afetar a máquina virtual da outra pessoa. Reinicialização? Sem problemas. Instalar algum software estúpido que não suporto? Pode ser. Formatar a unidade e começar de novo? Não me importo. A máquina é sua. Faça o que quiser.
A única desvantagem da hospedagem de servidores de máquinas virtuais é que pode ser difícil compartilhar IPs entre máquinas virtuais. A CrystalTech nos forneceu um bloco de 6 endereços IP públicos, portanto, felizmente, não precisamos nos preocupar com isso. Um IP é ocupado pelo host, mas isso ainda deixa cinco IPs para máquinas virtuais de nossa criação. Isso é o suficiente.
Mas digamos que tenhamos apenas dois endereços IP públicos ou que queiramos executar muitas máquinas virtuais com um pequeno conjunto de endereços IP públicos. O que aconteceria então? Como o senhor poderia codinghorror.com e haacked.com compartilham o mesmo endereço IP (e a porta 80), quando estão em duas máquinas virtuais diferentes? É evidente que eles não podem ocupar o mesmo IP.
codinghorror.com 10.0.0.1:80 haacked.com 10.0.0.1:80
Em um único servidor físico, a resposta é fácil… hospedagem virtualou roteamento de cabeçalho de host. Mas isso exige que nossos sites estejam lado a lado no mesmo servidor. Phil e eu não compartilhamos nossas esposas, então por que compartilharíamos um servidor? Sem querer ofender nenhuma de nossas esposas – ou nossos respectivos servidores -, mas compartilhar é uma solução inaceitável. Gosto do senhor, Phil… mas não isso muito.
Se o senhor quiser que duas máquinas diferentes (físicas ou virtuais) compartilhem um IP, é preciso fazer alguns truques inteligentes. No ecossistema Windows, esse truque inteligente geralmente vem na forma do Servidor ISA da Microsoft. (Não tenho certeza de qual é o equivalente de código aberto, mas tenho certeza de que ele está lá fora).
O ISA Server atua como nossa interface pública para o mundo, falando por meio de um endereço IP público. Todas as entradas de DNS e, portanto, o tráfego HTTP, seriam direcionados para esse único endereço IP público. Como nosso gatekeeper, o ISA Server está em uma posição única para fazer muitas coisas legais para nós, como firewall, cache e assim por diante. Mas, no momento, só nos interessa um recurso específico: a capacidade de compartilhar um endereço IP entre várias máquinas. Isso é conhecido como “regra da Web” na linguagem do ISA. Com as regras da Web apropriadas em vigor para ambos os nossos sites, o ISA Server transferirá as solicitações HTTP para os endereços IP privados corretos com base nos cabeçalhos de host. Basicamente, ele estende os conceitos de roteamento de cabeçalho de host que vimos no Apache e no IIS para fora dos limites de uma máquina específica.
ISA Server 10.0.0.1:80 codinghorror.com 192.168.0.1:80 haacked.com 192.168.0.2:80
Essa é uma maneira de o senhor hospedar 50 sites, todos executados em 50 máquinas diferentes, com um único endereço IP público. É, de fato, um truque muito inteligente. Infelizmente, o ISA Server não é o produto mais simples de configurar e administrar. Ainda bem que temos IPs públicos suficientes para não precisarmos nos preocupar em compartilhá-los entre várias máquinas. Mas, sem dúvida, é algo de que o senhor deve estar ciente, pois os servidores virtuais estão se tornando cada vez mais comuns… e o conjunto de endereços IP disponíveis continua a diminuir.