[jam 2.1] cloud computing (dmitry ivashnev)

39
Облачные вычисления Ивашнёв Дмитрий email: [email protected] jabber: [email protected] 5 мая 2012 г .

Upload: jamteam

Post on 20-Jun-2015

242 views

Category:

Documents


0 download

DESCRIPTION

Cloud Computing

TRANSCRIPT

Page 1: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Облачные вычисления

Ивашнёв Дмитрийemail: [email protected]

jabber: [email protected]

5 мая 2012 г.

Page 2: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Definition

Облачные вычисления – это модель обеспечения повсеместногои удобного сетевого доступа по требованию к общему пулуконфигурируемых вычислительных ресурсов (например сетямпередачи данных, серверам, устройствам хранения данных,приложениям и сервисам � как вместе, так и по отдельности),которые могут быть оперативно предоставлены и освобожденыс минимальными эксплуатационными затратами.Одной из ключевых технологий является технологиявиртуализации.

Page 3: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Виртуализация

Hardware

HypervisorOS1 OS2

OSN

...Application Application Application

Page 4: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Layers of Cloud Computing(Модели обслуживания)

• Infrastructure as a Service – IaaS(Инфраструктура как услуга)

• Platform as a Service – PaaS(Платформа как услуга)

• Software as a Service – SaaS(Программное обеспечение как услуга)

Page 5: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Layers of Cloud Computing(Модели обслуживания)

SaaSPaaS

IaaS

Server

Hypervisor

OS1 OS2 OSN...

Platform

Software

Page 6: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

IaaS

Вычислительные ресурсы предоставляются в качестве сервиса.Пользователь сам выбирает программное обеспечение:операционную систему, платформенное и прикладное ПО.Возможно управление виртуальными системами храненияданных.

Page 7: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

IaaS: Предоставление ВМ

Ресурсы предоставляются через экземпляры виртуальныхмашин. Виртуальные образы могут быть выбраны изимеющихся либо сделаны пользователем.Пример шагов по запуску экземпляра виртуальной машины:

1 Выбрать подходящий сервер (предоставляемыевычислительные ресурсы) из пула доступных, выбратьшаблон с ОС для образа ВМ.

2 Загрузить необходимое ПО: драйвера, целевое ПО.3 Настроить ВМ (сетевые и дисковые ресурсы).4 Виртуальный сервер готов к работе.

Page 8: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

IaaS: Миграция ВМ

В процессе работы может возникнуть необходимостьпереместить экземпляр ВМ с одного реального сервера надругой. Две техники:

• Live Migration• Regular/Cold Migration

Page 9: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

IaaS: Regular/Cold Migration

Для миграции необходимо отключение ВМ. ВМ не обязательнонаходится на общем хранилище.

Page 10: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

IaaS: Live migrationМиграция осуществляет без выключения ВМ. ВМ должнанаходится на общем хранилище. Пример алгоритма миграции:

1 Активная ВМ работает на хосте А.2 Отправляется запрос на резервирование ресурсов на хосте

Б.3 С хоста А на хост Б копируются все страницы памяти ВМ.4 ВМ на хосте А останавливается, сетевой трафик

перенаправляется на хост Б. Измененные страницы памятиотправляются на хост Б. ВМ на хосте А все еще являетсяосновной и может быть перезапущена в случае ошибкимиграции.

5 Хост Б отправляет на хост А подтверждение о полученииобраза. ВМ на хосте Б становится основной, копия с хостаА может быть удалена.

6 Донастройка ВМ, отправка оповещения о перемещенииIP-адреса.

Page 11: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

PaaS

Предоставляется платформа для разработки. Платформанакладывает ограничение на язык(и) разработки. Содержитготовые решения для типовых задач.Пример Google AppEngine. Языки: Python, Java, Go. Готовыерешения для кэширования в памяти (memcache), почты,мгновенного обмена сообщениями (XMPP).

Page 12: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

PaaS

