minicurso 7 – introdução a plataformas de computação em nuvem

131
III CBSoft Congresso Brasileiro de Software: Teoria e Prática Natal-RN, 27 de setembro de 2012

Upload: trinhcong

Post on 07-Jan-2017

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

III CBSoft – Congresso Brasileiro de

Software: Teoria e Prática

Natal-RN, 27 de setembro de 2012

Page 2: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Prof. Frederico Lopes (UFRN)

* Prof. André Almeida (IFRN)

* Profa. Thais Batista (UFRN)

* Everton Cavalcante (UFRN)

* Renato Gondim (UFRN)

* Thomas Diniz (UFRN)

* Thiago Cesar (UFRN)

* Arthur Cassio (UFRN)

2 / 130

Page 3: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando aplicações com BeanStalk

* Armazenando arquivos com S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

3 / 130

Page 4: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando aplicações com BeanStalk

* Armazenando arquivos com S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

4 / 130

Page 5: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* 1970s

* Monolítico

* Mainframes

* 1980s

* Cliente-servidor

* Computadores pessoais

* 1990s

* Internet

* 2000s

* SOA e Serviços Web

* Computação móvel

* Alta diversidade de

dispositivos móveis

* Processadores potentes

* 2010s

* Computação em nuvem

5 / 130

Page 6: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Era atual da Computação

Poderosos processadores

multicore

Metodologias de software

Poder da virtualização

sobre hardware

Maior largura de banda para comunicação

Proliferação de

dispositivos

Explosão de domínios de aplicações

Fonte

: Ram

am

urt

hy a

nd M

adura

i. W

ipro

Chennai 2011

6 / 130

Page 7: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Computação em Nuvem

modelo computacional para acesso conveniente,

sob demanda e de qualquer localização, a uma

rede compartilhada de recursos computacionais

(redes, servidores, armazenamento, aplicativos e

serviços) que possam ser prontamente

disponibilizados como serviços e acessados com um

esforço mínimo de gestão ou de interação com o

provedor de serviços

P. Mell and T. Grance (2011) The NIST Definition of Cloud Computing. NIST, EUA.

7 / 130

Page 8: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Computação em Nuvem

A nuvem é um grande reservatório de recursos virtualizados

facilmente utilizáveis e acessíveis (como hardware, plataformas

de desenvolvimento e/ou serviços). Esses recursos podem ser

dinamicamente reconfigurados para ajustar a carga (escala)

variável do sistema, permitindo também um uso ótimo dos

recursos. Tal reservatório é geralmente explorado por um

modelo pay-per-use no qual as garantias são oferecidas por um

Provedor de Infraestrutura por meio de SLAs (Service Level

Agreement - Acordo de Nível de Serviço)

L.M. Vaquero et al., “A break in the clouds: towards a cloud definition”,

ACM SIGCOMM Computer Communication Review, 2008

8 / 130

Page 9: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Google Docs/Drive

Documentos, planilhas e apresentações sem precisar

instalar software, acessados via browser (pode ter

computador de baixo custo)

9 / 130

Page 10: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Google Docs/Drive

* Edição de documentos,

criação de pastas, etc.

* Compartilhamento on-line

* Acesso via web

* Atualização em tempo real

10 / 130

Page 11: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* O que há de novo?

*Modelo de aquisição

* Baseado na aquisição de serviços

*Modelo de negócios

* Pay-per-use

*Modelo de acesso

* Qualquer dispositivo através da Internet

*Modelo técnico

* Escalabilidade, elasticidade, dinamicidade, ...

11 / 130

Page 12: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* O usuário não precisa ter o hardware, ele aluga da

nuvem

* Consumo de recursos realizado através de serviços

* Armazenamento

* Processamento

* ...

* Necessidade de um modelo de gestão e

comercialização de serviços

12 / 130

Page 13: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Quebra de paradigma

recursos

computacionais

proprietários

recursos

computacionais

em outro local

13 / 130

Page 14: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Datacenter

14 / 130

Page 15: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Apresentar:

*Conceitos básicos de Computação em Nuvem

*Detalhes de uso de serviços das plataformas

* Amazon Web Services (AWS) – nuvem pública

