С 1991 года на компьютерном рынке России
e-mail

т.: 676 0965, 676 0396
Москва, Сосинская ул. 43,
м. Волгоградский проспект
Реализация облачного хранилища с OpenStack Swift.

ГЛАВА 1


Облачное хранилище: Почему я не могу быть как Google?

Если бы вы могли построить ИТ-системы и операции с нуля сегодня, смогли бы вы воссоздать то, что у вас есть? Этот вопрос Гейр Рамлет, ИТ-директор строительного гиганта Bechtel, задал себе в 2005 году. Очевидно, ответ был нет, и Bechtel в конечном итоге с помощью передового опыта четырех интернет-предшественников во времени YouTube, Google, Amazon.com и Salesforce.com создал свой следующий набор центров обработки данных. Это точно тот же вопрос, который ИТ-директора по всему миру задают себе, и это то, что привносит облако хранения! Благодаря этой книге вы узнаете, как реализовать систему хранения данных, которая использует лучшие практики этих веб-гигантов по сравнению с традиционными предприятиями, тем самым снижая совокупную стоимость владения (TCO, Total Cost of Ownership) более чем в 10 раз. Этот тип хранения называется облачным хранилищем (облачной системой хранения данных).

Ниже приводятся некоторые ключевые моменты, составляющие облачное хранилище:

    • Преимущества:
    • Драматичное уменьшение TCO (совокупной стоимости владения)
    • Неограниченное масштабирование
    • Эластичность, предоставляемая виртуализацией
    • Ресурсы по запросу, т.е., оплата за то, что реально используется
    • Универсальный доступ с любого места
    • Ограничения:
    • Совместное использование хранилищ с другими подразделениями или компаниями
    • Не является высокопроизводительным вариантом
    • Требует изменения облачного шлюза или приложений

Элементы облачного хранилища

Давайте рассмотрим преимущества и ограничения облачного хранилища в деталях

Уменьшенная полная стоимость владения

Снижение совокупной стоимости владения является сутью облачных систем хранения данных. Пока такая новая система хранения не сократит стоимость более чем в 10 раз, не стоит переходить от блочной или файловой системы хранения и связываться с чем-то новым и отличным от имеющегося. Под совокупной стоимостью владения мы имеем в виду общее количество капитальных затрат (CAPEX) в виде оборудования и операционные расходы (OPEX) в виде администраторов ИТ хранения, электропитания, охлаждения и тому подобного. Такое снижение TCO должно быть достигнуто без ущерба для долговечности (сохранения данных без повреждений) или доступности.

Неограниченное масштабирование

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

Эластичность

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

Предоставление по запросу

Потребители не резервируют блоки электроэнергии и не платят за них авансом в таких странах, как Соединенные Штаты. Тем не менее, мы регулярно платим за системы хранения авансом, вне зависимости от того: используем ли мы их, или нет. Облачное хранилище использует модель плати-по-мере-роста, где вы платите только за хранящиеся данные и запрашиваемые данные. Это может привести к значительной экономии затрат для пользователя системы хранения.

Универсальный доступ

Существующие корпоративные системы хранения данных имеет ограничения в плане доступа. Блочные системы хранения очень ограничены; сервер должен должен находиться в той же сети хранения данных, при этом LUN-ы (пулы хранения данных), не могут совместно использоваться. Сетевое устройство-хранения (NAS) должно быть смонтировано для доступа к нему. Это создает ограничения на количество клиентов и требует доступа к локальной сети. Облачная система хранения является чрезвычайно гибкой - нет ограничений на количество пользователей или на место, из которого вы к нему осуществляете доступ. Это возможно, поскольку облачные системы хранения, как правило, используют API REST поверх HTTP (get, put, post и delete) вместо протоколов традиционного SCSI или CIFS/NFS.

Множественное владение

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

Варианты использования

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

Это означает, что облачные системы хранения данных хороши для первичного хранения для таких приложений, как веб-серверы и серверы приложений, но не для баз данных или для высокопроизводительных вычислений уровня 2/3 хранилища, например, для резервного копирования, в архивирования (фотографии, документы, видео, журналы и т.д.), а также создания дополнительной копии для аварийного восстановления.

Воздействие приложений

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

  • Непротиворечивость (согласованность): для облачных хранилищ это означает, что запрос к любому региону/узлу возвращает одни и те же данные
  • Доступность: для облачных хранилищ это символизирует, что запрос успешно подтверждается ответом
  • Частичная надежность (толерантность): для облачных хранилищ это подразумевает, что архитектура способна выдерживать отказы связи или комплектующих системы

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

