Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Проект OpenStack





3.1 ОсобенностиOpenStack

В работе предлагается использовать проект OpenStack. Это комплекс проектов свободного программного обеспечения, которое может быть использовано для создания вычислительных облаков и облачных хранилищ, как публичных, так и приватных (работающих только для обеспечения внутренних нужд компании)[7].

Решения с открытым кодом для создания приватных облаков могут быть использованы в нескольких случаях. В первую очередь, они интересны тем компаниям, которые обладают собственными мощными ЦОД и хотят реализовать в них гибкое управление ресурсами по облачной модели. Вторая целевая группа – компании, которые согласны, что будущее лежит за облачными вычислениями, однако в силу тех или иных причин пока не готовы доверить свои данные владельцам публичных облачных сервисов. Разрабатывая новые системы для приватного облака, такие компании смогут в дальнейшем с относительно небольшими затратами перевести их на публичную площадку. Наконец, приватные облака с открытым кодом – лучший инструмент для экспериментаторов, позволяющий быстро и без затрат развернуть платформу и понять на практике, насколько «облачные» вычисления уместны в контексте их собственной организации.

Проект OpenStack сегодня интересен в большей степени именно для последней группы – т.е. для разработчиков, желающих поэкспериментировать с облачными вычислениями. При этом главное отличие OpenStack от Eucalyptus, другой известной разработки с открытым кодом для развертывания частных облаков, заключается в абсолютной открытости. Если Eucalyptus предоставляет полный объем функциональности только покупателям корпоративной версии, то функциональность бесплатной версии OpenStack ничем не ограничена.

Технология OpenStack – это одно из новых решений, популярность и востребованность которого быстро набирает обороты. Оно включает в себя целую серию взаимосвязанных проектов, обеспечивающих разработку многочисленных составляющих инфраструктурного решения для «облака». OpenStack используют крупные компании, поставщики услуг, представители малого и среднего бизнеса, исследователи, а также всемирные центры обработки данных. Код OpenStack свободно распространяется: любой желающий может запустить программное обеспечение, добавить дополнительные настройки либо вернуть его в исходное состояние. Именно по этой причине у данного проекта нет конкурентов. Более 155 компаний, среди которых NASA, Rackspace, Intel, Dell, Canonical-Ubuntu, HP, SuSE, поддерживают открытую облачную архитектуру [14].

3.2 Компоненты OpenStack. Инструментарий для создания облака

Из входящих в состав релиза Essex (апрель 2012) компонентов и реализованных в них новшествах можно отметить следующие.

OpenStack Object Storage (Swift) - распределенное, отказоустойчивое и высоконадежное хранилище объектов. Хранимые объекты сохраняются одновременно на несколько узлов кластера в ЦОД, при этом обеспечивается автоматический контроль целостности и репликация при отключении/добавлении узлов. Хранилище масштабируется горизонтально, т.е. для увеличения размера достаточно просто добавить новые узлы, конфигурация которых производится автоматически. При выходе узла из строя, его содержимое воспроизводится на других узлах сети для обеспечения должной избыточности. Дублирование информации позволяет использовать для формирования кластера типичные недорогие серверы, не заботясь о надежности каждого из них в отдельности.

OpenStack Compute (Nova) - инструментарий, позволяющий автоматически создавать и управлять работой больших групп VPS-серверов. Для обмена сообщениями используется протокол AMQP, для хранения данных задействована БД Redis.

OpenStack Image Service (Glance) - реестр образов виртуальных машин, позволяющий регистрировать новые образы виртуальных машин и обеспечивать их доставку на нужные узлы перед выполнением. Обеспечивает функционирование хранилища образов виртуальных машин, представленных в широком спектре форматов.

OpenStack Identity (Keystone) - пакет для унификации средств аутентификации и обеспечения интеграции компонентов OpenStack с существующими системами аутентификации. Возможно использование и обычных средств входа с использованием логина/пароля или AWS. Keystone отвечает за такие операции, как управление пользователями, проектами и правами доступа.

OpenStack Dashboard (Horizon) - web-интерфейс для управления системой, представленный как для администраторов, так и для пользователей. Поддерживается широкий спектр средств для управления ресурсами, созданием и запуском окружений, установкой лимитов. Возможно подключение плагинов, например, с реализацией средств мониторинга (рис.4).