* OpenStack – nuvem privada

* Relação com o Minicurso 8

* Foco na implantação de uma aplicação real em

diferentes plataformas de nuvem

15 / 130

Page 16: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando aplicações com o BeanStalk

* Armazenamento de arquivos no Amazon S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

16 / 130

Page 17: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Características essenciais (NIST)

* Serviço sob demanda

* Consumidor deve provisionar os recursos de

computação automaticamente e de acordo com a

necessidade

*Amplo acesso à rede

* Recursos disponíveis através da rede

* Uso a partir de diferentes dispositivos

(PC, tablets, smartphone, etc.)

17 / 130

Page 18: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Características essenciais (NIST)

*Agrupamento de recursos

* Recursos agrupados e dinamicamente atribuídos para

atender múltiplos consumidores

* Serviço mensurado

* Recursos controlados, otimizados

* Transparência para fornecedor e consumidor

18 / 130

Page 19: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Outras características

* Elasticidade rápida

* Recursos podem ser provisionados e liberados

elasticamente, de acordo com a demanda

up- and down-scaling

19 / 130

Page 20: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Aspectos econômicos

*Redução de custos

* Menos custos com hardware, software, técnicos, ...

*Pay-per-use

* Cliente paga pelo que usa

* Semelhante às nossas contas de água, luz, e telefone

*Meio ambiente

* Menor consumo de energia

* Menos hardware subutilizado

20 / 130

Page 21: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Modalidades de serviços

* IaaS – Infrastructure as a Service

*PaaS – Platform as a Service

* SaaS – Software as a Service

Fonte: Ibm.com

Fonte: Ibm.com

21 / 130

Page 22: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Modalidades de serviços

* IaaS – Infrastructure as a Service

* VMs, rede, armazenamento, etc.

* Virtualização

* Elasticidade e balanceamento de carga

* Cliente detém controle dos recursos

* Ex.: AWS, VirtualBox, VMWare, OpenStack, ...

Fonte: Ibm.com

22 / 130

Page 23: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Modalidades de serviços

*PaaS – Platform as a Service

* Controle sobre aplicações instaladas

* Servidores de aplicação, SGBDs, etc.

* Clientes usam linguagens e

ferramentas proprietárias

* Aplicações dependentes de plataforma

* Ex.: Google App Engine (GAE),

Azure, Facebook platform

Fonte: Ibm.com

23 / 130

Page 24: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Modalidades de serviços

* SaaS – Software as a Service

* Alto nível de abstração

* Fornece aplicações e não recursos

computacionais

* Sem gerência e controle da infraestrutura da nuvem (redes, VMs, SOs, etc.)

* Cliente não precisa instalar e administrar software

* Ex.:

*Genéricos: Dropbox, Google Calendar, Yahoo Mail, Gmail, ...

* Coorporativos: Salesforce.com, Sugar CRM, ...

Fonte: Ibm.com

24 / 130

Page 25: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

25 / 130

Page 26: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Modalidades de instalação

*Nuvem privada

*Nuvem pública

*Nuvem comunitária

*Nuvem híbrida

Fonte: Ibm.com

26 / 130

Page 27: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Nuvem Privada

*Uso exclusivo de uma

organização

* Nuvem Pública

*Disponibilizada

livremente e acessada

por qualquer cliente

Fonte: Ibm.com

27 / 130

Page 28: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Nuvem Comunitária

*Compartilhamento de uma

nuvem entre diversas

empresas

* Comunidade específica

* Ex: Uma nuvem do governo

federal pode ser compartilhada

entre os ministérios

Fonte: cerch.org

28 / 130

Page 29: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Nuvem Híbrida

*Composição de duas ou

mais nuvens

* Públicas e/ou privadas

e/ou comunitárias

Fonte: Ibm.com

29 / 130

Page 30: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Objetivos similares

* Redução de custos

* Aumento de flexibilidade e confiabilidade via uso

de hardware hospedado por terceiros

* Distinções

* Alocação de recursos

* Foco

* Modelo de programação

* Segurança

30 / 130

Page 31: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

GRID NUVEM

Distribuição uniforme de

recursos

Recursos alocados sob

