No post anterior, vimos que a virtualização de servidores se tornou uma necessidade para empresas que mantinham uma quantidade expressiva de servidores em seu ambiente. Isso porque a grande dificuldade de empresas desse porte eram os altos consumos de energia, falta de espaço físico, gerenciamento centralizado, confiança e disponibilidade. E a virtualização no modo geral veio para resolver essas questões, e se mostrou um verdadeiro divisor de águas.
Também vimos que a virtualização passou por várias modificações e como o linux containers revolucionou a infraestrutura.
Nesse artigo vamos continuar falando sobre virtualização, mas o nosso foco aqui será o Linux container. Vamos falar como funciona esse tipo de virtualização e quais são os seus componentes.
O que é LXC containers
O LXC é uma sistema leve de virtualização que usa múltiplos containers de forma isolada no kernel linux. Ele cria um ambiente muito próximo de um sistema linux sem precisar instalar um kernel separado. Com o LXC é possível criar processos separados para usuários, espaço em disco, memória, CPU, rede e muito mais.
O container tem a característica de isolar os recursos do sistema para as aplicações. A fim de criar um ambiente isolado para as aplicações, os containers usam algumas ferramentas do kernel chamadas; namespace, cgroups e chroot.
Cgroups: Esse recurso do kernel linux é usado pelo LXC para compartilhar os recursos físicos com as instâncias de containers. Ele também permite ao administrador gerenciar da melhor forma possível os recursos alocados. Quando falamos de recursos físicos estamos nos referindo ao (CPU, memória, disco, rede, etc).
Namespace: Com o namespace é possível criar vários cenários diferentes em um mesmo sistema, tornando esses ambientes totalmente independentes. Podemos isolar os processos de um ambiente, permitindo que duas ou mais instâncias virtuais usem o mesmo identificador "ID" em processos diferentes. Assim esses containers podem trabalhar de forma independentes.
O resultado final é uma máquina virtual sem hypervisor, isolada e com controle de recurso.
Os containers fornecem um ambiente mais próximo possível de um sistema operacional do que você conseguiria de uma VM, mas sem a sobrecarga da execução separada do kernel e da simulação de hardware do sistema.
Os beneficios de se usar o LXC container
A criação do projeto LXC container viabilizou grandes melhorias para a virtualização como provisionamento, escalabilidade e custo.
Provisionamento: A criação de uma máquina virtual usando o método tradicional pode demorar alguns minutos. E comparando com o provisionamento de um servidor físico o desempenho é muito grande. Porém, a virtualização por container tornou isso ainda mais rápido.
Escalabilidade: O provisionamento dinâmico do LXC permite a criação de uma instância virtual de containers conforme a demanda, promovendo disponibilidade e redundância de serviço. Esse provisionamento é feito de forma instantânea.
Custo: Algumas plataformas de virtualização mantem um projeto privado. Esse tipo de virtualização exige um valor muito alto para ser adquirido e implementado. São cobrados os valores das licenças, custos da implementação e migração do ambiente físico para o virtual. O LXC é um recurso totalmente open source e pode ser implementado sem a preocupação de aquisição de licenças.
Com essas melhorias são indiscutíveis os benefícios que a virtualização por containers traz para os hosts virtuais no âmbito local. Mas como o container se comportaria em um ambiente de nuvem totalmente distribuído? Como seria a gestão desses containers se eu precisasse configurar um ambiente altamente escalável usando recursos de multiplos hosts espalhado na nuvem? Essa é uma discussão para o próximo post. Continue acompanhado o nosso blog, compartilhe e discuta esse tema com um amigo. Nos encontramos na próxima semana, até la!