Рис. 4 – Интерфейс для управления системой

Quantum - экспериментальный фреймворк для выполнения задач, связанных с созданием, конфигурированием и сопровождением сетей внутри ЦОД. Quantum поддерживает динамическую конфигурацию сети и может быть использован для настройки как виртуальных сетей, так и физических хостов. Quantum поддерживает расширение функциональности через плагины и может решать различные административные задачи, от создания портов до настройки маршрутов и VLAN [2]. Связь компонентов, архитектура OpenStack представлена в приложении А.

3.3 Организация «облака» с помощью компонентов OpenStack

В приложении Б представлены некоторые команды для настройки системы, перечислены источники с подробной документацией и схемы взаимодействия компонентов OpenStack. Коды и документация открыты и предоставлены для самостоятельной организации облака. Рассмотрим, каким образом действуют компоненты системы.

3.3.1 OpenStack Nova

Основной компонент OpenStack — это Nova (Compute), контроллер, управляющий работой виртуальных машин[9]. Nova сосредоточена на таких функциях, как обработка запросов на создание виртуальных машин, соединение их с внешним миром, контроль за работоспособностью и распределением нагрузки на физические машины и каналы связи, реакция на сбои и т.д. В системе существует восемь обособленных компонентов:

· контроллер Облака (Cloud Controller) следит за состоянием системы и является связующим звеном всех остальных компонентов;

· сервер API (API Server) реализует web-интерфейс, позволяющий управлять контроллером облака;

· контроллер вычислений (Compute Controller) отвечает за запуск виртуальных машин и их связь со всей остальной инфраструктурой;

· хранилище (Object Store) предоставляет сервис хранения данных, совместимый с Amazon Simple Storage Service;

· менеджер аутентификации (Auth Manager) предоставляет сервисы аутентификации и авторизации;

· контроллер томов (Volume Controller) дает возможность подключать виртуальные устройства хранения к виртуальным машинам;

· сетевой контроллер (Network Controller) создает виртуальные сети, позволяя виртуальным машинам взаимодействовать друг с другом и с внешней сетью;

· планировщик (Scheduler) ответственен за выбор подходящего контроллера вычислений для запуска новой виртуальной машины (рис. 5).

Рис.5 – Схема взаимодействия компонентов OpenStack Nova

Перечисленные выше компоненты связаны между собой. В «управляющий центр» облака, работающий на выделенной машине, входит сервер API, контроллер облака и менеджер аутентификации. Администратор использует утилиту nova-manage для управления характеристиками всей инфраструктуры и доступом к ней пользователей. Клиенты, которые хотят использовать облачный сервис, подключаются к серверу API с помощью клиентских утилит Amazon EC2 или их свободного варианта под названием euca2ool из проекта Eucalyptus.

Контроллер томов (еще одна выделенная машина) позволяет подключать к виртуальным машинам своего рода внешние накопители данных. Его присутствие в инфраструктуре необязательно.

За распределение IP-адресов между виртуальными машинами отвечают несколько машин, которые выполняют работу сетевых контролеров. Они же могут выступать в роли шлюза, отделяющего виртуальные машины от остальных сегментов сети. Как правило, на один сегмент внутренней виртуальной сети приходится один сетевой контроллер.

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

Основной костяк облачной инфраструктуры OpenStack – это контроллеры вычислений. Как правило, их количество превосходит количество всех остальных машин сети. В функции контроллеров входит прием запросов на создание новой виртуальной машины, ее запуск, слежение за состоянием виртуальных машин, перезапуск и так далее. Количество контроллеров вычислений в инфраструктуре напрямую определяет количество клиентов, которых может обслуживать сервис.

