Cloud Computing

18 out, 2012

Computação em nuvem e armazenamento com OpenStack

Publicidade

A ideia por trás das nuvens e da Infraestrutura como serviço (IaaS) pública definitivamente não é nova. Serviços de nuvem pública, como Amazon Elastic Compute Cloud (Amazon EC2) para serviços de plataforma de computação de alto desempenho, estão disponíveis. O que mudou é o foco na IaaS como meio de computação em nuvem privada para satisfazer a computação corporativa com dados sensíveis. A computação em nuvem privada aplica a ideia da IaaS à infraestrutura privada. Embora isso faça com que as vantagens econômicas das nuvens públicas (serviços de pagamento por uso) sejam perdidas, ela explora os principais princípios da computação em nuvem, com uma infraestrutura flexível e escalável dentro de um datacenter corporativo.

Vamos começar com uma rápida introdução à IaaS e suas arquiteturas. Em seguida, vamos passar direto para a solução líder de software livre: o OpenStack.

IaaS e arquiteturas em nuvem

As arquiteturas de computação em nuvem tendem a se concentrar em um conjunto comum de recursos que são virtualizados e expostos a um usuário sob demanda. Esses recursos incluem recursos de cálculo de capacidade variável, recursos de armazenamento persistente e recursos de rede configurável para vinculá-los e expor condicionalmente esses recursos na internet.

A arquitetura de uma implementação IaaS (veja a Figura 1) segue este modelo, com a adição de outros elementos, como medição (para dar conta do uso para fins de faturamento). A infraestrutura física é abstraída do aplicativo e do usuário por meio de uma camada de virtualização implementada por uma variedade de tecnologias, incluindo hypervisors (para virtualização da plataforma), redes virtuais e armazenamento.

Embora o OpenStack seja a solução de nuvem de software livre mais popular disponível atualmente, ela definitivamente não foi a primeira. Na verdade, o OpenStack é uma combinação de duas soluções mais antigas desenvolvidas em ambos os setores público e privado.

Uma solução de IaaS de software livre mais antiga, a Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus), foi desenvolvida como um projeto de pesquisa na Universidade da Califórnia, em Santa Bárbara, nos EUA. Outras soluções incluem o OpenNebula (um kit de ferramentas de computação e nuvem de software livre) e Nimbus (outro kit de ferramentas de software livre para nuvens da IaaS). O OpenStack integrou peças da plataforma Nebula da U.S. National Aeronautics and Space Administration’s (NASA) e do projeto Rackspace Cloud Files (armazenamento em nuvem).

Recém-chegado da computação em nuvem: OpenStack

O OpenStack é relativamente um recém-chegado no espaço da IaaS, tendo seu primeiro release sido lançado no final de 2010. Apesar da presumida falta de maturidade da solução, e dado que ela existe há menos de dois anos, o OpenStack atualmente é uma das pilhas de nuvem mais usadas. No entanto, em vez de ser uma solução individual, o OpenStack é um conjunto crescente de soluções de software livre (incluindo projetos principais e recentemente desenvolvidos) que, juntos, formam uma pilha de IaaS eficiente e madura.

Como mostra a Figura 2, o OpenStack foi criado a partir de um núcleo de tecnologias (mais do que é mostrado aqui, mas estes representam os aspectos principais). À esquerda está o painel Horizon, que mostra a interface com o usuário para gerenciar serviços do OpenStack para ambos usuários e administradores. A Nova fornece uma plataforma de cálculo escalável, suportando o fornecimento e gerenciamento de grandes quantidades de servidores e máquinas virtuais (VMs, de maneira hypervisor-agnóstico). O Swift implementa um sistema de armazenamento de objetos escalável e massivo com redundância interna. Na parte inferior estão o Quantum e o Melange, que implementam a conectividade de rede como serviço. Finalmente, o projeto Glance implementa um repositório para imagens de disco virtuais (imagem como serviço).

Conforme mostrado na Figura 2, o OpenStack é uma coleção de projetos que, como um todo, oferece uma solução IaaS completa. A Tabela 1 ilustra esses projetos com seus aspectos contribuintes.

