По дороге с облаками. Пошаговое руководство по созданию инфраструктуры облачных вычислений на базе EucalyptusЛюбой системный администратор слышал об Amazon EC2, удобнейшей системе облачных вычислений, которая позволяет получить любое количество серверов любой конфигурации с помощью одного клика мышью и тут же зайти на них, используя SSH. Достоинства сервиса очевидны, как и его цена. Но стоит ли платить, когда такую же систему можно поднять на своих машинах за каких-нибудь 30 минут? По правде говоря, модель облачных вычислений уровня IAAS (Infrastructure As A Service) достаточна примитивна. Это просто зоопарк машин, объединенных в общий кластер и подключенных к головному серверу, выставленному во внешний мир. На каждой машине установлен Linux с поддержкой Xen или Kvm (сама машина также должна поддерживать аппаратную виртуализацию). Пользователь делает запрос к головному серверу о выделении новой виртуальной машины с указанной ОС и другими параметрами. Сервер обрабатывает запрос, выбирает наименее загруженную машину (возможны и другие варианты, например, RoundRobin), предоставляет ей образ указанной ОС и дает указание на старт. Машина запускает образ, а пользователю возвращается IP-адрес его виртуального сервера. Именно так работает инфраструктура Amazon EC2, а также ее OpenSource-аналог под названием Eucalyptus. Эвкалиптовое облакоEucalyptus представляет собой инфраструктуру для реализации модели облачных вычислений уровня IAAS, к особенностям которого можно отнести совместимость интерфейса управления с Amazon EC2 и простоту развертывания и конфигурирования. Eucalyptus версии 1.5.2 обладает следующими характеристиками:
УстройствоEucalyptus состоит из трех компонентов:
Устанавливается на машине, имеющей доступ к внешней сети, выступает в роли головного интерфейса для доступа к облаку. Обрабатывает пользовательские запросы на запуск виртуальных машин и собирает данные о загруженности узлов от контроллеров кластеров. Подготовка к установкеЯ буду устанавливать Eucalyptus в Ubuntu Linux, поэтому все последующие инструкции приведены для этой операционной системы. Если ты хочешь использовать другой дистрибутив, следуй инструкциям, приведенным в руководстве «Eucalyptus Administrator's Guide» (http://open.eucalyptus.com/wiki/ EucalyptusAdministratorGuide_v1.5.2) для систем CentOS 5.3, OpenSUSE 11, Debian Lenny 5.0 и Debian Squeeze/sid. Там же описан метод сборки системы из исходников и приведен список всех зависимостей. 1. Часы фронтенда, узлов и клиентских машин должны быть синхронизированы, поэтому на каждой из них необходимо выполнить следующие команды: 2. Компоненты Eucalyptus должны иметь возможность свободно общаться друг с другом. Для этого открой порты 8443, 8773 и 8774 на машине-фронтенде и порт 8775 на узлах. 3. Контроллер облака и узлы общаются, используя протокол SSH, поэтому между ними должен быть произведен взаимный обмен ключами пользователей root или eucalyptus. 4. Узлы должны быть сконфигурированы так, чтобы использовать bridge в качестве основного сетевого интерфейса. Для этого отключи или удали NetworkManager (который является неотъемлемым компонентом десктопной редакции Ubuntu), а затем установи пакет bridge-utils:
Теперь открой файл /etc/network/interfaces, закомментируй все имеющиеся настройки интерфейсов и добавь строки:
Если ты предпочитаешь настраивать интерфейсы вручную, приведи запись примерно к такому виду:
Запусти следующую команду, чтобы заставить систему перечитать сетевые настройки:
УстановкаКомпоненты eucalyptus разбиты на несколько пакетов:
Все они упакованы в один тарболл, поэтому для установки необходимо выполнить шаги: 1. Загрузить тарболл со странички http://open.eucalyptus.com/downloads. 2. Распаковать его во временный каталог и добавить путь до него в /etc/apt/sources.list:
3. Установить пакеты -cloud и -cc на машину-фронтенд (та, которая будет использоваться в качестве контроллера облака и кластера):
4. Установить контроллер узла на каждый узел, входящий в облако:
Обрати внимание, что все эти компоненты вытянут зависимостей на 140 Мб. Также понадобятся утилиты управления облаком Euca2ools, которые можно скачать с той же странички и установить на любую машину (возможно, фронтенд), следуя этим инструкциям:
Настройка фронтендаСкрипт настройки Eucalyptus изменяет конфигурационный файл $EUCALYPTUS/etc/ eucalyptus/eucalyptus.conf, поэтому мы должны присвоить переменной EUCALYPTUS правильное значение. Для Debian/Ubuntu оно будет равно «/»:
Перед началом конфигурирования убедись, что контроллер облака запущен и функционирует:
Если это не так, запусти его:
В случае возникновения ошибок обратись к журнальным записям:
Чтобы создать облако, необходимо зарегистрировать кластер и каждый подчиненный узел. Для этого выполни команду:
Замени имя_кластера на произвольное имя, а имя_хоста на DNS-имя машины или ее IP-адрес. Для регистрации узлов выполни:
Укажи в аргументе опции '-addnode' адреса всех узлов, которые должны быть вовлечены в облако. Конфигурирование web-интерфейсаОткрой страничку
Клиентские утилиты Euca2ools, совместимые с интерфейсом EC2, используют x509-сертификаты для доступа к контроллеру. Чтобы их сгенерировать, перейди на страничку Credentials и скачай сертификаты с помощью клика по кнопке Download certificates. Затем создай каталог ~/.euca и распакуй в него сертификаты. Выполни следующую команду:
Ее придется выполнять каждый раз, когда ты захочешь использовать клиентские утилиты из пакета Euca2ools, поэтому лучше поместить эту строку в ~/.bashrc. КОНФИГУРИРОВАНИЕ УЗЛОВ Eucalyptus предлагает четыре различных сетевых режима для гостевых ОС. По умолчанию выбран режим SYSTEM, при котором ОС получают произвольные адреса от DHCP-сервера. Второй режим называется STATIC и позволяет назначать каждой инстанции ОС свой собственный IP-адрес с помощью внутреннего DHCP-сервера. Режим MANAGED размещает ОС в обособленных подсетях, подчиняющихся специальным правилам, заданным пользователем (например, запрет PING, открытие SSH-доступа к ОС, присвоение ВМ публичного IP и т.д.) Режим MANAGED-NOVLAN предоставляет все то же самое, за исключением сетевой изоляции подсетей. Для изменения сетевого режима достаточно открыть файл ВМ-образ Eucalyptus состоит из следующих компонентов: образ диска, ядро и RAM-диск (опциональный). Все их необходимо загрузить в Walrus и зарегистрировать в Eucalyptus. Ниже показано, как это сделать для дистрибутива Ubuntu 9.04, уже подготовленного для использования в Eucalyptus и доступного со странички http://open.eucalyptus.com/wiki/EucalyptusUserImageCreatorGuide_v1.5.2. Распаковываем архив:
Добавляем ядро в Walrus и регистрируем его в Eucalyptus:
Последняя команда напечатает уникальный идентификатор ядра (eki), который нужно присвоить переменной $EKI. Добавляем и регистрируем RAM-диск:
На этот раз euca-register выведет на экран идентификатор RAM-диска, который необходимо присвоить переменной $ERI. Добавляем и регистрируем образ диска:
Используя web-интерфейс (страница Configuration), можно указать идентификаторы RAM-диска и ядра, которые будут использованы по умолчанию в том случае, если их ID не указаны в предыдущих командах. Для удаления образа сначала необходимо его «разрегистрировать»:
Затем удалить файлы из Walrus (указанные переменные устанавливаются командой «. ~/.euca/eucarc»):
УправлениеПосле того, как облако будет создано и настроено, администратор сможет добавлять и удалять узлы:
– а также добавлять и удалять образы виртуальных машин (как было показано в предыдущем разделе), конфигурировать облако, используя утилиту euca_conf или через редактирование файла $EUCALYPTUS/etc/ eucalyptus/eucalyptus.conf, плюс управлять пользователями. Пользователи, желающие пользоваться услугами облака, должны перейти на страницу https://адрес-контроллера-облака:8443/ и зарегистрироваться. После этого администратору будет выслан email, содержащий две ссылки, первая из которых приведет к принятию заявки, вторая — к отклонению. После перехода по первой ссылке пользователю будет выслан email, содержащий инструкции для активации аккаунта. В любой момент администратор может отключить или удалить пользователя, используя страницу Users web-интерфейса. Там же он может сам добавлять пользователей через самостоятельное заполнение формы, результатом чего, опять же, станет отправка «активационного письма» на адрес пользователя. ИспользованиеИтак, у нас есть собственное облако, и мы хотим его использовать, а именно — запрашивать ресурсы и получать их. В этом разделе рассказано, как это делать с точки зрения пользователя. Открываем в браузере страничку На экране появится окно входа. Жмем кнопочку Apply, заполняем форму и жмем «Sign up». В этот момент администратору отправляется сообщение, получив которое, он решит, стоит ли одобрять наш аккаунт или его лучше отклонить. В случае успеха на наш email придет сообщение с просьбой подтвердить аккаунт путем перехода по ссылке. После подтверждения аккаунта входим в сервис и попадаем на личную страничку. Жмем кнопку Download certificate, чтобы получить сертификаты. Распаковываем их в каталог ~/.euca (можно и в другой): И запускаем скрипт eucarc, который установит правильные значения переменных, необходимых для работы Euca2ools:
Скачиваем и устанавливаем Euca2ools (адрес приведен выше). Перед запуском виртуальных машин мы должны создать пару ключей, которые будут использоваться для доступа к ОС по протоколу SSH. Ниже мы используем mykey в качестве имени ключей, но ты можешь выбрать любое другое имя:
Теперь узнаем, какие образы есть на сервере и их emi (идентификатор образа):
И — запустим нужное количество ВМ с указанным emi: Проверим, запустились ли запрошенные ВМ: 1. Разрешить коннекты к SSH из внешней сети:
2. Сделать запрос на выделение публичного IP:
3. Ассоциировать IP с ВМ (ID возвращает команда euca-describe-instances):
4. Подключиться к ВМ:
Для остановки ВМ следует использовать команду:
ВыводыСегодня, имея достаточное количество машин, администратор и даже рядовой пользователь могут с легкостью организовать собственную систему облачных вычислений. Она обеспечит тестеров программного обеспечения любым количеством гетерогенных сред, выделяемых по запросу, позволит существенно повысить время бесперебойной работы Web-сервисов, создать грандиозный игровой портал или даже собственную версию Amazon EC2. Добро пожаловать в новый мир! EC2-команды для получения информацииПолучить описание и emi всех образов виртуальной машины: Получить список всех работающих ВМ, принадлежащих пользователю, выполнившему запрос: Показать все пары ключей, используемые для доступа к ВМ: Получить список кластеров/зон: InfoЛюбой пользователь может загружать и регистрировать образы (в зависимости от прав, предоставленных администратором), но только администратор может загружать и регистрировать ядра и RAM-диски. Пользователь может выбрать ядро и RAMдиск во время запуска ВМ:
Links• http://open.eucalyptus.com/wiki/EucalyptusPublicCloud — публичное облако на базе Eucalyptus, ресурсами которого может воспользоваться любой желающий. • http://cloud42.net, www.ec2dream.com — две реализации Web-интерфейса для управления EC2облаком. |