Computação em Nuvem

Um pouco sobre a plataforma OpenStack

Neste post pretendo falar um pouco sobre a plataforma OpenStack. Apesar de não ser um especialista em Cloud Computing, gosto de ficar antenado no que acontece no vasto mundo da TI.

O que é OpenStack?

Em um primeiro momento poderíamos definir vagamente OpenStack como um software de cloud computing. Sendo um pouco mais específico: um Sistema Operacional projetado para nuvem capaz de controlar uma enorme quantidade de recursos computacionais (processamento, armazenamento e rede) em um Datacenter. Um cenário típico de um ambiente de cloud.

Entretanto, acho mais apropriando definir OpenStack como um projeto aberto cujo objetivo é servir como plataforma base para construção de nuvens públicas ou privadas.

o termo “projeto aberto” neste contexto merece destaque, pois implica que o projeto nasceu com o objetivo de ser transparente e independente de fabricante. O site do projeto destaca os seguintes valores baseados nessa filosofia: open source, open design, open development and an open community.

Como “plataforma base” poderíamos empregar o software OpenStack, por exemplo, para construção de uma solução de Infraestutura como Serviço (Infrastructure as a Service – IaaS). Sendo um pouco mais prático, uma plataforma de IaaS é um dos serviços oferecidos pela Amazon AWS através da plataforma Amazon EC2. Basicamente uma plataforma de IaaS fornece meios para criação/provisionamento de máquinas virtuais (ou nós computacionais) sob demanda. Permitindo ainda que sua infraestrutura de servidores possa expandir ou encolher de forma elástica de acordo com a necessidade da sua aplicação (Workload computacional). Usando o OpenStack teríamos neste caso uma versão OpenSource da Amazon EC2 :-p

Projetos semelhantes e “concorrentes”

Os três principais projetos de sofware para cloud computing baseados em desenvolvimento aberto no momento são:

Dos três o que tem recebido mais atenção no mercado é sem dúvida o OpenStack. Apesar de ser um projeto recente e imaturo, podemos afirmar que ele se destaca pela comunidade envolvida, bem como o grande número de fabricantes apoiando e suportando o projeto. Outro fator importante é a adoção em larga escala no mercado de cloud. Empresas como HP, Rackspace, eBay, NASA, MercadoLibre, PayPal dentre outras, vêm adotado o OpenStack como base para suas plataformas de IaaS.

A página OpenStack Marketplace oferece uma lista atualizada de como o mercado tem utilizado e oferecido soluções de cloud baseadas no OpenStack. As empresas se dividem em ofertas de: Training, Distros e Appliances, Public Clouds, Consulting & Integrators e Drivers.

Aplicabilidade

OpenStack não se aplica apenas a Cloud Providers (ex: Amazon AWS, Rackspace ou Microsoft Azure) ou empresas que desejam implementar uma nuvem pública. Para aquelas organizaçcões que desejam implementar um modelo de computação em nuvem semelhante ao praticado pelos grandes provedores, OpenStack fornece a base ideal para a implementação de uma nuvem privada em um Datacenter corporativo.

A arquitetura do OpenStack contempla um Dashboard de administração que fornece as ferramentas necessárias para provisionamento e gerenciamento dos recursos computacionais. Veja este vídeo demostrando as funcionalidades do OpenStack Dashboard.

Outro ponto importante a ser considerado diz respeito ao tipo de aplicação costuma ser hospedada em cima de uma infraestrutura de nuvem. Não apenas na plataforma OpenStack, mas em qualquer plataforma de nuvem. Esse tipo de infraestrutura é projetado para oferecer acima de tudo escalabilidade, ou seja, para suportar workloads que demandam principalmente elasticidade. Dessa forma as aplicações desenvolvidas para este tipo de ambiente devem seguir um paradigma que permita escalar de forma indefinida. Geralmente são aplicações web sem estado (stateless web apps), Big Data processing, Web Services, RESTful Services, Caching, HPC processing etc, projetadas para nuvem. Aplicações preparadas para lidar com tolerância a falha, crescimento e diminuição, dados e processamento distribuída, cache em memória, multi-tenancy e todas as demais particularidades inerentes à este tipo de ambiente.

Partindo deste conceito OpenStack não deve ser confundido como uma plataforma de virtualização tradicional (ex: RHEV, Citrix Xen Server, VMWare etc). Pois como o próprio site sugere:

OpenStack Software delivers a massively scalable cloud operating system.

OpenStack é uma plataforma para provisionamento massivo de recursos computacionais. Tem como característica primordial a elasticidade (scale up/scale down). Neste tipo de ambiente máquinas (server nodes) são criadas e eliminadas sem prejuízo para o funcionamento da aplicação. Para aplicações projetadas para esse tipo de ambiente.

Arquitetura

Como uma plataforma de computação em nuvem o OpenStack foi projetado para ser extremamente escalável e flexível. A plataforma é composta por vários “sub-projetos” que juntos formam o seu núcleo (core).  Sua arquitetura é modular e formada por vários componentes que juntos implementam as funcionalidades dos três pilares que sustentam uma infraestrutura de nuvem: Processamento (compute), Rede (networking) e  Armazenamento (storing).