Шлюзы облака

Если приложение не портировано для облачных систем хранения данных, не является ли это тупиком? К счастью, нет; существует класс устройств, называемых шлюзами облака, которые обеспечивают файловые или блочныt интерфейсы приложения (например, CIFS, NFS, ISCSI или FTP/SFTP) и выполняют преобразование протоколов в облако. Эти шлюзы также обеспечивают другие функции, такие как кэширование, оптимизация WAN, дополнительное сжатие, шифрование и дедупликации. Эти шлюзы устраняют необходимость для приложения обрабатывать возможные проблемы непротиворечивости.

Хранилище объектов

Как вы строите облачная системы хранения? Наиболее подходящей базовой технологей является объектное хранилище.

Хранилище объектов отличается от блочной или файловой системы хранения и позволяет пользователю хранить данные в виде объектов (главным образом в виде файлов) в плоском пространстве имен с использованием HTTP REST API. Объектная система хранения полностью виртуализирует физическую реализацию логическим представлением. Это похоже на регистрацию багажа на рейс в сравнении с проносом его в виде ручной клади, при которой вы однажды проходите регистрацию багажа в системе, причем вы действительно не знаете где он находится. Вы просто получаете его обратно в пункте назначения. С ручной кладью вы должны точно знать в любое время где вы ее храните.

Хранение объекта строится с использованием масштабных распределенных систем. Каждый узел, чаще всего, на самом деле работает c локальной файловой системой. Как мы увидим, архитектуры системы хранения объектов делают возможным использование стандартных аппаратных средств, в отличие от дорогих специализированных аппаратных средств, используемых традиционными системами хранения. Можно утверждать, что у система хранения объектов хранения уровнь выше, чем у файловых систем. Двумя наиболее важными задачами системы хранения объектов являются:

  • Размещение данных
  • Задачи автоматического управления

Как правило, пользователь отправляет свои запросы HTTP GET, PUT, POST или DELETE на любой из множества узлов и запрос транслируется в физические узлы программным обеспечением системы хранения объектов. Программное обеспечение также заботится о модели долговечности путем либо создания нескольких копий объекта, либо формированием его фрагментов, либо создавая коды удаления или комбинацией методов. Модель долговечности не не является RAID, потому что RAID просто не масштабируется за сотни терабайт. Вторая критическая задача связана с управлением, таким как периодические осмотры состояния, самовосстановление и миграция данных. При наличии единого плоского пространства имен управление также становится легким, что означает, что администратор системы хранения может управлять всем кластером как единым целым.

По следующей таблице попробуем оценить как объектное хранилище удовлетворяет перечисленным преимуществам облачных систем хранения данных:
Критерии Возможность увидеть
Низкое TCO Узлы хранения не имеют никаких специальных требований, таких как высокая доступность, управление, или специальное оборудование, такое как RAID; это означает, что обычные аппаратные средства могут быть использованы для сокращения капитальных затрат (CAPEX). Единое плоское пространство имен с автоматизированными функциями управления позволяет сократить эксплуатационные расходы (OPEX). Полный анализ того, как все это сокращает совокупную стоимость владения в 10 и более раз выходит за рамки данной книги.
Неограниченное масштабирование Распределенная архитектура позволяет масштабировать емкость и производительность
Эластичность Полностью виртуализированный подход позволяет данным расти и сокращаться по мере необходимости
Предоставление по запросу Полностью виртуализированный подход совместно с централизованным управлением позволяет предлагать системы хранения на основе службы по требованию
Универсальный доступ REST HTTP API предоставляет доступ в любом местоположении пользователя, причем без ограничения на количество пользователей
Множественное владение Сочетание множества учетных записей, строгая аутентификация и контроль доступа гарантируют множественный доступ с адекватной безопасностью

OpenStack Swift

Существует ли стек системы хранения объектов, который лучше всего подходит для наших целей? Мы считаем, что OpenStack Swift является правильным выбором. Давайте вначале рассмотрим что является предметом проекта OpenStack, что является OpenStack Swift (часто называемый просто Swift), а затем ответить на предыдущие вопросы о нашем выборе.

OpenStack, проект, запущенный NASA и Rackspace в 2010 году, в настоящее время самый быстро развивающийся проект с открытым исходным кодом, и его миссия заключается в создании платформы облачных вычислений, полезной как для общественных, так и для частных реализаций. Двумя основными принципами являются простота и масштабируемость. OpenStack имеет множество подпроектов под своим началом вдиапазоне начинающемся с вычислительных систем и систем хранения вплоть до сетевых реурсов, включая прочие приложения. Проект хранилища объектов называется Swift и он является высоко доступным, распределенным, без выделенного управления, а также обладает стеком программного обеспечения, который приводит систему в конечном итоге к непротиворечивости данных.

