CloudStack 101 – tudo o que você precisa em apenas um artigo

O que é o Apache CloudStack™

Apache CloudStack™ é uma plataforma de software de código aberto que reune recursos de computação para a construção de infra-estrutura de clouds públicas, privadas e híbrida como serviço (IaaS). O Apache CloudStack gerencia a rede, storage e servidores que compõe a infra-estrutura da cloud.

A história até agora.

O CloudStack começou sua história com o nome VMops, uma empresa fundada em 2008 focada no desenvolvimento de produtos, liderada por Sheng Liang, que desenvolveu o Java Virtual Machine na Sun Microsystems. Enquanto as primeiras versões eram muito focadas no Xen Hypervisor, o time liderado por Sheng Liang percebeu os benefícios de tornar a solução multi-hypervisor. No inicio de 2010 a VMops conquistou uma enorme vitória de marketing quando adquiriu o domínio cloud.com e assim o CloudStack foi lançado e 98% do seu código fonte foi aberto. Em julho de 2011 o CloudStack foi adquirido pela Citrix Systems que liberou o código restante sob a licença GPLv3.

A grande novidade veio em abril de 2012 quando a Citrix doou o CloudStack à Apache Software Foundation onde foi aceito pela incubadora Apache. Ao mesmo tempo, a Citrix também deixou o seu envolvimento na iniciativa OpenStack. O Apache CloudStack foi recentemente promovido à um projeto de nível superior (Top-level) da Apache Software Foundation, uma medida que dá status de maturidade do código e à sua comunidade.

Cloud Types

O Apache CloudStack funciona dentro de múltiplas estratégias empresariais e mandatos, bem como apoia múltiplas estratégias de cloud a partir de uma perspectiva de fornecedores de serviços. Como passo inicial para além de virtualização tradicional de servidores, muitas organizações estão olhando para implementações de cloud privada como um meio para satisfazer suas demandas de flexibilidade mantendo assim o controle sobre a prestação de serviços. A cloud privada pode ser hospedada pela própria organização de TI, ou proveniente de um provedor de serviços de TI gerenciável sem abrir mão dos objetivos de total controle e segurança e sem comprometimento dos acordos de SLAs.

Para algumas organizações, o modelo de serviço gerenciável é um passo para um nível mais alto de todos os recursos provenientes de uma solução hospedada. Garantias de SLA e preocupações com segurança muitas vezes ditam os tipos de fornecedores que uma empresa procura. Do outro lado estão os provedores de cloud pública com estruturas de preços pay-as-you-go e dimensionamento elástico. Uma vez que os detalhes das clouds públicas são muitas vezes abstratos aos usuários como a topologia da rede por exemplo, uma estratégia de cloud híbrida lhe permite manter o controle sobre os principais aspectos de suas operações, como os seus dados para citar como exemplo e, ao mesmo tempo, aproveitar os benefícios da capacidade elástica de uma cloud pública.

Open Flexible Platform

 

Suporte à Múltiplos Hypervisors

O Apache CloudStack trabalha com uma gama de hypervisors e uma implementação de cloud única pode conter múltiplas implementações de hypervisors. A versão atual do CloudStack suporta soluções Enterprise pré-empacotadas como Citrix XenServer e VMware vSphere bem como OVM, KVM ou Xen rodando no Ubuntu, Debian ou CentOS. O suporte para Hyper-V está sendo desenvolvido e deve estar disponível em uma versão futura.

A infra-estrtutura de gerenciamento massivamente escalável do CloudStack pode gerenciar dezenas de milhares de hosts instalados em vários data-centers geograficamente distribuídos. O gerenciamento centralizado de servidores escala de forma linear eliminando a necessidade de servidores de gerenciamento no nível de clusters intermediários. A falha de um componente único não compromete a interrupção da infra-estrtutura da cloud. A manutenção periódica do servidor de gerenciamento pode ser realizada sem afetar o funcionamento de máquinas virtuais rodando na cloud.

O Gerenciamento de Configuração Automática do CloudStack, configura automaticamente o Storage e a Rede de cada maquina virtual. O CloudStack gerencia internamente um conjunto de appliances virtuais para oferecer apoio à própria infra-estrutura da cloud. Estes appliances virtuais oferecem serviços como firewall, roteamento, DHCP, VPN, acesso à console, acesso ao storage e replicação. O uso extensivo de appliances virtuais simplifica a instalação, a configuração e o gerenciamento contínuo de uma implementação CloudStack.

A Interface Gráfica do Usuário do CloudStack oferece uma interface web de administração usada para provisionamento e gerenciamento da cloud bem como uma interface de usuário final, utilizado para a execução e gerenciamento de Templates de Máquinas Virutais. A interface de usuário pode ser personalizada para refletir o modelo de prestação de serviços desejado ou uma visão Enterprise caso desejado.

O CloudSack fornece uma API altamente extensível para acesso programático de todos os recursos de gestão disponível na interface do usuário. Esta API permite a criação de ferramentas de linha de comando e novas interfaces de usuário para atender à necessidades específicas. A arquitetura de alocação plugável do CloudStack permite a criação de novos tipos de plugins para Storage e Hosts.

O CloudStack pode traduzir as chamadas da API da Amazon Web Services (AWS) EC2 e S3 para chamadas nativas do CloudStack API de tal modo que os usuários possam continuar usando ferramentas AWS existentes. O CloudMonkey é uma interface de linha de comando (CLI) para o CloudStack escrito em python e traz a capacidade de criar facilmente scripts para automação e administração complexa ou repetitiva de tarefas de gerenciamento, como por exemplo adicionar diversos usuários para a implantação de uma arquitetura completa CloudStack.

Mais informações sobre o CloudMonkey podem ser encontradas em http://goo.gl/ESp8ha

O acesso direto à API ou por meio do CloudMonkey é protegido por uma combinação de API e Secret Keys e uma assinatura Hash. Os usuários podem gerar aleatoriamente novas combinações de API e Secret Keys (assim como a sua senha de usuário) a qualquer momento, proporcionando o máximo de segurança e tranquilidade.

Alta Disponibilidade

CloudStack Multi-Node Deployment

O CloudStack tem diversas características que aumentam a disponibilidade do sistema. O Management Server pode fazer o deploy de si mesmo em uma instalação multi-node onde os servidores são balanceadas entre os data centers. O banco de dados MySQL pode ser configurado para usar replicação prevenindo uma situação de falha em caso de perda de dados. Para os hospedeiros, o CloudStack suporta boundig dos dispositivos de rede e o uso de redes separadas para armazenamento mesmo utilizando iSCSI Multipath.

Arquitetura de Implementação do CloudStack

Deployment Architecture

O CloudStack tem 6 blocos chaves:

As Regiões do CloudStack são muito similares às Regiões AWS e são a primeira e maior unidade de escala de uma implementação de uma cloud com CloudStack. Uma Região consiste em multiplas Zonas de Disponibilidade, a segunda maior unidade de escala. Tipicamente existe apenas uma Zona por Data Center e cada Zona contem PODs, Hosts e Storage. PODs tem propriedades lógicas e físicas com componentes como endereçamento IP e algoritmo de alocação de Máquinas Virutais sendo influenciados por PODs dentro de uma Zona.

Clusters são a quarta unidade de escala e são simples grupos de servidores homogêneos combinados com um Storage Primário. Cada Cluster utiliza um mesmo tipo de hypervisor mas em uma Zona pode ceoxistir combinações de todos os hypervisores suportados.

Hosts são a quinta unidade de escala e disponibiliza a camada de computação real em que Máquinas Virtuais são executadas.

Storage é o último bloco na unidade de escala. Existem dois tipos chaves de Storage no CloudStack: Primário e Secundário. O Storage Primário é onde os discos das Máquinas Virtuais residem e pode ser utilizado o disco local de um Host ou um storage compartilhado como NFS, iSCSI, Fiber Channel, etc.

O Storage Secundário é onde é armazenado os Templates de Máquinas Virtuais, arquivos ISO e Snapshots e é utilizado o protocolo NFS para este Storage. O Swift também pode ser utilizado para replicar o Storage Secundário entre diferentes Zonas assegurando assim que os usuários tenham acesso ao seus Snapshots mesmo que a Zona esteja off-line. Existem atualmente várias frentes de desenvolvimento em curso em relação à Storage e algumas grandes novidades para a próxima versão do CloudStack graças à um novo subsistema de Storage.

Rede

A ‘cola’ que liga todos os blocos é a camada de rede. O CloudStack tem dois modelos de Rede principais conhecidos como básico e avançado. A Rede Básica é muito similar ao modelo utilizado pela AWS e pode ser implementada de 3 formas ligeiramente diferentes sendo que cada forma acrescenta características da forma anterior.

Uma verdadeira rede ‘Flat’ onde todas as máquinas virtuais compartilham um range de rede sem nenhuma forma de isolamento.

Utilizando Security Groups que utiliza filtros de endereços IP no camada OSI 3 para isolar as máquinas virtuais umas das outras.

Elastic IP e Elastic Load Balancing – O Citrix NetScaler disponibiliza um IP público e funcionalidades de balanceamento de carga sendo orquestrado completamente pelo CloudStack.