При обработке пользовательских запросов в системе происходит следующее. Пользователь при помощи клиентских инструментов инициирует запрос на создание виртуальной машины к серверу API. Далее происходит аутентификация и авторизация пользователя, после чего сервер API разбирает запрос и посылает его контроллеру облака. Последний инициирует три новых запроса: к сетевому контроллеру, к хранилищу и к планировщику. Сетевой контроллер выделяет IP-адрес для новой виртуальной машины и возвращает его контроллеру облака. В сетевом хранилище происходит поиск подходящего образа жесткого диска для будущей виртуальной машины, адрес которого возвращается контроллеру облака. Имея все необходимое для создания новой виртуальной машины, контроллер облака посылает запрос планировщику, который выбирает наиболее подходящий контроллер вычислений и отдает ему запрос на создание ВМ. После того, как новая ВМ будет запущена, контроллер облака завершает свою работу и сообщает серверу API об успехе всей операции. Теперь пользователь может подключиться к ВМ, а всю деятельность по поддержанию ее в работоспособном состоянии, выделении дискового пространства, маршрутизации сетевых пакетов и прочую работу система берет на себя (рис.6)[13].

Рис.6 - Обработка пользовательских запросов в Nova

Компоненты системы полностью обособлены друг от друга и общаются только с помощью отправки асинхронных сообщений или протокола HTTP. Любые изменения в дизайне выдерживаются настроенной и работающей системой; на переконфигурирование требуется минимальное время.

OpenStack не является замкнутой обособленной системой и использует сторонние продукты. Для управления им можно использовать стандартные клиенты сервиса Amazon EC2, а для запуска виртуальных машин применять системы виртуализации[11].

3.3.2 OpenStack Swift

Swift (OpenStack Object Storage) — это полностью распределенное «безграничное» хранилище, которое характеризуется отказоустойчивостью и высокой надежностью[10]. Swift включает в себя четыре основных компонента:

· Proxy Server (прокси-сервер): объединяет все компоненты системы вместе.

· Object Server (объектный сервер): ответственен за хранение данных.

· Container Server (контейнерный сервер): в его функции входит отдача списка объектов.

· Account Server (сервер аккаунтинга): отдает листинги контейнеров для конкретного аккаунта.

Типичная Swift-инфраструктура представляет собой кластер, одна из машин которого выполняет функции прокси-сервера, несколько машин работают в качестве контейнерных серверов и серверов аккаунтинга, а все остальные (сотни и тысячи машин) представляют собой контейнерные серверы.

Прокси-сервер поддерживает внешний ReST-ful API, реализованный в рамках протокола HTTP. Поэтому запрос доступа к объектам внутри хранилища выглядит наглядно и просто: GET http://swift.host.com/v1/account/container/object

Здесь account — это пользовательский аккаунт, container — пространство имен, используемое для классификации данных, а object — непосредственно данные (или файл).

«Кольца» (rings) используются прокси-сервером для поиска реального положения данных в кластере. Это своего рода база данных, в которой описывается расположение данных. При каждой записи новых данных в хранилище, их удалении или выходе узлов из строя она модифицируется. Для аккаунтов, контейнеров и объектов предусмотрены отдельные кольца.

Наиболее важный компонент Swift-кластера – это объектные серверы. Их основная функция - хранение и отдача данных. Любые объекты хранилища в конечном счете оказываются на жестких дисках этих серверов, которые записывают данные в обычные файлы, сопровождая их метаданными, записываемыми в расширенные атрибуты файлов. Надежность хранения данных достигается за счет дублирования сразу на несколько серверов, так что если один из них выйдет из строя, система сможет восстановить данные с другого сервера и вновь продублировать их. Система создает три копии каждого объекта по умолчанию, так что в качестве железной составляющей кластера можно использовать машины, даже не снабженные RAID-контроллерами.

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

3.3.3 OpenStack Glance

Проект Glance - это услуги по отбору, регистрации и поиску виртуальных «machine images» (VMI). В рамках Glance используется RESTful API, что позволяет делать запрос метаданных VMI и выполнять поиск фактического образа (VMI)[8]. Glance - это сервер, обеспечивающий следующий набор услуг:

· возможность хранения и поиска VMI;

· возможность хранения и поиска метаданных VMI.

Связь с Glance осуществляется посредством интерфейса HTTP по типу REST. Кроме того, Glance использует клиентский класс, который обеспечивает простую и быструю работу. Конфигурацию Glance можно разделить на две основные группы: сервер Glance API, сервер(-ы) Glance Registry.

Сервер API является главным программным интерфейсом Glance. Он служит для направления запросов от клиентов в системные реестры метаданных образа и в хранилища базы данных, которые и являются теми самыми механизмами, используемыми Glance для хранения поступающих VMI. Ниже приводится список хранилищ, с которыми взаимодействует «Glance»:

·Swift – это безграничное высоконадежное хранилище данных на базе OpenStack.

·Filesystem Хранилище данных по умолчанию, которое Glance использует для хранения VMI в буфере файловой системы: загрузочные модули записываются в местной файловой системе.

· S3 Это хранилище позволяет Glance сохранять VMI на Amazon S3.

·HTTP Glance способен считывать VMI, доступные через протокол HTTP на любом Интернет ресурсе. Это хранилище служит только для чтения.

Серверы Glance Registry соответствуют серверу API Glance Registry. Glance добавляет данные со ссылкой на системный реестр, который подчиняется этому API (glance-registry).

3.4 Достоинства открытого инструмента OpenStack

· Открытый исходный код.

Открытый код позволяет пользователям полностью контролировать своё облако и снимает технологические ограничения одного поставщика. Благодаря этому гарантируется развитие технологии, на которой держится бизнес, и имеется возможность «ручного управления» инфраструктурой при создании и настройке облаков. В результате, предприятия могут справляться с любой рабочей нагрузкой, а кроме того, открытый код позволяет плодотворно сотрудничать с сообществом и другими компаниями для развития технологий в необходимых вам направлениях.

· Сильное, независимое сообщество.

Не меньшее значение имеет наличие устойчивого сообщества, которое развивает этот код. Потенциал ПО с открытым исходным кодом и инновационные возможности, которые оно в себе несёт, позволяет каждому человеку полностью реализовать свои идеи или оригинальные подходы.

· Открытые стандарты, протоколы и форматы.

Несмотря на то, что «облачные» стандарты ещё находятся на ранней стадии рассмотрения, необходимо учитывать гибкость решения, основанную на подходе интероперабельности и независимости от конкретного поставщика или платформы. Программные интерфейсы (API) позволяют выйти за рамки уже реализованных функций, благодаря чему организации могут использовать решения, которые наилучшим образом подойдут к их индивидуальным техническим и коммерческим требованиям.

· Свобода в использовании объектов интеллектуальной собственности.

Как показывает история, нет никаких гарантий, что завтра какие-нибудь из объектов интеллектуальной собственности, например, запатентованные технологии, останутся общедоступными. Чтобы быть уверенным в работе критически важного для вас ПО завтра, обратите внимание на условия его использования. Они должны гарантировать, что технология останется полностью открытой и всегда доступной пользователю. Так называемые «стандарты де факто» обычно являются стандартами только из-за того, что их продвигает крупный поставщик. Поэтому очень часто они не проходят проверку на гарантию доступности.

· Возможность внедрения в выбранной инфраструктуре.

Гибридное облако (смесь частного с публичным) даёт дополнительный уровень абстракции над виртуализацией, физическими серверами и средствами хранения. Поэтому должна быть обеспечена независимость от системы виртуализации и других фундаментальных технологий. Это основное отличие облачных вычислений от систем управления виртуализацией. Именно лёгкое масштабирование ресурсов является главной причиной развития гибридных облаков, которые охватывают как физические серверы и многочисленные платформы виртуализации, так и широкий круг провайдеров публичных облаков.

· Расширяемость с помощью открытого программного интерфейса (API).

Программный интерфейс даёт возможность дополнить своё решение новыми функциями и различными технологиями. Он не должен контролироваться одной компанией или быть привязанным к конкретной реализации. Однако, развитие API не может быть бесконтрольным. В идеальном случае программный интерфейс должен разрабатываться независимой организацией, которая утверждает его расширение открытым и прозрачным способом. Ярким примером может служить Deltacloud API, представляющий единый интерфейс для уже существующих реализаций облачных вычислений. Проект контролируется Apache Software Foundation и не привязан к какой-либо конкретной разработке.

На практике компании редко самостоятельно разбираются в исходном коде. Но тот факт, что другие поставщики могут предложить конкурирующие решения на той же базе даёт пользователям дополнительное преимущество, которого нет при внедрении проприетарных решений[12].

Date: 2015-07-25; view: 927; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию