Anatomia de uma nuvem de software livre

Blocos de construção para Infraestrutura como um Serviço

A computação em nuvem não é mais uma tecnologia pronta para explodir, mas uma tecnologia valiosa e importante que está modificando fundamentalmente a maneira como usamos e desenvolvemos aplicativos. Como se poderia esperar, o Linux® e o software livre fornecem a base para a nuvem (tanto para infraestruturas públicas quanto privadas). Explore a anatomia da nuvem, sua arquitetura e as tecnologias de software livre usadas para construir essas plataformas de computação e armazenamento dinâmicas e escaláveis.

M. Tim Jones, Consultant Engineer, Emulex Corp.

M. Tim JonesM. Tim Jones é arquiteto de firmware integrado e autor das obras Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming (agora, na segunda edição), AI Application Programming (na segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Sua experiência em engenharia vai desde o desenvolvimento de kernels para espaçonaves geossíncronas até a arquitetura de sistemas integrados e o desenvolvimento de protocolos de rede. Tim é engenheiro consultor da Emulex Corp. em Longmont, Colorado.



22/Mar/2010

O uso da nuvem como uma abstração é bem comum para o sistema distribuído que é a Internet, mas nos últimos anos, observamos que essa abstração se expandiu para incorporar infraestruturas altamente virtualizadas e escaláveis que são facilmente fornecidas como um serviço (tanto local quanto remotamente). Este artigo deixa de lado uma definição aprofundada de arquitetura em nuvem e seus benefícios e, ao invés disso, sugere leituras importantes na seção de Recursos.

Anatomia da computação em nuvem

Este artigo começa com uma exploração das abstrações principais das arquiteturas em nuvem (de Infrastructure as a Service [IaaS]) e segue além dos blocos de construção para as soluções mais altamente integradas.

Acrônimos usados frequentemente

  • API: Interface de programação de aplicativos
  • E/S: Entrada/Saída
  • SLA: Acordo de nível de serviço
  • UI: Interface com o usuário

Apesar de não ser um requisito, a virtualização fornece benefícios exclusivos para construir arquiteturas dinamicamente escaláveis. Além da escalabilidade, a virtualização introduz a capacidade de migrar máquinas virtuais (VMs) entre servidores físicos com o objetivo de balanceamento de carga. A Figura 1 mostra que o componente de virtualização é fornecido por uma camada do software chamada hypervisor (algumas vezes chamada de monitor da máquina virtual [VMM]). Essa camada fornece a capacidade de executar sistemas operacionais múltiplos (e seus aplicativos) simultaneamente em uma máquina física única. Há um objeto no hypervisor chamado máquina virtual que encapsula o sistema operacional, os aplicativos e a configuração. Como opção, a emulação do dispositivo pode ser fornecida no hypervisor ou como uma VM. Finalmente, dada a nova natureza dinâmica da virtualização e as novas capacidades que ela fornece, são necessários novos esquemas de gerenciamento. Esse gerenciamento é mais bem feito em camadas, considerando o gerenciamento local no servidor, assim como o gerenciamento de infraestrutura de nível superior, fornecendo uma orquestração geral do ambiente virtual.

Figura 1. Elementos principais de um nó na nuvem
An architectural chart shows a layer view of the core cloud elements

Se pegarmos os nós na Figura 1 e multiplicá-los em uma rede física com armazenamento compartilhado, orquestrando o gerenciamento em toda a infraestrutura e fornecermos o balanceamento de carga front-end de conexões recebidas (em um ambiente privado ou público) com a utilização de cache e filtragem, teremos uma infraestrutura virtual chamada de nuvem. Essa nova construção é mostrada na Figura 2. Máquinas inativas podem ser desligadas até que sejam necessárias para capacidade de computação adicional (fornecendo melhor eficiência de energia), com VMs balanceadas (mesmo dinamicamente) nos nós dependendo de suas cargas individuais.

Figura 2. Infraestrutura da computação em nuvem
Diagram shows how the various layers of cloud interact, starting with physical networking/storage and working up to the users/Internet

Com a arquitetura básica de uma nuvem definida, vamos explorar onde o software livre está sendo usado para construir uma infraestrutura em nuvem dinâmica.


Principais tecnologias de software livre

A paisagem do Linux está presenciando uma onda de desenvolvimentos focados na infraestruturas virtualizadas para virtualização, gerenciamento e integração em larga escala de pacotes de software em nuvem. Comecemos com uma visão de software livre no nível do nó individual, então passaremos para a infraestrutura para ver o que está acontecendo.

Hypervisors

A base de uma nuvem no nível do nó é o hypervisor. Apesar de a virtualização não ser um requisito, ela fornece capacidades indisputadas para arquiteturas escaláveis e eficientes no uso de energia. Há um número de solução de virtualização de software livre, mas duas soluções chave são as que transformam o sistema operacional Linux em um hypervisor: a Máquina Virtual do Kernel Linux (KVM) e a Lguest. a KVM é uma solução de hypervisor oficial, sendo implementada em ambientes de produção. A Lguest é uma solução focada em Linux que executa somente VMs Linux, mas está integrada ao kernel e encontrando usos mais amplos.

Além da conversão do Linux em um hypervisor, há outras soluções que possuem uma abordagem focada em uma VM convidada. User-Mode Linux (UML) é uma outra abordagem que modifica um kernel Linux convidado para ser executado em um outro sistema operacional Linux (sem extensões de hypervisor). Devido ao fato de a maioria dos usuários quererem executar um kernel não modificado, as soluções de virtualização (como a KVM) são preferidas.

Essa abordagem UML também é popular, mas necessita de hardware virtualizado (como um console, disco virtual e rede).

Emulação do dispositivo

O hypervisor fornece o meio de compartilhar a CPU com sistemas operacionais múltiplos (virtualização da CPU), mas para fornecer a virtualização completa, todo o ambiente deve estar virtualizado para as VMs. A emulação da máquina — ou plataforma— pode ser executada de várias maneiras, mas um pacote popular de software livre que suporta vários hypervisors é chamado QEMU. O QEMU é um emulador e hypervisor completo. Mas a KVM usa o QEMU para a emulação do dispositivo como um processo separado no espaço do usuário (consulte a Figura 1). Um recurso interessante do QEMU é que, como ele fornece emulação de disco (através do formato QCOW), o QEMU fornece recursos avançados como capturas instantâneas e migração de VM ativa.

A KVM, a partir do kernel 2.6.25, usa a virtio como um meio de otimização do desempenho de virtualização de E/S. Ela faz isso introduzindo drivers paravirtualizados no hypervisor com ganchos do convidado para elevar o desempenho a níveis quase nativos. Isso funciona somente quando o sistema operacional puder ser modificado com este objetivo, mas pode ser usado no convidado Linux em cenários de hypervisor do Linux.

Hoje em dia, a virtio e o QEMU trabalham em conjunto para que transações de dispositivos emulados possam ser otimizadas entre o convidado Linux e o emulador QEMU no espaço do usuário.

Rede virtual

Quando as VMs se consolidam em servidores físicos, as necessidades de plataforma da rede se intensificam. Mas, ao invés de forçar toda a rede da VM para a camada física da plataforma, a própria comunicação local poderia ser virtualizada. Para otimizar a comunicação de rede entre VMs, há a introdução do comutador virtual. O vSwitch se comporta como um comutador físico, mas é virtualizado na plataforma (veja a Figura 3). Nessa figura, as interfaces virtualizadas (VIFs) associadas às VMs se comunicam através do comutador virtual com as interfaces físicas (PIFs).

Figura 3. Visualização de alto nível do Open vSwitch com interfaces virtuais e físicas
Diagram shows layers starting on the bottom with the pysical domain, then physical interfaces, virtual interfaces and the VMs at the top

O software livre também está tratando desse problema, como uma solução interessante chamada Open vSwitch. Além de fornecer um comutador virtual para ambientes virtuais, o vSwitch também pode ser integrado em plataformas físicas e fornecer recursos de nível corporativo como redes locais virtuais (VLANs), Qualidade de Serviço (QoS) baseada na prioridade, entroncamento e suporte a aceleração de hardware (como adaptadores de rede de virtualização de E/S [IOV] de raiz única). O Open vSwtich está atualmente disponível para kernels 2.6.15 e suporta a variedade de soluções de virtualização baseadas em Linux (Xen, KVM, VirtualBox) e padrões de gerenciamento (Remote Switched Port Analyzer [RSPAN], NetFlow, etc.).

Ferramentas e tecnologias VM

Como as VMs são agregações do sistema operacional, sistemas de arquivos raiz e configurações, o espaço é perfeito para o desenvolvimento de ferramentas. Mas para perceber o potencial total das VMs e ferramentas, deve haver uma maneira móvel de montá-las. A abordagem atual, chamada de Open Virtualization Format (OVF) é uma construção VM flexível, eficiente e móvel. O OVF envolve uma imagem de disco virtual em um wrapper XML que define a configuração da VM, incluindo a configuração de rede, requisitos de processador e memória e uma variedade de metadados extensíveis para definir mais a imagem e suas necessidades de plataforma. A capacidade chave fornecida pelo OVF é a portabilidade para distribuir VMs em de uma maneira agnóstica do hypervisor.

Há um número de utilitários para gerenciar imagens VM (VMIs) e também para convertê-las em vários outros formatos. A ovftool do VMware é uma ferramenta útil que pode ser usada para a conversão de VMI (por exemplo, para converter do formato VMware Virtual Disk Development Kit [VMDK] para OVF). Essa ferramenta e outras são úteis quando se possui uma VMI, mas e caso você possua um servidor físico que gostaria de converter para uma VMI? Pode-se implementar uma ferramenta útil chamada Clonezilla para este objetivo. Apesar de ter sido originalmente desenvolvida como uma ferramenta de clonagem de disco para uma recuperação de desastre, pode-se usá-la para converter uma instância de servidor físico para uma VM para uma implementação fácil em uma infraestrutura virtualizada. Várias outras ferramentas existem (como utilitários construídos em libvirt) ou estão em desenvolvimento para a conversão e gerenciamento enquanto o formato OVF ganha adeptos.

Gerenciamento local

Este artigo explora o gerenciamento a partir de duas perspectivas. Esta seção discute o gerenciamento da plataforma; uma seção mais adiante expande o gerenciamento da infraestrutura a um nível mais elevado.

A Red Hat introduziu a biblioteca libvirt como uma API para o gerenciamento de virtualização de plataformas (hypervisors e VMs). O que faz da libvirt tão interessante é que ela suporta uma variedade de soluções hypervisor (KVM e Xen são algumas delas) e fornece ligações de API para uma variedade de linguagens (como C, Python e Ruby). Ela fornece a "última milha" de gerenciamento, sendo a interface direta com o hypervisor da plataforma e estendendo APIs para soluções de gerenciamento de infraestrutura maiores. Com a libvirt, é fácil iniciar e interromper VMs e ela fornece APIs para operações mais avançadas, como a migração de VMs entre plataformas. O uso da libvirt também torna possível o uso de seu shell (construído na libvirt), chamado virsh.


Tecnologias de software livre de infraestrutura

Agora que vimos algumas das soluções de software livre no nível do nó virtualizado, vejamos alguns outros aplicativos de software livre que suportam essa infraestrutura. Este artigo explora três categorias. As duas primeiras são tecnologias de nível de infraestrutura que complementam as soluções previamente discutidas. A segunda categoria consiste em soluções integradas que juntam todas as partes para uma implementação mais simples.

Tecnologias de E/S

A construção de uma arquitetura da Web escalável e balanceada depende da capacidade de balancear o tráfego da Web nos servidores que implementam a funcionalidade de backend. Há uma variedade de soluções de balanceamento de carga, mas, recentemente, o Yahoo! lançou uma solução de software livre chamada Traffic Server. Traffic Server é interessante, pois encapsula um grande número de recursos em um pacote para infraestruturas em nuvem, incluindo gerenciamento de sessão, autenticação, filtragem, balanceamento de carga e roteamento. O Yahoo! adquiriu esse produto da Inktomi, mas agora estendeu e introduziu esse produto para o software livre.

Gerenciamento da infraestrutura

O gerenciamento de infraestrutura em larga escala (o gerenciamento de muitos hypervisors e ainda mais VMs) pode ser conseguido de várias maneiras. As soluções mais comuns são construídas a partir da mesma plataforma (libvirt). O pacote oVirt é uma ferramenta de gerenciamento de VM aberta que aumenta de um pequeno número de VMs para milhares de VMs sendo executadas em centenas de hosts. O pacote oVirt, desenvolvido pela Red Hat, é um console de gerenciamento baseado na Web que, além do gerenciamento tradicional, suporta a automação do gerenciamento em cluster e do balanceamento de carga. A ferramenta oVirt foi composta na linguagem Python. O VirtManager, também baseado na libvirt e desenvolvido pela Red Hat, é um aplicativo com uma GTK+ UI (ao invés de ser baseado na Web como o oVirt). O VirtManager apresenta um monitor com gráficos muito melhores (para o desempenho ao vivo e utilização de recursos) e inclui um visualizador de cliente VNC para um console gráfico completo para VMs remotas.

E o Puppet é um outro pacote de software livre projetado para infraestrutura de datacenter (uma nuvem). Apesar de não ter sido projetado somente para infraestruturas virtualizadas, ele simplifica o gerenciamento de grandes infraestruturas, separando os detalhes do sistema operacional peer. Ele faz isso usando a linguagem Puppet. O Puppet é ideal para a automatização de tarefas administrativas em um grande número de servidores e é amplamente usado hoje em dia.


Soluções IaaS integradas

Os pacotes de software livre a seguir possuem uma abordagem mais holística integrando todas as funcionalidades necessárias em um único pacote (incluindo virtualização, gerenciamento, interfaces e segurança). Quando adicionados a uma rede de servidores e armazenamento, esses pacotes produzem computação em nuvem e infraestruturas de armazenamento (IaaS) flexíveis. Para detalhes sobre essas plataformas, consulte a seção de Recursos.

Eucalyptus

Um dos pacotes de software livre mais populares para a construção de infraestruturas de computação em nuvem é o Eucalyptus (que vem de Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems). O que faz dele único é que sua interface é compatível com a Amazon Elastic Compute Cloud (Amazon EC2 — a interface de computação em nuvem da Amazon). Além disso, o Eucalyptus inclui o Walrus, que é um aplicativo de armazenamento em nuvem compatível com o Amazon Simple Storage Service (Amazon S3 — a interface de armazenamento em nuvem da Amazon).

O Eucalyptus suporta KVM/Linux e Xen para hypervisors e inclui a distribuição de cluster Rocks para o gerenciamento de cluster.

OpenNebula

O OpenNebula é um outro aplicativo de software livre interessante (sob licença da Apache) desenvolvido na Universidad Complutense de Madrid. Além de dar suporte a construção em nuvem privada, o OpenNebula apoia a ideia de nuvens híbridas. Uma nuvem híbrida permite combinar uma infraestrutura em nuvem privada com uma infraestrutura em nuvem pública (como a Amazon) para permitir graus ainda maiores de escalada.

O OpenNebula suporta Xen, KVM/Linux e VMware e é amparado por elementos como libvirt para o gerenciamento e introspecção.

Nimbus

O Nimbus é uma outra solução IaaS focada na computação científica. Com o Nimbus, pode-se arrendar recursos remotos (como os fornecidos pela Amazon EC2) e gerenciá-los localmente (configurar, implementar VMs, monitorar, etc.). O Nimbus se originou do projeto Workspace Service (parte do Globus.org). Por depender da Amazon EC2, o Nimbus suporta Xen e KVM/Linux.

Plataforma em Nuvem Xen

A Citrix integrou a Xen em uma plataforma IaaS, usando a Xen como um hypervisor ao incorporar outros recursos de software livre como o Open vSwitch. Uma vantagem interessante da solução Xen é o foco no gerenciamento baseado em padrões (incluindo OVF, Distributed Management Task Force [DTMF], o Common Information Model [CIM], e a Virtualization Management Initiative [VMAN]) do projeto Kensho. A pilha de gerenciamento Xen suporta garantias SLA em conjunto com métricas detalhadas para estorno.

OpenQRM

Por último, mas não menos importante, a OpenQRM, que é caracterizada como uma plataforma de gerenciamento de datacenter. A OpenQRM fornece um console único para gerenciar um datacenter virtualizado completo que é plugável, de maneira arquitetônica, para permitir a integração de ferramentas de terceiros. A OpenQRM integra suporte para alta disponibilidade (através de redundância) e suporta uma variedade de hypervisors, incluindo KVM/Linux, Xen, VMware e Linux VServer.


Indo além

Pode-se escrever volumes sobre o papel de liderança que o software livre está exercendo no domínio das nuvens e da virtualização, mas este artigo forneceu uma breve introdução de algumas das soluções populares e visíveis disponíveis atualmente. O software livre lhe será útil caso queira construir uma nuvem com base em seus próprios requisitos a partir de partes individuais ou simplesmente queira uma solução coesa que funcione sem configurações adicionais. Consulte a seção de Recursos para mais detalhes sobre as soluções discutidas aqui e outras.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre, Cloud computing
ArticleID=484039
ArticleTitle=Anatomia de uma nuvem de software livre
publish-date=03222010