Versão Final » History » Version 15

Beraldo Leal, 30 Apr 2012 18:12

1 1 Marco Gomes
h1. Ciclo 2 - Relatório final
2 1 Marco Gomes
3 1 Marco Gomes
h2. Resumo
4 1 Marco Gomes
5 1 Marco Gomes
O conceito de computação em nuvem (em inglês, cloud computing) refere-se à utilização da memória, capacidade de armazenamento e poder computacional dos computadores interligados por meio da Internet, seguindo o princípio da computação em grade. Com a subutilização destes recursos computacionais em equipamentos modernos, surgiu a necessidade de compartilhar recursos de forma isolada, tornando assim uma máquina física em várias máquinas virtuais, cada uma servindo para um determinado propósito e com seus recursos bem definidos, tentando obter o máximo de aproveitamento dos recursos computacionais.
6 1 Marco Gomes
7 1 Marco Gomes
Prover uma infraestrutura de máquinas virtuais para clientes de forma escalável é hoje uma necessidade mundial e um desafio tecnológico. Este relatório tem por objetivo exibir as características e requisitos necessários para instalar e configurar uma infraestrutura de Cloud para prover máquinas virtuais aos usuários do projeto EduCloud.
8 1 Marco Gomes
9 1 Marco Gomes
h2. Introdução
10 1 Marco Gomes
11 1 Marco Gomes
O projeto EduCloud é uma iniciativa da Universidade Estadual Paulista - UNESP, em parceria com a secretaria de educação do estado de São Paulo, Intel e ACCEPT. Esta iniciativa visa fornecer uma infraestrutura de computação em nuvem para hospedar sistemas de apoio ao ensino para as Universidades e Escolas públicas do Brasil.
12 1 Marco Gomes
13 1 Marco Gomes
A maior vantagem da computação em nuvem é a possibilidade de utilizar softwares sem que estes estejam instalados no computador. Mas há outras vantagens[1]:
14 1 Marco Gomes
15 1 Marco Gomes
* na maioria das vezes o usuário não precisa se preocupar com o sistema operacional e hardware que está usando em seu computador pessoal, podendo acessar seus dados na "nuvem computacional" independentemente disso;
16 1 Marco Gomes
* as atualizações dos softwares são feitas de forma automática, sem necessidade de intervenção do usuário;
17 1 Marco Gomes
* o trabalho corporativo e o compartilhamento de arquivos se tornam mais fáceis, uma vez que todas as informações se encontram no mesmo "lugar", ou seja, na "nuvem computacional";
18 1 Marco Gomes
* os softwares e os dados podem ser acessados em qualquer lugar, bastando que haja acesso à Internet, não estando mais restritos ao ambiente local de computação, nem dependendo da sincronização de mídias removíveis.
19 1 Marco Gomes
* o usuário tem um melhor controle de gastos ao usar aplicativos, pois a maioria dos sistemas de computação em nuvem fornece aplicações gratuitamente e, quando não gratuitas, são pagas somente pelo tempo de utilização dos recursos. Não é necessário pagar por uma licença integral de uso de software;
20 1 Marco Gomes
* diminui a necessidade de manutenção da infraestrutura física de redes locais cliente/servidor, bem como da instalação dos softwares nos computadores corporativos, pois esta fica a cargo do provedor do software em nuvem, bastando que os computadores clientes tenham acesso à Internet;
21 1 Marco Gomes
* a infraestrutura necessária para uma solução de cloud computing é bem mais enxuta do que uma solução tradicional de hosting ou collocation, consumindo menos energia, refrigeração e espaço físico e consequentemente contribuindo para preservação e uso racional dos recursos naturais.
22 1 Marco Gomes
23 1 Marco Gomes
Para implementar uma infraestrutura de nuvem, o Núcleo de Computação Ciêntifica - NCC, da UNESP pesquisou as principais ferramentas livres[2] do mercado para que juntas, executem esta tarefa. 
24 1 Marco Gomes
25 1 Marco Gomes
Para prover uma infraestrutura de nuvem, precisamos atender as seguintes necessidades:
26 1 Marco Gomes
27 1 Marco Gomes
# Disponibilizar máquinas virtuais de acordo com a demanda de forma automática e rápida, com diferentes configurações de memória, disco e cpu;
28 1 Marco Gomes
# Disponibilizar para estas máquinas virtuais, unidades de armazenamento de dados;
29 1 Marco Gomes
# Ter um controle de acesso de usuários e grupos que podem utilizar estes recursos, bem como, uma "quota" de recursos por usuário/grupo;
30 1 Marco Gomes
# Armezar as máquinas virtuais e os dados de forma descentralizada, permitindo assim escalar facilmente;
31 1 Marco Gomes
32 1 Marco Gomes
Alguns softwares existem para suprir estas necessidades. No capítulo 1 falaremos sobre o projeto OpenStack[3], responsável por disponibilizar uma infraestrutura de máquinas virtuais e unidades de armazenamento para as máquinas virtuais. No capítulo 2 falaremos sobre o projeto Hadoop[4], responsável por *[preencher aqui]*. No capítulo 5, falaremos sobre os balanceadores de conexões e de máquinas virtuais, fundamental para balancear a carga da nuvem entre os nós "workers", no capítulo 6 falaremos sobre o OCCI[5], uma interface de comunicação entre os serviços de cloud.
33 1 Marco Gomes
34 1 Marco Gomes
h2. OpenStack
35 1 Marco Gomes
36 1 Marco Gomes
O OpenStack é uma coleção de projetos "open source" que servem para executar uma infraestrutura de computação em nuvem e armazenamento distribuído. A empresa Rackspace[6] e a NASA[7] são os principais contribuidores do conjunto de projetos. Hoje o consórsio possui mais de 100 membros, dentre as principais temos: rackspace, AT&T, NASA, DreamHost, Safew Labs, Citrix, Dell, AMD, Intel, Canonical, Yahoo e HP. O projeto mantém uma página[8] com uma lista dos principais contribuidores do projeto.
37 1 Marco Gomes
38 1 Marco Gomes
No OpenStack, existem 3 principais componentes:
39 1 Marco Gomes
40 1 Marco Gomes
* Compute Infrastructure (Nova)
41 1 Marco Gomes
42 1 Marco Gomes
Nova é um controlador de poder computacional para o OpenStack. Todas as atividades necessárias durante o ciclo de vida de uma instância (uma máquina virtual sendo executada) com o OpenStack são gerenciadas pelo Nova. Isto faz do Nova uma plataforma de gerenciamento que gerencia recursos computacionais, rede, autorização e escabilidade. O Nova não provê nenhuma funcionalidade de virtualização por si só; ele usa a interface libvirt[9] para interagir com os hypervisors[10] suportados.
43 1 Marco Gomes
44 1 Marco Gomes
* Storage Infrastructure (Swift)
45 1 Marco Gomes
46 1 Marco Gomes
O Swift provê um armazenamento para os objetos (dados) de forma distribuída. Ele é análogo ao serviço da Amazon: Simple Storage Service (S3)[11]. O Swift é capaz de armazenar bilhões de objetos distribuindos entre os nós. Ele possui um mecanismo de redundância e failover e é capaz de armazenar e transmitir os dados. É extremamente escalável em termos de tamanho (petabytes) e capacidade (número de objetos).
47 1 Marco Gomes
48 1 Marco Gomes
* Imaging Service (Glance)
49 1 Marco Gomes
50 1 Marco Gomes
O Glance é um sistema de busca e recuperação de imagens de máquinas virtuais. Ele é responsável por gerenciar as imagens das máquinas virtuais, mas armazena elas no sistema de arquivos local ou via o OpenStack Object Store - Swift.
51 1 Marco Gomes
52 1 Marco Gomes
Outros componentes, como um front end web (Horizon) e um serviço de autenticação (keystone), também fazem parte do projeto. O OpenStack está disponível no site do projeto[10] e está dispobilizado sobre a licença Apache[11].
53 1 Marco Gomes
54 1 Marco Gomes
O OpenStack atende as necessidades do projeto EduCloud por se tratar de um conjunto de ferramentas que permitem montar uma infra estrutura de cloud utilizando ferramentas livres. Cada subprojeto do OpenStack tem suas próprias caracterias, mas de modo geral as principais vantagens do openstack são:
55 1 Marco Gomes
56 1 Marco Gomes
* Comunidade ativa;
57 1 Marco Gomes
* Licenca Livre;
58 1 Marco Gomes
* API com suporte a REST nativo;
59 1 Marco Gomes
* Projeto com apoio de grande empresas;
60 1 Marco Gomes
* API com "rate limite";
61 1 Marco Gomes
* VNC proxy via web browser;
62 1 Marco Gomes
63 1 Marco Gomes
As principais desvantagens são:
64 1 Marco Gomes
65 1 Marco Gomes
* Documentação dispersa;
66 1 Marco Gomes
* Muitos subprojetos;
67 1 Marco Gomes
* Difícil de implementar;
68 1 Marco Gomes
69 1 Marco Gomes
h3. Requisitos de hardware
70 1 Marco Gomes
71 3 Beraldo Leal
O OpenStack é uma infraestrutura complexa que exige um conjunto mínimo de algumas máquinas. Embora uma única máquina pode ser utilizada para fins de desenvolvimento, os requisitos mínimos para um ambiente de produção exige uma quantidade maior de máquinas.
72 3 Beraldo Leal
73 8 Beraldo Leal
As recomendações de hardware foram retiradas do site do projeto OpenStack[11]. Abaixo temos 3 propostas de arquiteturas para o projeto EduCloud, com suas respectivas configurações:
74 1 Marco Gomes
75 8 Beraldo Leal
76 1 Marco Gomes
h4. Arquitetura proposta - mínima
77 1 Marco Gomes
78 9 Beraldo Leal
!https://ncc.unesp.br/its/attachments/189/openstack_small.png! 
79 1 Marco Gomes
80 9 Beraldo Leal
Nesta arquitetura proposta, temos as seguintes máquinas:
81 9 Beraldo Leal
82 8 Beraldo Leal
* 05 Computer Nodes;
83 8 Beraldo Leal
* 03 Storage Nodes;
84 8 Beraldo Leal
* 04 Standard Servers (Storage Proxy, Nova Server, API Server e Network Controller)
85 8 Beraldo Leal
* 04 Switches 10 GBoE;
86 1 Marco Gomes
87 9 Beraldo Leal
Com as seguintes configurações:
88 9 Beraldo Leal
89 9 Beraldo Leal
* Computer Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 16 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
90 9 Beraldo Leal
* Storage Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 16 GB RAM | 24 2T SATA | 2 x 10GBoE NICs
91 9 Beraldo Leal
* Standard Servers: 2 x 64 bits QuadCore x86 CPU with HT support | 16 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
92 3 Beraldo Leal
93 10 Beraldo Leal
h4. Arquitetura proposta - caso médio
94 10 Beraldo Leal
95 10 Beraldo Leal
!https://ncc.unesp.br/its/attachments/190/openstack_medium.png!
96 10 Beraldo Leal
97 10 Beraldo Leal
Nesta arquitetura proposta, temos as seguintes máquinas:
98 10 Beraldo Leal
99 11 Beraldo Leal
* 10 Computer Nodes;
100 11 Beraldo Leal
* 05 Storage Nodes;
101 12 Beraldo Leal
* 08 Standard Servers (Storage Proxy, Nova Server, API Server, Network Controller, VPN, etc..)
102 10 Beraldo Leal
* 04 Switches 10 GBoE;
103 10 Beraldo Leal
104 10 Beraldo Leal
Com as seguintes configurações:
105 10 Beraldo Leal
106 12 Beraldo Leal
* Computer Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
107 12 Beraldo Leal
* Storage Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 24 2T SATA | 2 x 10GBoE NICs
108 12 Beraldo Leal
* Standard Servers: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
109 1 Marco Gomes
110 13 Beraldo Leal
h4. Arquitetura proposta - melhor caso
111 13 Beraldo Leal
112 14 Beraldo Leal
!https://ncc.unesp.br/its/attachments/191/openstack_big.png!
113 13 Beraldo Leal
114 13 Beraldo Leal
Nesta arquitetura proposta, temos as seguintes máquinas:
115 13 Beraldo Leal
116 15 Beraldo Leal
* 20 Computer Nodes;
117 15 Beraldo Leal
* 10 Storage Nodes;
118 13 Beraldo Leal
* 08 Standard Servers (Storage Proxy, Nova Server, API Server, Network Controller, VPN, etc..)
119 15 Beraldo Leal
* 08 Switches 10 GBoE;
120 13 Beraldo Leal
121 13 Beraldo Leal
Com as seguintes configurações:
122 13 Beraldo Leal
123 13 Beraldo Leal
* Computer Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
124 13 Beraldo Leal
* Storage Nodes: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 24 2T SATA | 2 x 10GBoE NICs
125 13 Beraldo Leal
* Standard Servers: 2 x 64 bits QuadCore x86 CPU with HT support | 32 GB RAM | 2 x 2TB SATA | 2 x 10GBoE NICs
126 13 Beraldo Leal
127 1 Marco Gomes
h3. Tecnologias alternativas
128 1 Marco Gomes
129 1 Marco Gomes
Várias tecnologias podem ser utilizadas para provêr uma infraestrutura de máquinas virtuais. Algumas delas na forma de solução livre, podendo ser instalada em infraestrutura própria, e outras na forma de serviço web, sendo executada na infraestrutura da empresa que a provê.
130 1 Marco Gomes
131 1 Marco Gomes
Entre as tecnologias livres mais conhecidas, temos:
132 1 Marco Gomes
133 1 Marco Gomes
# abiquo (Sua versão community);
134 1 Marco Gomes
# nimbus;
135 1 Marco Gomes
# openstack;
136 1 Marco Gomes
# opennebula;
137 1 Marco Gomes
# eucalyptus;
138 1 Marco Gomes
139 1 Marco Gomes
Entre as tecnologias funcionando como serviço web, temos:
140 1 Marco Gomes
141 1 Marco Gomes
# Amazon Web Service;
142 1 Marco Gomes
# Linode;
143 1 Marco Gomes
# Rackspace;
144 1 Marco Gomes
# Gogrid;
145 1 Marco Gomes
146 1 Marco Gomes
Estas são apenas as principais alternativas que atendem os requisitos do projeto, levando em consideração popularidade, quantidade de downloads/mês e nível de maturidade do projeto.
147 1 Marco Gomes
148 1 Marco Gomes
h2. Referências
149 1 Marco Gomes
150 1 Marco Gomes
# "O que é computação em nuvem?":http://www.infowester.com/cloudcomputing.php
151 1 Marco Gomes
# "Definição de software livre":http://www.gnu.org/philosophy/free-sw.html
152 1 Marco Gomes
# http://www.gnu.org/philosophy/free-sw.html
153 1 Marco Gomes
# "Projeto Hadoop":http://hadoop.apache.org/
154 1 Marco Gomes
# "Open Cloud Compute Interface - OCCI":http://occi-wg.org/
155 1 Marco Gomes
# "Rackspace":http://rackspace.com/
156 1 Marco Gomes
# "Nasa":http://www.nasa.gov/
157 1 Marco Gomes
# "OpenStack - Empresas Participantes":http://www.openstack.org/community/companies/
158 1 Marco Gomes
# "The virtualization API":http://libvirt.org/
159 1 Marco Gomes
# "Hypervisor":http://en.wikipedia.org/wiki/Hypervisor
160 1 Marco Gomes
# "Projeto OpenStack":http://openstack.org/
161 1 Marco Gomes
# "Apache License":http://www.apache.org/licenses/LICENSE-2.0
162 1 Marco Gomes
# "Amazon Simple Storage Service":http://aws.amazon.com/s3/