Cada componente possui um codename que o identifica e implementa um conjunto de funcionalidades dentro da plataforma:

  • Nova (openstack compute)
  • Neutron (openstack networking)
  • Swift (openstack object storage)
  • Cinder (openstack block storage)
  • Horizon (openstack dashboard)

Além dos componentes que formam o core do OpenStack a plataforma conta com um conjunto de serviços que integra cada componente para fornecer uma plataforma de IaaS completa. Essa integração é possível porque cada componente disponibiliza um conjunto APIs que permite o acesso às suas funcionalidades. Os serviços são os seguintes:

  • Keystone (Identity Service)
  • Glance (Image Service)
  • Ceilometer (Telemetry Service)
  • Heat (Orchestration Service)
  • Trove (Database Service)

Devido a sua arquitetura modular e flexível a plataforma permite a extensão de forma que serviços e ferramentas de terceiros possam ser integrados ao OpenStack para formar uma solução de cloud computing ainda mais rica e completa. Esse tipo de extensão permite que fornecedores de software ofereçam plataformas que vão além do IaaS. Contemplando soluções de PaaS (ex: Red Hat Openshift Enterprise) e Governança de nuvens híbridas (Red Hat Cloud Forms).

Não pretendo abordar cada componente ou serviço neste post. Seria necessário um post específico para entrarmos em detalhes técnicos. Esta página da documentação oficial descreve um overview explorando detalhes técnicos dos componentes e serviços do OpenStack, bem como suas respectivas funcionalidades e responsabilidades dentro do projeto.

Implementação

Apesar de ser um software o OpenStack não deve ser considerado um produto. OpenStack está mais para um framework de infraestrutura para nuvem do que para um produto final. É um projeto que evolui em uma velocidade incrível, mas com consistência.

Não é raro encontrar relatos pela Internet alegando dificuldades na implementação de um projeto com OpenStack. Entretanto, isso não tem sido considerado impedimento para escolher o OpenStack como base para implementação de uma nuvem pública ou privada. Basta observar o crescente número de casos de uso da plataforma por grandes players da indústria.

O projeto está em constante evolução e não tem por objetivo criar relases do tipo Enterprise Edition. Veja  o que diz o próprio wiki do projeto:

We do not produce “open core” software.

We are committed to creating truly open source software that is usable and scalable. Truly open source software is not feature or performance limited and is not crippled. There will be no “Enterprise Edition”.

OpenStack Enterprise

Existem diferentes distibuições do OpenStack suportadas e oferecidas por diferentes players da industria de software. A Red Hat se destaca nessa lista por sua inquestionável reputação como provedora de software corporativo baseado em código aberto. A Red Hat oferece sua distribuição chamada Red Hat® Enterprise Linux® OpenStack® Platform (RHEL-OSP). Trata-se de uma versão corporativa (enterprise-ready) do OpenStack que utiliza produtos consagrados como o Red Hat Enterprise Linux, SELinux, KVM Hypervisor, Red Hat Storage etc. Veja nesta página quais componentes e serviços da plataforma são oferecidos no RHEL-OSP. Vale ressaltar que a Red Hat faz parte do grupo dos oito membros Platinum que suportam o projeto OpenStack dedicando recursos em tempo integral.

Conclusão

Neste post tentei explorar de forma superficial os principais aspectos da plataforma OpenStack. Fiz questão de referenciar vários artigos e documentos oficiais que dizem respeito ao OpenStack para enriquecer a discussão.

Vimos também alguns pontos que fazem do OpenStack uma plataforma de cloud computing extremamente robusta e flexível. E o mais importante, o compromisso da plataforma de ser independente de fornecedor, primando pelos valores da filosofia OpenSource.

Espero que o post possa agregar valor ao leitor e despertar a curiosidade por assuntos relacionados a computação em nuvem.

Abraço 😉

Dicas, Linux

Instalando o Oracle VirtualBox no RHEL 6.x

Recentemente precisei instalar o Oracle VirtualBox (um projeto anteriormente mantido pela Sun Microsystems) em um laptop rodando o RHEL 6.5 (x86_64).

Apesar da instalação do pacote ocorrer sem erro.

# sudo yum localinstall ~/Downloads/VirtualBox-4.3-4.3.12_93733_el6-1.x86_64.rpm

Tive algumas dificuldades devido a falta de alguns pacotes e configurações. Ao executar o VirtualBox pelo terminal pela primeira vez uma mensagem de erro é mostrada instruindo executar o seguinte comando:

# sudo /etc/init.d/vboxdrv setup

Mais erros ocorrem devido a falta de algumas dependências, entre elas, os headers e o código fonte do Kernel do Linux. Para sanar este problema instale os seguintes pacotes via YUM:

sudo yum install kernel-devel kernel-headers binutils glibc-headers glibc-devel gcc make patch dkms

em seguida defina a seguinte variável de ambiente

# export KERN_DIR=/usr/src/kernels/2.6.32-431.11.2.el6.x86_64 #a versão do kernel no seu ambiente pode ser diferente

por fim execute novamente o comando abaixo:

# sudo /etc/init.d/vboxdrv setup

Se tudo der certo após esses passos o VirtualBox deverá ser iniciado normalmente sem erros. Pronto, agora pode começar a criar suas VMs com o VirtualBox.