Projeto Component Descrição
Horizon Painel Painel do usuário e do administrador
Nova Dispositivo de bloqueio/cálculo Volumes e servidores virtuais
Glance Serviço de imagem Imagens de disco da VM
Swift Storage as a Service Armazenamento de objeto
Quantum/Melange Redes Redes virtuais seguras

Outros aspectos importantes incluem Keystone, que implementa um serviço de identidade que é fundamental para nuvens privadas corporativas (para gerenciar o acesso a servidores de cálculo, imagens no Glance e o armazém de objetos do Swift).

 Arquitetura do OpenStack

O OpenStack é representado pelos três projetos principais de software livre (conforme mostrado na Figura 2): Nova (cálculo), Swift (armazenamento de objeto) e Glance (repositório da VM). A Nova, ou o cálculo do OpenStack, permite o gerenciamento de instâncias da VM em uma rede de servidores. Suas Interfaces de programação de aplicativos (APIs) oferecem orquestração de cálculo para uma abordagem que tenta ser agnóstica, não apenas do hardware físico, mas também dos hypervisors. Observe que a Nova oferece não apenas uma API do OpenStack para gerenciamento, mas uma API compatível com o Amazon EC2 para aqueles que estão acostumados com essa interface. A Nova oferece suporte a hypervisors proprietários para organizações que os usam, mas, mais importante que isso, ela oferece suporte a hypervisors, como Xen e Kernel Virtual Machine (KVM), bem como à virtualização do sistema operacional, como Linux. ® Contêineres. Para fins de desenvolvimento, também é possível usar soluções de emulação, como QEMU.

O Swift, ou o armazenamento de objeto do OpenStack, é um projeto que oferece clusters de armazenamento redundantes e escaláveis usando servidores padrão com discos rígidos de mercadoria. O Swift não representa um sistema de arquivos, mas em vez disso, implementa um sistema de armazenamento de objetos mais tradicional para armazenamento de longo prazo de dados primariamente estáticos (uma modelo de uso de chave é imagem da VM estática). O Swift não possui controlador centralizado, o que melhora a escalabilidade geral. Ele gerencia a replicação internamente (sem Redundant Array of Independent Disks) no cluster para melhorar a confiabilidade.

O Glance, ou serviço de imagem do OpenStack Image Service, oferece um repositório para imagens de disco virtual que a Nova pode usar (com a opção de estar armazenado com o Swift). O Glance oferece uma API para o registro de imagens de disco, além de suas descobertas e entregas, por meio de uma interface Representational State Transfer (REST). O Glance é altamente agnóstico no formato de imagem de disco virtual, suportando uma grande variedade de padrões, incluindo VDI (VirtualBox), VHD (Microsoft ® Hyper-V®), QCOW2 (QEMU/KVM), VMDK/OVF (VMware) e bruto. O Glance também oferece resumos de verificação da imagem de disco para integridade, controle da versão (e outros metadados), bem como verificação do disco virtual e logs de auditoria/depuração.

Os principais projetos do OpenStack (Nova, Swift e Glance) foram desenvolvidos no Python e estão todos disponíveis sob a Licença do Apache.

Demonstração do OpenStack

Com um grande número de projetos independentes que devem ser instalados e configurados para funcionar em conjunto uns com os outros, a instalação do OpenStack pode ser uma tarefa demorada (consulte Recursos para obter mais informações sobre as instalações completas). Mas, para o leitor curioso, há outras opções que podem simplificar muito a instalação do OpenStack.

Qualquer pessoa que tenha lido alguns de meus artigos anteriores sabe que sou fã das imagens de VM para o uso simplificado de software baseado em Linux. As VMs permitem que você crie com facilidade uma nova instância para testar ou fazer uma demonstração do software. A VM é uma instância autocontida do Linux (às vezes chamada de dispositivo virtual) que pode ser pré-instalada com o software necessário e pré-configurada para seu uso. Nesse sentido, o software de fornecimento simplifica muito seu uso, permitindo que você teste softwares que, de outro modo, seriam difíceis ou demorados para adquirir. Confira Recursos para ver as opções de instalação que servem para as necessidades de seu hardware específico e sistema operacional de base.

