Virtualização e serviço de arquivos em cluster de alta disponibilidade com Debian Etch, com redundância, espelhamento, replicação, em ambientes de desenvolvimento (parte 2)

1. Virtualização em ambientes de desenvolvimento

1.1. Alguns problemas atuais

Em 2007, num ambiente de micro-informática para desenvolvimento, os procedimentos para configuração, gerenciamento, reprodutibilidade, consistência, segurança e estabilidade das estações de trabalho é potencialmente complexa, lenta, dispendiosa, arriscada e imprevisível no limite dos detalhes.

Por deficiências técnicas e econômicas das soluções atualmente usadas, as instalações, configurações, processamento e armazenamento são usualmente locais às estações de trabalho.
Pela diversidade de configurações de hardware e software em uso, as inconsistências, instabilidades e inseguranças são quase inevitáveis.
Ainda, há implicações na disponibilidade de serviços e integridade de dados, por esse modelo, que até dificulta a tarefa de backup. 
A experimentação de alternativas, a integração dos sistemas, os testes finais, a homologação e a transição para implantação em produção são lentas, complexas, dispendiosas, arriscadas e imprevisíveis.
Outros problemas concomitantes serão abordados nas próximas seções sobre cluster.

1.2. Alternativas de implementação testadas

Em 2007, as alternativas de implementação testadas foram Xen [7], VmPlayer [8], VmWare Server [9], Virtual Box [10]. Em 2008, um sério concorrente deverá estar estável o suficiente para uma avaliação pois evolui mais rapidamente e possui melhor integração ao Linux: Kernel Virtual Machine, KVM [11].
Xen, Virtual Box, KVM possuem licenças abertas e gratuitas. VmWare possui algumas versões gratuitas.
Alguns são bem convenientes em ambientes desktop, enquanto outros se destacam em servidores. 
Alguns exigem virtualização assistida por hardware através do microprocessador, outros a utilizam se estiver disponível e configurados adequadamente, com diversas classes de desempenho.

1.2.1. Xen

Xen, com licença de código livre, apresentou melhor desempenho em uso real em servidores e desktops.
Utilizando paravirtualização ou, se disponível a virtualização assistida por hardware, a virtualização completa, apresenta ainda incipientes, mas já funcionais e em franca evolução, facilidades de configuração e gerenciamento, de código livre, em desktop gráfico. Existem ferramentas proprietárias comerciais de gerenciamento gráfico. Em servidores, o total gerenciamento por linha de comando e scripts é até mais conveniente e poderoso, com maior viabilidade de integração a outras ferramentas, como de backup.
Entre as ferramentas de configuração avaliadas, Xen-Tools [12], XenMan (ConVirt) [13], Virt-Manager [14], o Xen-tools está mais evoluído e pode operar em conjunto com XenMan.
Em hardware sem virtualização assistida, não é possível instalar sistemas operacionais não modificados. Na paravirtualização, o kernel em execução nas máquinas virtuais é um modificado instalado no hospedeiro. 
Nesses hardwares, a instalação de máquina virtual Windows não é possível.
Durante os oito meses de utilização, não foram percebidas instabilidades ou queda de desempenho visíveis comparadas a máquinas físicas e nativas.

1.2.2. VmWare

Os produtos comerciais VmWare, com algumas versões em licença gratuita, são maduros e suportam virtualização completa em software.
Infelizmente, tal abordagem penaliza visivelmente o desempenho real das aplicações e deve ser escolhida quando não houver alternativa.
Por mais tempo no mercado, a maturidade e conveniência das ferramentas gráficas de configuração e gerenciamento são maiores.
Para uso em desktop gráfico, é adequado. Porém, para uso em servidores, é bastante inconveniente, pois a empresa enseja muitos esforços para esconder os recursos de linha de comando e planeja desabilitá-los, forçando cada vez mais o uso de ambiente gráfico.
Utilizamos VmPlayer e VmWare Server, atualmente gratuitos, nas implementações.
Ambos demonstraram bastante estabilidade nas cargas e serviços utilizados durante os dez meses de utilização.
Um obscuro problema e de convoluta solução é o gerenciamento de sincronização de relógio e data nas máquinas virtuais, que se não cuidadosamente resolvido, causa estranhos problemas nos servidores de arquivos, bancos de dados, e de controle de versões de software quando em operação por longos períodos (sem reboot diário). O clock das máquinas virtuais ficaria flutuando, e com grandes atrasos ou adiantamentos, fortemente afetado pela carga de processamento do hospedeiro e com efeitos colaterais danosos aos serviços nestas máquinas virtuais.
A melhor solução é sincronizar o hospedeiro com um servidor de hora através de ntp, e configurar o VmWare para utilizar o relógio do hospedeiro como referência 
a todos os RTC das máquinas virtuais, através de um procedimento documentado para compensação de flutuações pelo VmWare. As máquinas virtuais não podem sincronizar com referências externas de nenhum tipo. 
Ainda assim, os RTC das máquinas virtuais ficarão flutuando em uma variação de +- 1 segundo da referência de relógio da máquina hospedeira. [15], [16], [17], [18], [19], [20], [21], [22].
Se buscar uma variação máxima menor , a penalização de carga no hospedeiro, e conseqüentemente a todas máquinas virtuais, ficará excessiva e pode chegar a inviabilizar serviços. Bancos de dados de razoável volume de transações demonstraram ser os mais sensíveis a flutuações do relógio.
Isso precisa ser levado em conta durante o desenvolvimento das aplicações no departamento, provavelmente na fase de simulação de cargas transacionais pesadas.