demanda

Foco na comunidade científica Foco mais comercial

Grids em geral usam o modelo

de programação em lotes

(batch)

Baseado em serviços

Segurança baseada no

protocolo GSI

(Grid Security Infrastructure)

Segurança sem modelo

definido

31 / 130

Page 32: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Fonte

: The F

utu

re o

f Clo

ud C

om

puti

ng.

Technic

al re

port

.

Info

rmati

on,

Socie

ty a

nd M

edia

Euro

pean C

om

mis

sion

32 / 130

Page 33: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando Aplicações com BeanStalk

* Armazenamento de arquivos no Amazon S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

33 / 130

Page 34: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

34 / 130

Page 35: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

35 / 130

Page 36: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* A Amazon foi pioneira da

Computação em Nuvem, em 2006

* A empresa contava com uma grandiosa

infraestrutura para atender a períodos sazonais

como o Natal, infraestrutura essa que ficava ociosa

nos outros meses

* Iniciou os serviços de Computação em Nuvem para

alugar o parque de hardware ocioso:

* S3 (Simple Storage Service) – armazenamento de arquivos

* EC2 (Elastic Compute Cloud) – máquinas virtuais em Linux

36 / 130

Page 37: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acessar aws.amazon.com

* Clicar em Sign UP e seguir as instruções de

cadastramento

* Para cadastramento é necessário fornecer

número de cartão internacional

* O usuário é cobrado apenas pelo que utiliza

* Ao final o usuário receberá uma ligação

telefônica para finalizar o cadastramento

37 / 130

Page 38: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Serviços de processamento

*Amazon EC2

* Capacidade Computacional

*MapReduce

* Processamento intensivo (Data Mining, Indexing,

Machine Learning)

*Amazon Elastic Load Balancing

* Balanceamento personalizado

38 / 130

Page 39: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Serviços de bancos de dados

*Amazon RDS

* Banco de dados relacional (SQL Server, Oracle e

MySQL)

*Amazon DynamoDB e Amazon SimpleDB

* Banco de dados NoSQL (não relacional)

*Amazon ElastiCache

* Gerenciamento de memória do tipo cache em nuvem

39 / 130

Page 40: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Implantação e gerenciamento

*Amazon Identity and Access Management (IAM)

* Gerenciamento de acesso e identidades

*Amazon CloudWatch

* Monitoramento personalizável de recursos de nuvem

*Amazon BeanStalk

* Implantação de aplicações em nuvem

*Amazon CloudFormation

* Configuração de recursos AWS para serem oferecidos

40 / 130

Page 41: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Mais alguns serviços:

*Rede

* Virtual Private Cloud (VPC) – Criação de infraestrutura para uso em termos de nuvem privada

* Route 53 - DNS

*Armazenamento

* Amazon S3

* Serviços de aplicação

* Amazon SWF – uso de workflows

* Amazon SES – envio de e-mails

41 / 130

Page 42: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Cada serviço possui sua própria tabela de

custo, que podem variar, de tráfego de

acesso, horas de instância, número de

implantações

* Para novos usuários a AWS criou a Free Tier,

que permite o uso gratuito de alguns serviços,

com limitações

*Detalhes: http://aws.amazon.com/free/

42 / 130

Page 43: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Implantar o Joomla!

* Criar máquina no Amazon EC2 para instalação

* Configurar acesso a banco de dados

* Realizar a implantação da aplicação

43 / 130

Page 44: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Software para gerenciamento de conteúdo

* Escrito em PHP

* Disponível em:

http://www.joomla.org/download.html

* Versão instalada: 2.5.6

44 / 130

Page 45: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* O Amazon EC2 utiliza o conceito de imagens:

* na imagem definimos o sistema operacional e o

software que pode vir pré-instalado

* O usuário deve escolher qual o tipo de imagem

deseja criar (algumas tem custo de utilização)

* Exemplos

* Lamp Stack – Imagem com infraestrutura para

desenvolvimento de aplicações PHP

* https://aws.amazon.com/marketplace/pp/B007IX7AEG/ref

=brs_res_product_title

45 / 130

Page 46: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Para consultar os preços e configurações de

