Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

SnowFlock

Глава 18 из 1 тома книги "Архитектура приложений с открытым исходным кодом".

Оригинал: SnowFlock
Авторы: Roy Bryant, Andres Lagar-Cavilla
Дата публикации: 7 Июля 2012 г.
Перевод: А.Панин
Дата перевода: 29 Марта 2013 г.

Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.


Облачные технологии позволяют создавать привлекательные и экономичные вычислительные платформы. Вместо покупки и настройки физического сервера с соответствующими затратами времени, усилий и финансов, пользователи могут арендовать "серверы" в облаке с помощью нескольких кликов мышью за сумму менее чем 10 центов в час. Провайдеры облачных технологий поддерживают низкий уровень цен, предоставляя в распоряжение пользователей виртуальные машины (virtual machines - VM) вместо физических систем. Ключевым компонентом является программное обеспечение для виртуализации, называемое монитором виртуальной машины (virtual machine monitor - VMM) и позволяющее эмулировать физическую машину. Пользователи изолированы безопасным образом в рамках своих "гостевых" виртуальных машин и не беспокоятся о том, что они делят используемую физическую машину ("узел") с множеством других пользователей.

18.1. Знакомство с SnowFlock

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

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

SnowFlock решает эти проблемы с помощью технологии клонирования виртуальных машин (VM Cloning), представленной вызовом API. Аналогично тому, как код приложения вызывает службы ОС с помощью интерфейса системных вызовов при повседневной работе, на сегодняшний день он также может вызывать службы облачных сервисов, используя подобный интерфейс. С помощью технологии клонирования виртуальных машин операции резервирования ресурсов, управления кластером, а также логика приложения могут быть объединены программно и рассматриваться как отдельная логическая операция.

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

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

Учитывая наличие API для программного контроля за клонированием виртуальных машин и наличие биндингов для языков C, C++, Python и Java, SnowFlock является весьма гибким и многоцелевым программным компонентом. Мы успешно использовали SnowFlock в реализации прототипов нескольких значительно отличающихся друг от друга систем. В условиях параллельных вычислений мы достигли превосходных результатов, клонируя работающие виртуальные машины, которые совместно распределяли нагрузку между множеством физических узлов. При работе с приложениями для параллельных вычислений мы использовали интерфейс передачи сообщений (Message Passing Interface - MPI) и запускали их на кластере выделенных серверов, при этом модифицировав метод запуска интерфейса передачи сообщений для того, чтобы повысить производительность немодифицированных приложений и снизить затраты ресурсов, предоставляя кластер из только что клонированных виртуальных по запросу при каждом запуске. Наконец, в значительно отличающемся случае, мы использовали SnowFlock для повышения эффективности и производительности elastic-серверов. На сегодняшний день облачные elastic-серверы осуществляют холодную загрузку новых рабочих серверов при необходимости обработки повышенных нагрузок. Применяя вместо этого технологию клонирования виртуальных машин, SnowFlock позволяет вводить в строй новые рабочие серверы в 20 раз быстрее, а так как клонированные виртуальные машины наследуют рабочие буферы от родительской виртуальной машины, они быстрее достигают своей пиковой производительности.


Далее: 18.2. Технология клонирования виртуальных машин