1.2.3. Virtual Box

Virtual Box é um software de virtualização completa que possui desde fevereiro de 2007 versões com licença GPL e para Debian.
No mercado desde 1992 como produto proprietário para OS/2, já é considerado estável.
Há instruções de como traduzir a interface para português, pois o código é livre.
Também é fortemente apoiado em interface gráfica, como o VmPlayer e VmWare, sendo conveniente para uso em desktops. Ainda não testamos em servidores, apesar de possuir a capacidade de ser completamente gerenciado por linha de comando.
Da mesma forma, penaliza visivelmente o desempenho dos serviços em máquinas virtuais, quando usado sem virtualização assistida por hardware.
Desde que teve o código aberto em fevereiro de 2007, notamos que há um crescente interesse e contribuições ao código feitas pela comunidade. Recentemente iniciaram contribuições ao código fonte para futuro suporte a OpenGL e Direct3D. 
Pela boa aceleração no desenvolvimento, tempo no mercado e código livre, é um projeto que merece ser acompanhado.
Foi a solução com menor extensão de testes, ainda planejados.

1.3. Conveniência X Controle

As soluções mais fáceis de configurar, usando padrões, no uso real em desktop foram, pela ordem, VmPlayer, Virtual Box, VmServer, Xen.
Em servidores, o poder de controle fino e configuração remota pesou fortemente e causou a seguinte ordem: Xen, VmServer.
VmPlayer é um produto focado em desktop gráfico. Virtual Box ainda não foi avaliado em servidores pelo autor.
Mesmo em desktop, se a necessidade de controle for maior que a facilidade de configuração, então a ordem é Xen, VmPlayer, Virtual Box, VmServer.
Como as ferramentas gráficas de configuração e gerenciamento para Xen continuam evoluindo rápida e independentemente, pois não são parte do software de virtualização subjacente, o cenário irá mudar em 6 meses e terá de ser reavaliado.
Também terá de ser reavaliado o VirtualBox, pois a aceleração do desenvolvimento após a abertura do código já estável em fevereiro de 2007 é significativa e pode suplantar o VmWare no desktop. Nova versão lançada em 05 junho 2007.
Em servidores departamentais, o VirtualBox pode já representar séria alternativa ao VmServer, onde não são necessárias as proprietárias ferramentas de gerenciamento de centros de dados.
A separação entre os programas de virtualização e os de configuração é bastante conveniente para o gestor de infraestrutura, pois pode escolher as ferramentas de configuração e gerenciamento mais indicadas para cada cenário e momento. Até mesmo, mudar a opção ao longo do tempo, se viável.
A configuração de rede virtual no Xen é mais complexa se dispensar os padrões pré-configurados, porém muito mais personalizável até para controle de segurança. Nesse aspecto, as ferramentas de configuração gráficas ou não, como Xen Tools, são de auxílio.
O fato de ter código aberto permite auditoria para verificação de segurança e estabilidade, bem como maior viabilidade de uso em núcleos personalizados.

1.4. Desempenho comparativo e guia de escolha

Não mensuramos quantitativamente pois as diferenças qualitativas ficaram óbvias já com avaliação visual e programas analisadores simples como o top.
A penalização de desempenho pela virtualização completa dos VmPlayer, VmServer, Virtual Box fica em torno de 30% nos hardwares utilizados. Provavelmente com ainda mais memória e discos ainda mais rápidos, seja menor.
Porém no mesmo hardware, Xen possui desempenho próximo do nativo e menor uso de recursos.
Assim, a escolha final depende de outros fatores, já que este é claramente favorável ao Xen.
Para uso em desktops, sem virtualização assistida por hardware, usuários iniciantes ou não tão avançados que irão fazer algumas configurações, e ou hospedeiro Windows, a ordem seria VmPlayer seguida por Virtual Box e Xen (este se hospedeiro for GNU / Linux).
Para desktops Linux com usuários avançados, necessidade de configurações e controle finos e desempenho, Xen seguido de VmPlayer e Virtual Box.
Para servidores, com máquinas virtuais Linux, a ordem seria Xen, VmServer.
Para máquinas virtuais Windows, e hospedeiro Linux sem assistência por hardware, teria de ser VmWare ou Virtual Box. Se houver assistência por hardware, use Xen.
Hospedeiros Windows são muito ineficientes em quaisquer alternativas, desperdiçando recursos, sendo escolha apenas quando sem opções.
O autor ainda não avaliou VirtualBox em servidores.