http://www.zoho.com/creator/paas.html

Page 13: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

SaaS

Пользовательское ПО находится на удаленном ресурсе.Доступ:

• Тонкий клиент (браузер)• API (HTTP, REST, SOAP, JSON)

Page 14: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Types of Cloud Computing(Модели развёртывания)

• Публичное облако• Частное облако• Гибридное облако

Page 15: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Публичное облако

The Cloud

Off Premises / Third PartyOn Premises / Internal

CC-BY-SA 3.0 Sam Johnstonby

Ресурсы доступны через Internet, облако располагается упровайдера.

Page 16: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Частное облако

The Cloud

Off Premises / Third PartyOn Premises / Internal

CC-BY-SA 3.0 Sam Johnstonby

Ресурсы доступны через внутреннюю сеть, облакорасполагается у клиента.

Page 17: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Гибридное облако

The Cloud

Off Premises / Third PartyOn Premises / Internal

CC-BY-SA 3.0 Sam Johnstonby

Комбинирует публичную и частную модели развертывания.

Page 18: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Scalability (Масштабируемость)

• Вертикальное масштабирование – увеличениепроизводительности машин.

• Горизонтальное масштабирование – увеличение количествамашин.

Page 19: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Пример использования ресурсов

День

Неделя

Page 20: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Пример использования ресурсов

День

Неделя

Page 21: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)
Page 22: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Definition

OpenStack - это комплекс проектовсвободного программного обеспечения,которое может быть использовано длясоздания вычислительных облаков иоблачных хранилищ, как публичных, так ичастных.

Page 23: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Основные компоненты OpenStack

• Compute (Nova) – контроллер вычислительных ресурсов• Object Storage (Swift) – облачное хранилище• Image Service (Glance) – контроллер виртуальных образов

Все компоненты написаны на Python.

Page 24: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Архитектура OpenStack

Page 25: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Разработка

Page 26: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Compute (Nova)

Компонент Compute позволяет управлять сетью из виртуальныхмашин. Он предоставляет интерфейсы для работы с облаком:пользовательский интерфейс, API. С его помощью можноконтроллировать работу экземпляров виртуальных машин,конфигурировать сети, настраивать доступ для пользователей.Не реализует виртуализацию, вместо этого использует libvirt

для взаимодествия с гипервизорами. Таким образом независит от конкретного гипервизора виртуальных машин.

Page 27: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Object Storage (Swift)

Компонент Object Storage представляет из себя ПО длясоздания избыточных масштабируемых объектных хранилищ сиспользованием кластеров машин. Основной задачей являетсядолговременное хранение данных. Хранилище избыточное –используется механизм репликаций.

Page 28: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Image Service (Glance)

Компонент Image Service позволяет обнаруживать,регистрировать и предоставлять образы виртуальных машин.Поддерживаются различные бэкенды, включая OpenStackObjectStorage.Поддерживаемые форматы образов:

• Raw• Machine (kernel/ramdisk outside of image, a.k.a. AMI)• VHD (Hyper-V)• VDI (VirtualBox)• qcow2 (Qemu/KVM)• VMDK (VMWare)• OVF (VMWare, others)

Page 29: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

http://www.ubuntu.com/cloud

Page 30: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Выбор образа

Page 31: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Подготовка ВМ

Page 32: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

ВМ готова

Page 33: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Начало работы

Page 34: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Ресурсы

Page 35: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Hello, cruel world

Page 36: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Hello, cruel world

Page 37: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Пример кода сервиса

import xmlrpclib

from SimpleXMLRPCServer import SimpleXMLRPCServer

def fact(n):

if(n > 1):

return fact(n-1)*n

return 1;

server = SimpleXMLRPCServer (("", 8000))

print "Listening�on�port�8000..."

server.register_function(fact , "fact")

server.serve_forever ()

Page 38: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Работа с сервисом

Page 39: [JAM 2.1] Cloud Computing (Dmitry Ivashnev)

Goodbye, cruel world