imagens disponíveis, acessar o AWS

Marktplace

* http://aws.amazon.com/marketplace

* Iremos utilizar a instância básica oferecida

pela Amazon, sem custo de utilização da

imagem

46 / 130

Page 47: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Para acessar as máquinas criadas é necessário

definir um par de chaves para acesso.

*Par de chaves (pública e privada) que permitem

realizar a autenticação do usuário ao acessar a

máquina virtual (instância)

* Definição do par de chaves de acesso:

*Acessar o EC2 Console

* Escolher a opção Key Pairs -> Create Key Pair

* Será iniciado o download da chave de acesso

47 / 130

Page 48: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

48 / 130

Page 49: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Região

* Define em qual região será implantado a máquina,

onde os preços variam de acordo com a região

* Escolheremos a região US EastVirginia

* Amazon disponibilizou a região São Paulo, porém

possui preços mais altos do que os praticados nos

estados americanos

* EC2 Type

* Escolheremos o tipo mais básico (t1.micro)

* Usaremos a chave criada

49 / 130

Page 50: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* EC2 Management Console

DNS público

50 / 130

Page 51: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Conectar-se à instância usando SSH

*Comando:

* ssh –i <chave>.pem ec2-user@<dnspublico>

*Para conectar via browser, indicar o local onde

está armazenada a chave

*A chave precisa ter as permissões restringidas,

para não permitir acesso indevido

* chmod 400 <chave>.pem

51 / 130

Page 52: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Ao conectarmos iremos instalar os pacotes

necessários para nossa aplicação funcionar

* Comandos

* sudo yum install httpd

* sudo yum install php php-mysql php-xml

* sudo yum install mysql-server mysql

* sudo apachectl restart

52 / 130

Page 53: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Copiar o arquivo do Joomla para a pasta

/var/www/html

* Descompactar na pasta joomla

* Para acessar pelo browser:

* use o DNS público da instância criada

* Antes de proceder com a instalação, deve-se

criar o banco de dados

53 / 130

Page 54: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Amazon RDS

* Serviço para armazenamento de banco de dados

relacional

*Como o Amazon EC2, preço cobrado por hora

DB Instance Class (On-Demand)

Micro DB Instance $0.025

Small DB Instance $0.105

Large DB Instance $0.415

Extra Large DB Instance $0.830

High-Memory DB Instance Class

Extra Large DB Instance $0.585

Double Extra Large DB Instance $1.170

Quadruple Extra Large DB Instance $2.340

54 / 130

Page 55: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Amazon RDS

*Antes de criar o banco de dados:

* criar um grupo de segurança, que define a política de

acesso ao banco de dados

* opções disponíveis para permissão:

* (1) estabelecimento faixa de IP com acesso;

* (2) associar algum grupo de segurança do EC2, liberando as

instâncias para acesso

* Para que o Joomla acesse o banco de dados,

utilizaremos o grupo de segurança do EC2

55 / 130

Page 56: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Amazon RDS

*Acessar Services->Database->RDS->Security

Group

* Security Group->Create DB Security Group

*Em seguida podemos aplicar as regras de acesso

* Liberar por faixa de IP

* Associar grupo de segurança do EC2

56 / 130

Page 57: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

57 / 130

Page 58: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Amazon RDS

*Criar uma instância

* DB Instances -> Launch DB Instance

*Preencher as seguintes informações:

* Tipo de instância

* escolher micro para evitar cobranças altas

* Espaço alocado

* Usuário e senha de acesso ao banco de dados

58 / 130

Page 59: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

59 / 130

Page 60: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

60 / 130

Page 61: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Ao final do processo é criada uma instância com o

banco de dados

* Para conectar ao banco, usar o endpoint fornecido

* Para continuar a instalação do Joomla:

* acessar: <dnsinstancia>/joomla

* os passos para instalação do Joomla são explicados pelo

assistente de instalação

* Informar na seção de banco de dados, as informações

para conexão (endereço do banco de dados, usuário e

senha)

61 / 130

Page 62: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Amazon Elastic BeanStalk

*Permite a implantação direta de aplicações,

sem a necessidade de configuração de

instâncias do Amazon EC2