Todos os 3 modelos de rede básico, permite escala massiva pelo fato de que o range de IPs utilizados pelas Máquinas Virtuais estarem contidos dentro de um POD. A Zona pode ser escalada horizontalmente simplesmente adicionando mais PODs constituídos por Clusters de Hosts e seus Racks de Switches e Storage Primário associado. O modelo de rede avançado traz uma série de características que colocam uma enorme quantidade de poder nas mãos dos usuários finais. VLANs são o método padrão de isolamento mas o Software Defined Networking (SDN) oferecido pela Nicira, BigSwitch e em breve Midokura trazem a possibilidade de escala superando quaisquer limitações existentes em VLANs.

O CloudStack faz uma excelente utilização das Máquinas Virtuais de Sistema para proporcionar controle e automação de Storage e Rede. Um tipo de Máquina Virtual de Sistema é o CloudStack Virtual Router. A principal diferença entre a Rede Básica e a Avançada é que na Rede Avançada o usuário pode criar CloudStack Guest Networks sendo que para cada rede há um Virtual Router dedicado.

Esta Máquina Virtual de Sistema também provê os seguintes recursos: DNS & DHCP, Firewall, Cliente IPSEC VPN, Load Balancing, Source / Static NAT e Port Forwarding que podem ser totalmente configurados pelos usuários finais tanto pela Interface Web quanto pela CloudStack API.

Virtual Router Configuration Options Screen Shot

 

Virtual Router Static NAT Screen Shot

Quando um usuário cria uma nova Guest Network e então instancia uma Máquina Virtual nesta rede, as Máquinas Virtuais são ligadas à um Domínio de Broadcast L2 dedicado isolado por VLANs atrás de um Virtual Router. Os Virtual Routers tem controle total de todo o tráfico de entrada e saída da rede com uma conexão direta para a internet pública.

Regras de Firewall e Port Forwarding permitem o mapeamento em tempo real de IPs para qualquer número de Máquinas Virtuais internas. A funcionalidade de Balanceamento de Carga com Round-Robin, Least Connections e Source Based Algorithms baseado em Source Based, App Cookie ou LB Cookie Stickiness Policies podem ser configurados fora do CloudStack.

Outra poderosa funcionalidade no modelo de Rede Avançado é o Virtual Private Cloud (VPC). Um VPC permite ao usuário criar configurações de rede multi-tiered colocando as Máquinas Virtuais dentro de suas próprias VLANs. As ACLs permitem aos usuários controlar o fluxo de tráfego entre cada camada de rede e também da Internet. Um VPC típico pode conter 3 camadas de rede: Web, App e DB tendo somente a camada Web acesso à Internet.

VPCs também trazem recursos adicionais como VPN Site-2-Site permitindo assim uma conexão persistente com a infra-estrutura rodando em locais alternativos como por exemplo outros Data Centers ou até mesmo clouds públicas. Um VPC Private Gateway é um recurso dos administradores da cloud para a criação de um segundo gateway fora do VPC Virtual Router. Esta conexão pode ser utilizada para conectar as Máquinas Virtuais de um determinado VPC à outras infra-estruturas através, por exemplo, de uma rede MPLS ao invés da internet pública.

O CloudStack otimiza o uso da arquitetura de rede dentro de um Data Center, permitindo aos administradores da cloud dividir os diversos tipos de tráfego de rede e mapeá-los para diferentes conjuntos de Interfaces Bounded dentro de cada Host.

Existem quatro tipos de redes físicas que podem ser configuradas sendo possível a utilização de somente um único dispositivo de rede físico ou múltiplos dependendo do número disponível no Host. Os quatro tipos de redes são:

Management: Usada pelos servidores CloudStack Management e vários outros componentes dentro do sistema, por vezes referido como Orchestration Network.

Guest: Usada por todas as Máquinas Virtuais dos clientes quando estas se comunicam com outras Máquinas Virtuais do mesmo cliente ou dispositivos de gateway tais como Virtual Routers, Juniper SRX Firewalls, F5 Load Balancers, etc. Em uma configuração avançada de rede, podem ser criadas múltiplas redes do cliente, permitindo que certas interfaces de rede sejam dedicadas à um usuário ou função específica.

Public: Em uma configuração de rede avançada, a Rede Pública liga os Virtual Routers à Internet Pública. Ela só existe numa rede básica quando um Citrix NetScaler é utilizado para fornecer endereços IPs elásticos e serviços balanceamento de carga elásticas.

Storage: Utilizada pelo sistema de Storage Secundário de Máquina Virtual e Host quando há conexão ao dispositívo de Storage Secundário. Isso permite a otimização de tráfego utilizados para a instalação de novas Máquinas Virtuais a partir de Templates e, em particular, para lidar com o tráfego de Snapshots que pode causar um tráfego intenso na rede sem afetar negativamente o tráfego das redes Guest & Managment.

O tráfego associado ao Storage Primário onde os discos das Máquinas Virtuais reais estão armazenados, também podem ser isolados utilizando Interfaces de Rede dedicados ou HBAs, etc, possibilitando assim, como mostrado, um ótimo desempenho e alta disponibilidade.

Network Service Providers

Além do Virtual Router e do VPC Virtual Router, o CloudStack também pode aproveitar o poder do hardware real, trazendo ainda mais funcionalidade e maior escala. Os dispositivos atualmente suportados são: Citrix NetScaler, F5 Big IP e Juniper SRX havendo muitos outros à caminho para as próximas versões. Uma vez que o dispositivo foi integrado pelos administradores da cloud, os usuários têm controle dos recursos através da Interface Web ou da API. Por exemplo, se um Juniper SRX é adicionado e um usuário configura uma regra de firewall dentro do CloudStack, o próprio CloudStack utiliza a API do Juniper SRX para aplicar essa configuração no disposítivo físico.

Quando o Citrix NetScaler é utilizado, além do Balanceamento de carga, NAT e Port Forwarding, é possível também utilizar o AutoScaling. O AutoScaling é um método de monitorar o desempenho das Máquinas Virtuais existentes dos clientes e, em seguida, agregar Máquinas Virtuais automaticamente quando há um aumento da carga. Após a carga ser reduzida, as Máquinas Virtuais que foram adicionadas podem ser destruídas, fazendo com que a utilização e seus custos sejam reduzidos para um nível básico. Este nível de flexibilidade e escalabilidade é uma força motriz essencial na adoção de cloud computing.

Gerenciamento

O CloudStack é realmente muito fácil de configurar e administrar, graças à sua ótima interface gráfica de usuário, API e ferramentas de linha de comando como o CloudMonkey. O wizard irá leva-lo através da configuração e implantação de sua primeira Zona, Rede, POD, Cluster, Host e Storage o que significa que pode ser instalado e funcionando em questão de horas.

Admin UI Screen Shot

Um sistema RBAC (Role Based Access Control) apresenta diferentes níveis de usuários com recursos a que têm direito e as regras padrão podem ser ajustadas conforme a necessidade de acesso de cada usuário. A autenticação também pode ser passada para um sistema LDAP permitindo a integração com os sistemas corporativos, incluindo OpenLDAP e Microsoft Active Directory.

Administradores podem configurar novas contas de usuários que são agrupados em domínios permitindo uma estrutura hierárquica. Ao agrupar os usuários em domínios, os administradores podem ter certeza de sub-conjuntos de infra-estrutura disponíveis para um determinado grupo de usuários.

Um conjunto de parâmetros do sistema chamado Global Settings, permite aos administradores controlarem todos os recursos e ajustes de configuração, como limites e thresholds, alertas por smtp e toda uma gama de outras configurações e, novamente, a partir de uma interface fácil de ser utilizada.

O Service Offerings permite à administradores configurar os parâmetros que controlam o ambiente de usuários finais, como número de vCPUs, RAM, largura de banda e de recursos, Hardware preferencial com base no tipo de sistema operacional da Máquina Virtual, Storage em tiers e muito mais.

Os administradores tem total controle sobre a infra-estrutura e podem iniciar live-migration de qualquer Máquina Virutal entre Hosts no mesmo Cluster. Máquinas Virtuais desligadas podem ser migradas entre diferentes Clusters movendo seus discos associados à um Storage diferente. Os dispositivos de Storage e Hosts podem ser tirados do ar para manutenção e atualizações e os administradores podem direcionar as Máquinas Virutais para um determinado conjunto de Hosts utilizando a API ou Tags.

Experiência do Usuário

Um ponto forte do CloudStack é a bem pensada Interface Gráfica do Usuário. A maior parte dos recursos disponíveis para os usuários finais estão disponíveis através da interface gráfica com apenas alguns dos mais avançados e novos recursos disponíveis através da API. Devido a este fato, é muito fácil de aprender à utilizar a Interface. Novos usuários podem obter suas primeiras Máquinas Virtuais instaladas e funcionando em questão de minutos a partir de seu primeiro login.

User UI Screen Shot

O processo para a criação de uma nova Máquina Virtual é tratado por um assistente gráfico muito intuitivo que o guiará durante o processo em seis passos:

