Olá, pessoal. Na coluna desta semana comentarei sobre um assunto que nem sempre é dado à devida atenção: as melhores práticas para a virtualização de servidores de banco de dados SQL Server dedicados.
Antes de começar a falar sobre este assunto, é bom deixar claro que a virtualização é uma tecnologia relativamente antiga porém, no decorrer dos últimos anos, vem ganhando um fôlego novo devido às diversas inovações recentes nesta área. Por causa disso é raro encontrar material específico para banco de dados, especialmente em português, que fale sobre virtualização. Explicado isso, vou apresentar as melhores práticas para a virtualização de servidores SQL Server no contexto corporativo, ou seja, sempre estarei focando a substituição de um ou mais servidores por máquinas virtuais para suportar um volume considerável de dados e transações.
Nesta primeira parte, apresentarei e comentarei alguns pontos gerais que devem ser considerados na utilização de virtualização de servidores na plataforma Windows. Na segunda parte, apresentarei pontos específicos a serem observados quando se trata de virtualização de servidores de banco de dado com o SQL Server.
Para aqueles que não estão familiarizados com a tecnologia de virtualização, sugiro uma rápida leitura nas páginas brasileira e americana da Wikipédia sobre este assunto: http://pt.wikipedia.org/wiki/Virtualiza%C3%A7%C3%A3o e http://en.wikipedia.org/wiki/Full_virtualization
Além disso, recomendo como referência inicial o ótimo artigo sobre virtualização chamado Virtualização: da teoria a soluções, produzido por Alexandre Carissimi do Instituto de Informática da Universidade Federal do Rio Grande do Sul (UFRGS), disponível em pdf neste link: http://www.gta.ufrj.br/ensino/CPE758/artigos-basicos/cap4-v2.pdf
Atualmente existem diversas soluções para a virtualização de servidores. Neste artigo vou me concentrar na solução oferecida pela VMware, pois já tive alguma experiência com este produto e obtive excelentes resultados. Durante o texto, farei sempre referência à solução mais completa deste fabricante, o VMware ESX Server 3.x, pois é a versão que possui mais recursos. Para se ter uma idéia do benefício que a virtualização com o ESX Server proporciona, a média de servidores que podem ser virtualização é de 10 para 1, de acordo com a documentação da própria VMware. Isso quer dizer que é possível substituir 10 servidores físicos por apenas um servidor rodando 10 máquinas virtuais.
Antes de começar a montar o projeto de virtualização de servidores SQL Server é preciso compreender o cenário atual que existe na empresa. Um ponto relevante para o projeto do novo ambiente virtualizado é estabelecer um baseline para o ambiente atual baseado em servidor físico. Isto pode ser feito utilizando o VMware Capacity Planner em um período mensal, por exemplo. Esta ferramenta deve ser instalada no servidor para que ela capture a utilização de recursos de hardware e software sem nenhum ônus perceptível ao desempenho do servidor e do banco de dados. Isto possibilitará entender o real consumo de hardware para o SQL além de elencar e priorizar a lista das instâncias a serem virtualizadas. A elaboração do baseline também tem o objetivo de fornecer um meio de comparar o ambiente antes e depois da virtualização, identificando rapidamente se houve ganho ou perda de performance com o novo ambiente.
Este ponto inicial é muito importante. Infelizmente muitas empresas já implementam direto a virtualização sem ao menos medir como anda o sistema atual. Esta medição não precisa ser extensa e nem atrapalhar a operação atual, porém ela deve ser feita. O VMware Capacity Planner é uma das ferramentas para montar a medição, porém existem outras. Para o SQL Server, em particular, eu recomendo a observação do consumo médio de memória, CPU, espaço em disco, transações por segundo, variação do tamanho do Transaction Log e do banco de dados e outros. Existe uma ferramenta que pode auxiliar a medição de fatores de IO proporcionada pela Microsoft e chamada de SQLIO. É possível fazer o download gratuito desta ferramenta no link http://www.microsoft.com/downloads/details.aspx?familyid=9a8b005b-84e4-4f24-8d65-cb53442d9e19&displaylang=en
Uma vez com o baseline estabelecido é possível começar a pensar nos recursos necessários para a virtualização. A própria ferramenta VMware Capacity Planner já sugere uma recomendação de hardware e configurações da máquina virtual para que ela suporte a carga observada. Além disso, é preciso redimensionar os recursos de hardware de acordo com questões físicas (espaço no hack, limitações de energia, redundância, etc) e também questões relacionadas ao orçamento. Porém já aviso que, por experiência própria, uma virtualização requer um hardware acima da média, inclusive com recursos como storage externo com canal de fibra ótica. Em geral, os principais fabricantes de servidores já fornecem linhas de produtos prontas para virtualização. Nestas linhas de produtos todo o hardware é recomendado apenas para a virtualização e vale a pena estudar bem os detalhes técnicos de cada um dos fabricantes antes de se tomar a decisão final.
Para auxiliar quem está começando a montar um projeto de virtualização apresento dez pontos que devem ser considerados e bem analisados durante a fase de planejamento:
1. Fornecimento de energia
Como fica a questão da queda de energia? Como temos servidores virtuais é possível que uma queda de energia possa afetar os arquivos das máquinas virtuais tornando-as indisponíveis (corrompidos pela queda de força). Para isso é preciso elaborar uma solução que evite este problema, como a utilização de fontes de energia redundantes.
2. Questões de licenciamento
Independente do fato de se utilizar um servidor virtual ou não, os softwares proprietários devem conter as devidas licenças. Obviamente que este é um fator que deve levar em consideração as edições e versões do sistema operacional, do SQL Server e dos demais softwares. Infelizmente não existe uma política clara dos fabricantes em relação à tipos específicos de licença para virtualização, ou seja, é preciso adquirir as licenças da maneira tradicional.
3. Tecnologias de processador específicas para virtualização
Atualmente os fabricantes de processadores possuem recursos específicos para o tratamento de máquinas virtuais, como a tecnologia da Intel para suporte à virtualização chamada Vanderpool, encontrada no Pentium 4 modelos 672 e 662. É preciso levar em consideração estes fatores na escolha do hardware. Para mais informações sobre este aspecto recomendo a leitura do artigo apontado no link abaixo: http://www.clubedohardware.com.br/artigos/1144/1
4. Configurações de ambiente
A utilização e configuração de máquinas virtuais podem ser feitas da mesma maneira que um servidor físico ou não. Isso quer dizer que deve-se considerar se o servidor virtual terá opções específicas, como uma rede virtual, um conjunto específico de endereços IP, a utilização de uma VPN exclusiva para acesso ou um domínio do Windows diferente dos demais servidores. Estas configurações permitem que se obtenha uma separação dos servidores do ponto de vista administrativo e também pode facilitar a administração e utilização dos servidores virtuais.
5. Instalação de softwares no servidor virtual
Quando estamos lidando com servidores virtuais devemos avaliar a instalação de softwares no servidor. É preciso configurar um driver de vídeo com uma resolução especial? E o anti-vírus? O servidor terá acesso a drivers externos, como USB ou o drive de CD? Como fica a questão do acesso remoto, será feito por Terminal Services, VNC ou outro serviço similar? E as atualizações do sistema operacional, serão feitas de forma idêntica ao servidores reais? Todas as questões acima devem ser consideradas antes da implementação do servidor virtual, pois elas podem ser diferentes dos servidores físicos quando se trabalha com virtualização.
6. Backup
A tecnologia de virtualização se baseia na utilização de arquivos grandes com toda a imagem da máquina virtual. Além disso, é possível criar manualmente ou de forma automática save states, ou seja, arquivos que contêm todo o estado do servidor em um determinado momento. Caso haja problemas, pode-se restaurar o estado do servidor a partir do arquivo que contém o save state.
Devido à necessidade de manipular arquivos grandes com a imagem do servidor virtual e os save states é preciso pensar em uma estratégia de backup que leve em consideração estes arquivos. Será feito um backup semanal da imagem? E a geração de save states, será feita uma vez por dia? Onde os arquivos de imagem e save states serão armazenados? É possível restaurar os arquivos de imagem e save state em outro servidor, caso o host apresente um problema crítico? O administrador deve levar em consideração a utilização do servidor, os recursos disponíveis para o backup e também a periodicidade quanto estiver montando a estratégia de backup.
7. Tecnologias específicas para a virtualização.
Com a utilização de servidores virtuais podemos contar com diversas tecnologias específicas que nos auxiliam no dia a dia. Além da facilidade de montar, clonar, modificar, excluir e manipular servidores rapidamente e da maneira que desejarmos, podemos fazer uso de recursos específicos.
Um destes recursos é a criação de clusters. O VMware, em particular, permite a criação de discos virtuais compartilhados, o que elimina o requisito de um storage específico. Com isso pode-se montar um cluster do Windows e do SQL Server sem precisar de recursos de hardware adicionais, o que facilita o treinamento e a elaboração de ambientes de testes, além de agilizar a configuração do ambiente.
Outro recurso muito interessante do VMware é o VMotion, ou seja, a transferência em tempo real de uma máquina virtual de um servidor para outro com tempo de parada igual a zero e de forma programada ou dinâmica. Este recurso fornece melhora de performance se hardware do novo host for melhor, porém exige que o VMware em si seja montado em um cluster.
Existem diversos outros recursos interessantes do VMware e de outros fabricantes de software para virtualização. Porém cabe à equipe que está trabalhando no projeto de virtualização analisar quais destes recursos faz sentido para o negócio, pois muitos deles são voltados para aplicações desktop e não para servidores. Como exemplo, posso citar as ótimas facilidades do VMware Fusion para Mac OS X. Contudo, a maioria das funcionalidades do VMware Fusion não faz muito sentido para um servidor e sim para o desktop.
8. Uso de appliances
A própria VMware mantém um site específico para a distribuição de appliances, que são imagens de sistemas operacionais prontas para download e que podem ser colocadas em um host com o VMware instalado. Estas imagens permitem que o teste de software e hardware com diversos tipos de sistemas operacionais diferentes, o que pode beneficiar a empresa que está avaliando, prototipando ou testando diferentes soluções. O local para o compartilhamento de appliances chama-se VMware Virtual Appliance Market e é encontrado neste link: http://www.vmware.com/appliances/
9. Alocação de recursos virtuais
Quando se monta uma máquina virtual é preciso especificar uma grande quantidade de configurações. Por exemplo, é preciso indicar:
- Se o servidor será de 32 ou 64 bits;
- O sistema operacional utilizado;
- A quantidade de memória;
- Quantos núcleos de CPU serão utilizados;
- Se os discos serão de tamanho fixo ou dinâmico;
- Se a controladora de discos será SCSI, iSCSI ou IDE (ou qualquer outro tipo);
- Como será a tratada o scale-out (crescimento de recursos no mesmo servidor) e o scale-up (acréscimo de servidores) para atender uma demanda crescente de recursos;
-
A alocação de determinadas redes virtuais para certos adaptadores de rede;
Esta alocação de recursos é crucial para a utilização correta da máquina virtual e também para a performance do sistema como um todo Como dito anteriormente, o Capacity Planner do VMware pode ajudar na escolha destas configurações, porém infelizmente é difícil acertar de primeira os valores ideais para cada ambiente. Sendo assim, o ideal é sempre monitorar o estado da máquina virtual e adaptar estas configurações conforme o servidor é utilizado.
10. Limitações da máquina virtual
Toda solução de virtualização tem suas limitações. Saber até onde é possível ir com uma máquina virtual é crucial durante a fase de planejamento para que se possa saber quais são os limites da solução. Em particular, saber quando e como adotar o scale-out ou o scale-up em ambientes virtuais é extremamente importante para o sucesso de projetos de virtualização. Por exemplo, o VMware ESX 3.x suporta máquinas virtuais com até 4 processadores, no máximo. Outra limitação é a quantidade de memória: até 64 GB são suportados por máquina virtual no VMware ESX 3.x. Conhecer estas limitações permite à equipe de administração e infra-estrutura ficar preparada para possíveis modificações com o objetivo de atender demandas específicas na carga do sistema ou aplicação.
Com isso terminamos a primeira parte deste artigo que foca no uso de servidores virtuais para bancos de dados SQL Server. Esta primeira parte foi uma introdução aos fatores a serem considerados em projetos de virtualização que utilizem a solução proporcionada pela empresa VMware. Na próxima parte veremos as melhores práticas específicas para servidores de bancos de dados SQL Server com o VMware.