* Suporte atual para implantação de aplicações

Java, PHP e Python

*Processo para implantar o Joomla! pelo Amazon

Elastic BeanStalk

62 / 130

Page 63: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* BeanStalk

*Possui processo diferenciado de cobrança em

comparação com EC2

*Utilizável pela faixa gratuita

63 / 130

Page 64: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* BeanStalk

* Services -> Deployment and Management ->

BeanStalk

* Upload da sua aplicação

(PHP em formato .zip, em Java .war)

* Ao escolher a aplicação, selecionar o local

onde está arquivo compactado do Joomla

64 / 130

Page 65: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

65 / 130

Page 66: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

66 / 130

Page 67: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* BeanStalk

*Definir o tipo de instância que a aplicação irá

rodar e a chave de acesso, caso se deseje

acessar a instância

*Após concluir o assistente, a instância EC2 é

carregada, tornando-se possível o acesso a

aplicação implantada

*No caso de aplicações Java, por exemplo,

implantamos o arquivo WAR

67 / 130

Page 68: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* BeanStalk

*Uma vez que a aplicação foi implantada

podemos atualizar a versão da aplicação e

controlar o ambiente no qual ela está sendo

executada

*Podemos criar um domínio próprio e

redirecionar para aplicação implantada

68 / 130

Page 69: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Serviço de armazenamento

* Através do uso da API, podemos utilizar o espaço de armazenamento

* Permite arquivos de até 5 terabytes

* Uso de buckets

*Buckets representam unidades de armazenamento, para efeito de gerenciamento dos arquivos

* Define regras de acesso para upload e download dos arquivos armazenados

69 / 130

Page 70: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Os preços estão vinculados ao espaço

utilizado, número de requisições e

transferência de dados

* Para aplicações que não possui alta demanda,

a faixa livre cobre os usos

* Mais detalhes: http://aws.amazon.com/s3/

70 / 130

Page 71: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acesso: Services -> Storage -> S3

71 / 130

Page 72: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

72 / 130

Page 73: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

73 / 117

* Pioneira na oferta de recursos computacionais

no modelo de cloud

* Grande diversidade de serviços

* Acesso unificado através de serviços web ou

interfaces de fácil manipulação

* Região São Paulo disponibilidade

recentemente

* Em constante atualização

Page 74: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando Aplicações com BeanStalk

* Armazenamento de arquivos no Amazon S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

74 / 130

Page 75: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

75 / 130

Page 76: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Uma coleção de projetos de software open-

source que as empresas/serviços provedores de

nuvens podem utilizar para implantar sua nuvem

de computação e/ou de armazenamento

* Inicialmente composto por partes do projeto Cloud

Files da Rackspace (armazenamento) e da plataforma

Nebula da NASA (computação).

76 / 130

Page 77: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Em julho de 2010, a Rackspace e a NASA anunciaram

a criação do projeto OpenStack

* Em outubro de 2010 foi disponibilizado o primeiro

“Code Release” com o nome de Austin

77 / 130

Page 78: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Disponível em: http://www.openstack.org/software/

78 / 130

Page 79: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

79 / 130

Page 80: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

NOVA API

... ...

* Servidor de APIs: fornece uma

interface de interação com a

infraestrutura da nuvem.

* O gerenciamento é realizado por Web

Services compatíveis com EC2 da Amazon e

OpenStack API.

80 / 130

Page 81: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* É a principal interface para o serviço

Glance

* É responsável por encaminhar solicitações

de clientes para registros ou para as stores

S3, Swift e HTTP

Glance API

... ...

81 / 130

Page 82: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Armazena, processa e recupera

metadados sobre as imagens

(tamanho, tipo, etc.)

GLANCE-

REGISTRY

82 / 130

Page 83: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Faz comunicação para upload

de imagens em serviços de

armazenamento (S3, Swift)

STORE

ADAPTER

83 / 130

Page 84: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Escalonador: realiza o

mapeamento das chamadas

feitas às APIs aos componentes

apropriados do OpenStack

* Distribuição e balanceamento de carga.

NOVA SCHEDULER

84 / 130

Page 85: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Fila de mensagens: faz a

comunicação entres os

componentes (e.g. API, VOLUME,

COMPUTE, etc.) via AMQP

(Advanced Message Queue Protocol)

* Utiliza comunicação assíncrona, evitando com

que as pontas da comunicação fiquem

bloqueadas por muito tempo

QUEUE

85 / 130

Page 86: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Componente responsável pelo

gerenciamento do ciclo de vida

das instâncias de máquinas virtuais

* Recebem os pedidos de gerenciamento pelo AMQP

e as operações correspondentes são executadas

* Utiliza algoritmo de escalonamento

NOVA COMPUTE

86 / 130

Page 87: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Volume: são utilizados para a

gestão de volumes das instâncias

baseados em Logical Virtual

Manager (LVM)

* Operações:

* Criação

* Deleção

* Conexão

* Desconexão

NOVA VOLUME

87 / 130

Page 88: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Armazenamento de objetos:

repositório de objeto binário

grande

* Responsável pelo armazenamento,

recuperação e deleção dos objetos

OBJECT STORE

88 / 130

Page 89: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Controlador de rede:

responsável pela configurações de

rede

* Operações realizadas pelo

controlador:

* Atribuir de endereços IP

* Configurar de VLANs para projetos

* Implementar de grupos de segurança e redes para

configuração de nós

NOVA NETWORK

89 / 130

Page 90: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

90 / 130

Page 91: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Controlador estrutural de computação

que gerencia todas as atividades

necessárias para suportar o ciclo de vida de

instâncias dentro da nuvem OpenStack

Componente Módulo

API Server nova-api

Message Queue rabbit-mq server

Compute Workers nova-compute

Network Controller nova-network

Volume Worker nova-volume

Scheduler nova-scheduler

91 / 130

Page 92: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Forma distribuída

* Armazenamento virtual de objetos

* Similar ao Amazon S3

*Armazenamento de um grande número de

objetos

*Redundância de Dados

*Capacidade de streaming de mídia

* Escalável

92 / 130

Page 93: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Responsável pelo gerenciamento

de volumes do tipo LVM

* Funcionamento semelhante a um

“HD Externo”

93 / 130

Page 94: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Políticas de identidade e acesso

para todos os componentes no OpenStack

* Elementos do Keystone:

Serviço Conceito

Endpoints URL dedicada a cada serviço

Regions Define uma localização física da Nuvem

User Usuário autenticado

Services Qualquer componente ligado via keystone

Role Regras de Acesso

Tenant Associa EndPoints, Roles e usuários

KEYSTONE

94 / 130

Page 95: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Forma distribuída

armazenamento virtual de objetos

* Similar ao Amazon S3

*Armazenamento de um grande número de

objetos

*Redundância de Dados

*Capacidade de streaming de mídia

* Escalável

SWIFT STORAGE

95 / 130

Page 96: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Interface Web de Gerenciamento

HORIZON

96 / 130

Page 97: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Desenvolvedor

Dashboard

WinScp

Putty

Nuvem

Instância da Aplicação

Instância do Banco

97 / 130

Page 98: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Abordagens

* Single-host

* Multi-host

* Virtualização vs Físico

* Virtualização

* Nativo: Xen, VMware

* Modelo híbrido: VirtualBox, Vmware player, Parallels

* Físico

* Servidor físico com duas interfaces de rede

98 / 130

Page 99: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Virtualizado no VirtualBox

*Criar 3 interfaces

* Ex.: Eth0, Eth1 e Eth2

* Eth0: NAT 1:1 com o VirtualBox

* Eth1: rede pública

* Eth2: rede privada

* Se optarmos pelo modelo Físico

*Necessita de 2 interfaces

* Ex.: Eth0 e Eth1

99 / 130

Page 100: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Atualizando repositório do apt-get

* add-apt-repository ppa:openstack-core/trunk && apt-get update

* Instalando pacotes necessários

* apt-get install -y [pacotes] mysql-server mysql-client novnc memcached python-memcache qemu unzip euca2ools python-dateutil python-mysqldb rabbitmq-server libvirt-bin tgt open-iscsi open-iscsi-utils apache2 libapache2-mod-wsgi ntp

100 / 130

Page 101: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Pacote Função

mysql (server, client), Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcached,pyton-memcached,

python-dateutil, python-mysqldb

Pacotes para suporte ao Pyton. O

Openstack foi escrito em Pyton.

qemu Emulador usado caso não tenha um

hypervisor instalado.

euca2ools Modulo que usa a api EC2 como

interface com os serviços Openstack.

libvirt-bin, tgt, apache2,

libapache2-mod-wsgi, ntp

Softwares de suporte a serviços gerais*

open-iscsi, open-iscsi-utils Auxiliam na criação de volumes

101 / 130

Page 102: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Instalando pacotes necessários

Pacotes Função

nova-api Interface de interação com a nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api S3(img)

nova-network Responsável por controlar a rede

nova-compute Gerenciar ciclo de vida das instancias

nova-consoleauth, nova-console Necessário para configurar VNC (noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova

python-novaclient

Necessário para instalação dos demais

scripts

102 / 130

Page 103: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Editar arquivos

* Informando por exemplo tipo de virtualização(qemu ou kvm), tamanho da rede, as interfaces pública e privada, usuário e senha do mysql, ip do glance entre outros.

* Configurando nova-api: /etc/nova/nova.conf

* Informando o tipo de virtualização(qemu ou kvm)

* Configurando nova-compute:

/etc/nova/nova-compute.conf

* Informando o IP e o nome do inquilino do serviço: /etc/nova/api-paste.ini

103 / 130

Page 104: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Instalando pacotes necessários:

* apt-get install -y glance glance-api glance-client

glance-common glance-registry python-glance

Pacote Função

glance Gerencia imagens

glance-api api de interação com o glance

glance-common

glance-registry

python-glance

Pacotes de suporte ao serviço glance

104 / 130

Page 105: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Editar os arquivos: * /etc/glance/glance-api.conf

* /etc/glance/glance-api-paste.ini

* /etc/glance/glance-cache.conf

* /etc/glance/glance-cache-paste.ini

* /etc/glance/glance-registry.conf

* /etc/glance/glance-registry-paste.ini

* /etc/glance/glance-scrubber.conf

* /etc/glance/glance-scrubber-paste.ini

* Informando administrador da nuvem, usuário e senha. O registry-paste tem que estar de acordo com o api-paste. Adicionar a conexão mysql com o glance entre outros.

105 / 130

Page 106: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* apt-get install -y keystone python-keystone

python-keystoneclient

Pacote Função

keystone Autenticação e políticas de acesso

python-keystone

python-keystoneclient

Pacotes de configuração com o

Python

106 / 130

Page 107: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Editar arquivo:

*/etc/keystone/keystone.conf

* Informando os usuários e o que eles

estão autorizados a fazer.

107 / 130

Page 108: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* apt-get install -y openstack-dashboard

108 / 130

Page 109: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Editar arquivo

* Adequando a informação da variável

Cache_backend com a do arquivo

memcached.conf

* /etc/openstack-dashboard/local_settings.py

109 / 130

Page 110: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Obtendo imagens:

* wget http://uec-

images.ubuntu.com/releases/NOME/release/DISTRI

BUIÇÃO-VERSÃO-server-cloudimg-

ARQUITETURA.tar.gz

* wget http://uec-

images.ubuntu.com/releases/12.04/release/ubuntu

-12.04-server-cloudimg-amd64-disk1.img

* Visualizar lista de imagens carregadas

* nova image-list

110 / 130

Page 111: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Eliminando as variáveis

*unset SERVICE_TOKEN

*unset SERVICE_ENDPOINT

* Definindo variáveis do OpenStack

* Exportando as credenciais e acesso para EC2

* Executando o euca2ools

*Ex.: euca-describe-images

111 / 130

Page 112: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Solução para armazenamento de objetos

* /etc/swift/swift.conf

* Criar arquivo

* /etc/swift/proxy-server.conf

* Criação de conta, contêineres e objetos

* swift-ring-builder (account.*, container.*,

object.* )

* Iniciar o servidor proxy

112 / 130

Page 113: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acessar via browser:

http://[IP_SERVER]/

113 / 130

Page 114: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Criando keypair: acessar o dashboard na

parte de keypair e clicar “add new keypair”.

114 / 130

Page 115: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acessar menu [Images]/[SnapShots].

* Clicar no link [launch] para iniciar a execução

da instância.

115 / 130

Page 116: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Preencher os campos

Server Name e User Data

* Selecionar o Flavor e a

Key Name

* Selecionar o Security

Groups

* Clicar em Launch

Instance

116 / 130

Page 117: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acessar o menu Instances.

* Anotar o [ip da instância].

117 / 130

Page 118: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Utilizando o Putty (Cliente SSH baseado em

linha de comando), acessar o nó controlador

da nuvem

118 / 130

Page 119: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Copiar o arquivo .pem para o nó controlador

(usar o WinSCP).

* Executar o comando ssh -i [Arquivo].pem

ubuntu@[IP_INSTANCIA], acessando a

instância.

119 / 130

Page 120: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Quando a instância é iniciada ela recebe um

ip da faixa privada da nuvem do OpenStack

* Para que ela seja acessada por um ip da faixa

pública faz-se necessário associá-la a um

Floating IP

120 / 130

Page 121: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Acessar o Dashboard

* Clicar no menu Access & Security

121 / 130

Page 122: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Clicar no link Associate to instance

* Selecionar a instância

* Clicar em Associate IP

122 / 130

Page 123: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* O gerenciamento via dashboard está sendo

melhorado, por isso ainda há comandos

disponíveis apenas linha de comando

* A instalação/ configuração ainda não é tão trivial,

a documentação e os tutoriais estão evoluindo

* Para melhorar a escalabilidade das aplicações e

recomendado criar instancias dedicadas à certos

serviços e uso de volumes.

* Ex: ins-tom-cat, ins-mysql

123 / 130

Page 124: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* A cada “release” as configurações/gerenciamento

têm ficado mais simples.

* Existe a possibilidade de incluir extensões as

funcionalidades através da NOVA-API Extensions.

124 / 130

Page 125: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Introdução

* Conceitos básicos sobre Computação em Nuvem

* Algumas plataformas de Computação em Nuvem

* Amazon Web Services (AWS)

* Management Console

* Criação e manipulação de máquinas virtuais

* Criação e manipulação de banco de dados no Amazon RDS

* Implantando Aplicações com BeanStalk

* Armazenamento de arquivos no Amazon S3

* OpenStack

* Implantação do OpenStack

*Criação e manipulação de máquinas virtuais

* Conclusão

125 / 130

Page 126: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Algumas vantagens do uso da Computação em

Nuvem

* Usuário não se preocupa com SO e hardware usados

* Diminuição de custos

* Evita compra de servidores

* Não é necessário pagar por uma licença integral de software

* Evita contratação de técnicos para manter servidores

* Acesso fácil aos dados

* Independente da localização do cliente e dos dados

126 / 130

Page 127: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Alguns desafios

* Interoperabilidade entre plataformas

*Privacidade e segurança

*Virtualização, elasticidade e balanceamento de cargas

* Legislação

* Leis diferentes entre país do cliente e país no qual a infraestrutura de nuvem está instalada

*Garagalo de conexão

* Especialmente no Brasil

127 / 130

Page 128: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

* Neste minicurso apresentamos:

*os conceitos básicos de Computação em Nuvem

*os detalhes de utilização de serviços das

plataformas AWS e OpenStack

* apresentamos a implantação de uma nuvem OpenStack

128 / 130

Page 129: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

129 / 130

Page 130: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

Autor e-mail

Prof. Frederico Lopes (UFRN) [email protected]

Prof. André Almeida (IFRN) [email protected]

Profa. Thais Batista (UFRN) [email protected]

Everton Cavalcante (UFRN) [email protected]

Renato Gondim (UFRN) [email protected]

Thomas Diniz (UFRN) [email protected]

Thiago Cesar (UFRN) [email protected]

Arthur Cassio (UFRN) [email protected]

Page 131: Minicurso 7 – Introdução a Plataformas de Computação em Nuvem

III CBSoft – Congresso Brasileiro de

Software: Teoria e Prática

Natal-RN, 27 de setembro de 2012

131