Почему Swift, когда существует множество продавцов, продающих проприетарное программное обеспечение хранения объектов? Ответ в первых нескольких фразах этой главы; если вы хотите быть похожими на веб-гигантов, единственным вариантом является открытый исходным код. Открытый исходный код резко урезает совокупную стоимость владения и предоставляет доступ к активному сообществу, которое может оказать техническую поддержку. Проекты с открытым кодом также обеспечивают долговечность, так как история показывает, что программы с открытым исходным кодом превосходят по длительности частные проекты. Кроме того, проекты с открытым кодом позволяют пользователи извлечь выгоду из работы, проделанной бОльшими командами игроков, а также создают экосистему инструментов и секретов производства. Наконец, проекты с открытым кодом добавляют функциональност в разы быстрее, чем это делают проприетарные проекты. Все это делает Swift правильным выбором.

Проект Swift, в частности, вышел из платформы Облака файлов RackSpace. Проект был уникален тем, что инженеры и прародители сообщества разработчиков (dev ops falks, прим.пер.: см., например, следующую1 трактовку DevOps) работали вместе, чтобы создать его. Это имело результатом очень мощную систему хранения, которая является простой и, к тому же, легкой в управлении. RackSpace "открытло код" Swift в 2010, и многочисленные организации, такие как Seagate, EVault, IBM, HP, Internap, Korea Telecom, Intel, SwiftStack, CloudScaling, Mirantis, и многие другие присоединились к проекту с тех пор.

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

  • Открытый код: Как уже упоминалось ранее, никаких лицензионных платежей.
  • Открытые стандарты: Использование REST API, HTTP с SSL для дополнительного шифрования. Сочетание открытого исходного кода и открытых стандартов устраняет любую потенциальную привязанность к определенному вендору.
  • Структура учетная запись/ контейнер/ объект: OpenStack Swift включает в себя богатую мощность именований и организации, в отличие от ряда других систем хранения объектов, которые предлагают примитивный интерфейс, где пользователь получает ключ при представлении объекта. Бремя отображения имен в ключи и их разумной организации остается вне пользователя.
  • Глобальные кластерные возможности: Они позволяют репликацию и распространение данных по всему миру. Данная функциональность помогает аварийному восстановлению, распределению горячих данных и тому подобное.
  • Воспроизведение частей объектов: Например, если вам требуется только часть объекта кинофильма или в файл TAR.
  • Архитектура с програмным обеспечением промежуточного уровня (middleware): Позволяет вам добавлять функциональность. Прекрасным примером является интеграция с системой аутентификации.
  • Поддержка Больших объектов: Для объектов с размером более 5ГБ.
  • Дополнительная функциональность: Она включает в себя объект управления версиями, объекты с истечением временного срока, ограничение скорости, поддержку временных URL, поиск CNAME, доменное переназначение и режим статического веб-сайта. Этот список постоянно растет как следствие того, что Swift является проектом с открытым исходным кодом.

Заключение

В этой главе мы рассмотрели почему облачное хранилище является новыv способ построения систем хранения данных, которое существенно сокращает общую стоимость владения. Оно использует технологию под названием система хранения объектов. OpenStack Swift рассматривается как программный стек высокого качества с открытым исходным кодом для храненилищ объектов. OpenStack Swift использует совершенно иную архитектуру по сравнению с традиционными системами хранения данных предприятий с помощью распределенной архитектуры, строящейся на общедоступных серверах. Следующая глава объясняет эту архитектуру в деталях.


DevOps1: "Ops" это общий термин для инженеров систем, системных администраторов, оперативного персонала, выпускающих инженеров высвобождения, администраторов баз данных, сетевых инженеров, специалистов по безопасности, а также различных других поддисциплин и названий должностей. "Dev" используется. в частности, как сокращение для разработчиков, но на самом деле на практике даже шире и означает "все люди, участвующие в разработке продукта", который может включать в себя сам продукт, вопросы и ответы, а также другие виды дисциплин.
Источник: theagileadmin.com/what-is-devops/

Вводная часть Оглавление Глава 2
 
Перевод: Copyright © 2014  .
All rights reserved.
Ссылки обязательны (Refs and links obligatory).
http://www.mdl.ru