Para essa demonstração, decidi usar o release mais recente do Ubuntu (12.04) e o release Essex do OpenStack. O Essex está disponível como um ISO usando o procedimento de instalação do uksysadmin (veja Recursos). Após uma instalação limpa do OpenStack Essex no Ubuntu Precise, um navegador da web externo deverá poder exibir o painel do OpenStack. A Figura 3 mostra a guia System Panel Images com a imagem da VM guest em dois formatos de contêiner.

A imagem é usada para criar uma instância demo, que, conforme mostra a Figura 4, foi iniciada. Essa instância agora está disponível para uso.

Com uma imagem de cálculo agora em execução no OpenStack, posso acessá-lo usando seu endereço IP (172.16.1.1) por meio de uma sessão simples do Shell seguro (SSH) (veja na Listagem 1 a entrada do usuário em negrito).

$ ssh -i Downloads/demo.pem ubuntu@172.16.1.1
A autenticidade do host '172.16.1.1 (172.16.1.1)' não pode ser estabelecida.
A impressão digital chave do RSA é df:0e:d0:32:f8:6d:74:49:ea:60:99:82:f1:07:5d:3b.
Tem certeza de que deseja continuar a se conectar (sim/não)? sim
Aviso: '172.16.1.1' (RSA) permanentemente adicionado à lista de hosts conhecidos.
Bem-vindo ao Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)

 * Documentação:  https://help.ubuntu.com/

 Informações do sistema desativadas devido ao carregamento maior que 1.0

0 pacotes podem ser atualizados.
0 atualizações são atualizações de segurança.

Obtenha suporte à nuvem com o Ubuntu Advantage Cloud Guest
  http://www.ubuntu.com/business/services/cloud

Os programas incluídos com o sistema Ubuntu são softwares livres.
 Os termos exatos de distribuição de cada programa estão descritos
 nos arquivos individuais em /usr/share/doc/*/copyright.
O Ubuntu NÃO VEM COM ABSOLUTAMENTE NENHUMA GARANTIA, 
dentro da máxima extensão permitida pelas leis aplicáveis.

Para executar um comando como administrador (usuário "root"), use "sudo ". Veja "man sudo_root" para obter detalhes. ubuntu@demo1:~$ ubuntu@demo1:~$ nome do host demo1 ubuntu@demo1:~$ ps PID TTY TIME CMD 835 pts/0 00:00:06 bash 948 pts/0 00:00:00 ps ubuntu@demo1:~$

Com todas essas camadas em execução, pode ser difícil visualizar o que está acontecendo. A Figura 5 ilustra a pilha inteira e provavelmente ajudará a resolver seu mistério. Nesta demonstração, um Mac operando com o Mac OS X oferece a plataforma base. O VirtualBox opera em um Mac OS X, fornecendo a plataforma para a execução do OpenStack (sendo executado no Ubuntu Linux). Observe que o VirtualBox é um hypervisor do tipo 2. Dentro da camada do OpenStack no Linux, QEMU é usado como o hypervisor guest, o que é ideal da perspectiva de hardware de mercadoria, mas que não possui o desempenho necessário nas instalações reais de produção.

Sem o suporte para a virtualização aninhada (executando de maneira eficiente um hypervisor em cima de outro hypervisor), confio no QEMU para ser meu hypervisor guest operando no OpenStack. Isso me permite executar uma VM guest em um hypervisor guest, executando em um hypervisor do tipo 2. Embora essa configuração possa ser lenta, ela demonstra completamente uma pilha IaaS sendo executada em um sistema de computador de mercadoria. Observe que, atualmente, certos processadores AMD oferecem uma maneira eficiente de suportar a virtualização aninhada.

Embora usar QEMU não seja ideal da perspectiva do desempenho, ele é altamente compatível com o KVM (Linux como hypervisor) e, portanto, é simples migrar entre os dois hypervisors (além das imagens da VM serem compatíveis com ambos). O que torna o QEMU ideal nesse caso é que ele pode ser executado em hardware que não forneça suporte à virtualização. Observe que minha plataforma neste exemplo é compatível com virtualização, mas como estou executando no VirtualBox (um hypervisor em si mesmo), a falta da virtualização aninhada me obriga a usar um hypervisor guest que não dependa de extensões de virtualização. Em qualquer caso, eu uso libvirt para gerenciar as VMs (iniciar, parar, monitorar e assim por diante), desse modo, a migração para KVM em hardware compatível com virtualização é tão simples como uma modificação de duas linhas em um arquivo de configuração do OpenStack.

Outras maneiras de usar o OpenStack

Se você não tem um cluster próprio, há outras opções para aproveitar os benefícios do OpenStack. O Rackspace, um dos criadores do OpenStack, está oferecendo o que ele espera que seja o Linux da nuvem. A plataforma de nuvem OpenStack do Rackspace fornece os benefícios do OpenStack com a flexibilidade e a escalabilidade da infraestrutura de nuvem pública.

Para simplificar a instalação do OpenStack para nuvens privadas, diversas empresas se concentraram em facilitar o uso do OpenStack dentro de seu cluster privado. Empresas como Piston Cloud Computing oferecem o Piston Enterprise OS, um sistema operacional em nuvem privada com base no OpenStack. O Mirantis oferece serviços profissionais para que as empresas desenvolvam uma infraestrutura do OpenStack.

O que vem depois para o OpenStack?

O OpenStack continua a integrar novas funcionalidades, elevando a barra na definição de uma solução IaaS. Vários outros projetos sob o guarda-chuva do OpenStack estão disponíveis, mas ainda há outros em processo de desenvolvimento. O projeto Keystone oferece um serviço de identidade que unifica a autenticação de componentes do OpenStack enquanto se integra a sistemas de autenticação existentes. Também há projetos de comunidade para o balanceamento de carga como serviço (Atlas-LB), um sistema de manutenção e instalação de nuvem (Crowbar), um banco de dados relacional escalável e fornecido por nuvem (RedDwarf), uma API baseada em REST para orquestração de nuvem (Heat) e uma ferramenta de gerenciamento de nuvem que abrange monitoramento, faturamento e mais (Clanavi). Vários outros projetos estão em desenvolvimento dentro e fora do projeto OpenStack, e essa lista cresce a cada dia conforme o OpenStack se desenvolve dinamicamente.

O OpenStack não está sem concorrentes, pois os projetos mais antigos continuam a ser desenvolvidos e novos projetos aparecerão. Por exemplo, o CloudStack (primeira versão de 2009) possui várias instalações de produção, mas não tem o nível de suporte do contribuidor do software livre que pode ser encontrado no OpenStack.

 Indo além

De maneira semelhante ao modo como o Linux foi desenvolvido em um sistema operacional para todos os fins que serve para todos os modelos de uso, o OpenStack está indo nessa direção para representar o sistema operacional em nuvem. Em vez de gerenciar um conjunto limitado de núcleos e recursos locais, o OpenStack gerencia uma rede massiva de servidores que contêm recursos de cálculo e armazenamento, junto com a rede virtual que os mantêm unidos.

Desde seu primeiro release no final de 2010 (Austin), o projeto OpenStack lançou mais quatro versões, sendo a última delas em abril de 2012 (Essex). Com cada release, o OpenStack continua a estimular funcionalidades novas e melhoradas, subindo o nível das outras soluções IaaS. Agora, sob o guarda-chuva do Apache, não é de surpreender que o OpenStack seja o padrão das pilhas de nuvem.

***

O IBM® SmartCloud Provisioning, uma verdadeira solução IaaS que permite a criação de uma nuvem com pouco envolvimento do usuário, altamente escalável, reduz os custos de oferece um tempo de inatividade próximo a zero e recuperação automatizada.

Recursos

Aprender

  • O website oficial do OpenStack é fonte exclusiva de informações sobre a família de projetos OpenStack, notícias sobre os projetos da comunidade, documentações e tudo mais relacionado ao OpenStack.
  • Computação em nuvem com Linux (M. Tim Jones, developerWorks, fevereiro de 2009) é uma introdução à computação em nuvem e seus temas diversos (IaaS, Plataforma como Serviço, Software como Serviço), com um ângulo direcionado para as opções baseadas em Linux.
  • Anatomia de uma nuvem de software livre” (M. Tim Jones, developerWorks, março de 2010) apresenta a anatomia da computação em nuvem pela perspectiva do software livre. Este artigo apresenta a arquitetura do nó, a arquitetura do cluster e as tecnologias de software livre que implementam esses requisitos.
  • Anatomia de uma infraestrutura de armazenamento em nuvem (M. Tim Jones, developerWorks, novembro de 2010) explora a parte interna de uma infraestrutura de armazenamento em nuvem, incluindo a arquitetura geral, o gerenciamento, o desempenho, a escalabilidade e a disponibilidade. O artigo também explora os modelos de armazenamento em nuvem – privado, público e híbrido.
  • O OpenStack não é um projeto individual, mas um guarda-chuva que abrange uma variedade de projetos que, em conjunto, implementam uma nuvem escalável e confiável. Os principais projetos do OpenStack incluem Nova, Swifte Glance. Há dois projetos ainda em desenvolvimento (que em breve também serão projetos principais). São eles: Keystone e Horizon. Finalmente, há diversos projetos da comunidade que ampliam ou adicionam funcionalidades ao OpenStack, incluindo Quantum, Melange, Atlas-LB, Crowbar, Heate Clanavi.
  • Instalação passo a passo do OpenStack fornece uma introdução completa à instalação do OpenStack para aplicações de produção.
  • Há diversas opções para usar o OpenStack no contexto de uma VM (nas diversas versões do OpenStack, incluindo a tecnologia completamente nova). Confira o DevStack (dos desenvolvedores de nuvem do Rackspace), Running OpenStack Compute (Nova) do OpenStack em um ambiente virtual, e na gravação do Blog de Arquitetura e Administração do Sistema da instalação do OpenStack Essex no Ubuntu 12.04 em VirtualBox (usei este exemplo para a demonstração).
  • Se você precisar de ajuda profissional com uma nuvem privada do OpenStack, há diversas empresas que podem fornecer esse tipo de suporte. Duas delas são: Piston Cloud Computing e Mirantis.
  • CloudStack é uma pilha concorrente do OpenStack. Ela possui diversas instalações de produção.
  • Nos recursos de desenvolvedor da nuvem, descubra e compartilhe o conhecimento e a experiência dos desenvolvedores de aplicativos e serviços que estão criando os seus projetos de implementação de nuvem.
  • Siga o developerWorks no Twitter. Também é possível seguir este autor no Twitter em M. Tim Jones.
  • Acompanhe Demos do developerWorks que abrangem desde demos de instalação e configuração de produtos para iniciantes até funcionalidades avançadas para desenvolvedores experientes.

Obter produtos e tecnologias

  • Avalie produtos IBM da maneira que for melhor para você: faça download da versão de teste de um produto, avalie um produto on-line, use-o em um ambiente de nuvem ou passe algumas horas na Ambiente de Simulação SOA aprendendo a implementar a Arquitetura Orientada a Serviços de forma eficiente.

Discutir

Participe da comunidade do developerWorks. Entre em contato com outros usuários do developerWorks e explore os blogs, fóruns, grupos e wikis voltados para desenvolvedores.

***

Sobre o autor: M. Tim Jones é arquiteto de firmware embarcado e autor de Artificial Intelligence: A Systems Approach, GNU/Linux Programming Application (atualmente em sua segunda edição), AI Application Programming (em sua segunda edição) e Sockets Programming from a Multilanguage Perspective. Seu conhecimento em engenharia varia do desenvolvimento de kernels para naves espaciais geossíncronas até a arquitetura de sistemas embarcados e o desenvolvimento de protocolos de rede. Tim é Arquiteto Senior da Emulex Corp. em Longmont, Colorado.

***

Artigo original disponível em: http://www.ibm.com/developerworks/br/cloud/library/cl-openstack-cloud/index.html