Escolha um Template pré-fabricado na Zona de Disponibilidade ou escolha montar um ISO para uma instalação customizada completa, escolha um Compute Offering que controla a quantidade de CPU, RAM, largura de banda de rede e Storage em tiers, adicione um volume adicional de dados e defina seu tamanho, adicione uma Rede existente ou um VPC ou, se nenhum deles está disponível, crie uma nova Rede. A seguir atribua um nome que também será usada para o hostname das Máquinas Virtuais e, em seguida, inicie a Máquina Virtual.

Uma vez que os usuários têm suas Máquinas Virtuais em funcionamento é possível então começar a explorar outros recursos disponíveis para elas. Os Snapshots fornecem uma maneira simples e eficaz para um usuário proteger suas Máquinas Virtuais tirando fotografias instantâneas de qualquer volume de disco ou, caso deseje, é possível programar para que seja feito Snapshots automáticos de hora em hora, dia, semana, etc.

Os Templates privados personalizados podem ser criados a partir de qualquer volume ou de um Snapshot associado, permitindo a replicação rápida e fácil de uma Máquina Virtual em particular podendo lançar diversas instâncias caso seja necessário. Volumes de dados podem ser facilmente desmontados a partir de uma Máquina Virtual e montados em outra em questão de segundos.

Volumes, Snapshots e Templates podem ser exportados a partir da cloud e então serem utilizados para recriar o ambiente do usuário dentro de uma outra cloud reduzindo preocupações de estar preso a um fornecedor em particular.

Por que escolher o CloudStack?

O CloudStack tem um histórico comprovado tanto em ambientes Enterprise quanto em Service Providers, estando em operação em algumas das maiores clouds do mundo. Eu pessoalmente, por estar envolvido em um grande número de implementações em 3 continentes diferentes, ao passo que qualquer grande projeto de TI teria dificuldades durante o percurso de implementação de uma cloud, o CloudStack caiu como uma luva e na hora certa. Isto se dá devido à natureza de um produto maduro, um conjunto de concepção bem desenvolvida e metodologias de implantação.

Ao contrário de outras tecnologias de cloud de código aberto, o CloudStack é verdadeiramente um projeto único com um conjunto comum de objetivos e metas, sendo conduzido por uma comunidade muito ativa e apaixonada. A lista de novos recursos que estão sendo desenvolvidos é realmente impressionante. Segue alguns exemplos:

Um novo framework para Storage – trazendo um melhor controle sobre o Storage, permitindo o Storage Primário ser extendido por todo o Data Center e operações de IOP/s podem ser controladas no nível da Máquina Virtual. O XenMotion do XenServer permitirá a migração live de volumes das Máquinas Virtuais. Recursos dedicados – Permite que um sub-conjunto da infra-estrutura seja dedicado à um usuário em particular removendo todos os argumentos anti-cloud referentes ao compartilhamento de Servidores / Rede / Storage, etc. Suporte ao Cisco Virtual Network Management Center (VNMC). Vários IPs por Interfaces de Rede Virtual – ideal para Máquinas Virutais utilizadas como servidor web com vários certificados SSL. S3 Backed Secondary Storage – permite o Storage Secundário se estender à uma região inteira. Dynamic Scaling de CPU e RAM – Permite ao usuário aumentar ou diminuir dinamicamente a quantidade de CPU e memória RAM disponível para a Máquina Virtual. Suporte para Midokura Software Defined Networking. Isolamento adicional dentro de uma VLAN – Usando um PVLANs (VMware) ou grupos de segurança (Xen e KVM), Máquinas Virtuais em uma determinada VLAN pode ser isolada permitindo Multi-tiered Guest Networks em uma única VLAN.

Pontos fortes do CloudStack

  • Escalabilidade massiva comprovada – Clouds reais com + de 50.000 Hosts já em produção
  • Implantação em produção pronta e funcionando em questão de dias, não de meses
  • Excelente documentação – Atualização totalmente suportada para todas as versões anteriores
  • Interface gráfica web polida e console de acesso para as Máquinas Virtuais
  • Projeto único e coerente com a visão comum para construir a melhor plataforma IaaS
  • Suporte à multiplos SDNs
  • Não há necessidade de grandes times de DevOps para implantar e gerenciar
  • Apoiado pela Apache Software Foundation
  • Compatibilidade com AWS

 

Sobre o Autor

Geoff Higginbottom é commiter do Apache CloudStack e CTO da ShapeBlue, uma consultoria estratégica em cloud. Geoff passa a maior parte de seu tempo criando infra-estruturas de cloud privada e pública para empresas de telecomunicações, ISPs e Enterprise com base no Apache CloudStack e Citrix CloudPlatform.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply