Как стать автором
Обновить

Eucalyptus – «облако» своими руками

Время на прочтение5 мин
Количество просмотров4.6K
Существующие технологии «облачных вычислений» позволяют не только использовать публичные сервисы, на подобии Amazon, но и самостоятельно разворачивать «облачные» инфраструктуры, как на базе предприятий, так и в домашних условиях. Существуют свободно распространяемые системы для таких частных облаков. Эти системы доступны каждому, но их установка может стать непростой задачей. Опыту установки одной из наиболее известных таких систем и посвящена данная статья.

Eucalyptus — это разработка сотрудников University of California, Santa Barbara, распространяемая по лицензии GPL v3. Архитектурно Eucalyptus состоит из нескольких основных элементов:
  • Cloud Controller – контроллер «облака», принимает запросы от пользователей на создание виртуальных машин;
  • Walrus – хранилище пользовательских данных и образов виртуальных машин;
  • Cluster Controller – контролер кластера, распределяет задачи по запуску виртуальных машин между узлами;
  • Node Controller – контролер узла, управляет жизненным циклом виртуальных машин.


image


Для развёртывания собственного «облака» были выделены две машины со следующей конфигурацией:

Компьютер, выполняющий функции контроллера облака, контроллера кластера и сетевого хранилища:
  • Оборудование:
    • процессор Intel Pentium 3,0 ГГц;
    • оперативная память – 1 Гб;
    • жёсткий диск – 80 Гб;
    • две карты сетевого интерфейса.
  • Операционная система:
    • Debian Lenny 5.03.

Компьютер, выполняющий функции контроллера узла:
  • Оборудование:
    • процессор Intel Pentium 3,0 ГГц;
    • оперативная память – 512 Мб;
    • жёсткий диск – 80 Гб;
    • карта сетевого интерфейса.
  • Операционная система:
    • Debian Lenny 5.03.

Начнём с того, что перед установкой Eucalyptus на каждой машине-узле должен быть установлен предпочитаемый гипервизор (Xen или KVM). Установка их не имеет особенностей и делается согласно руководству администратора.

Приступим к установке Eucalyptus версии 1.5.2. В общих чертах руководство по установке приведено на сайте разработчика, но, как показала практика установки, оно не описывает некоторые подводные камни.
В частности, для исключения возможных проблем в дальнейшей работе системы, перед установкой необходимо выполнить несколько основных действий:
  • на всех используемых хостах необходимо проверить синхронизацию времени;
  • на всех хостах должен быть создан пользователь eucalyptus с правами запуска от имени root’а;
  • реализовать возможность беспарольного доступа по ssh между контроллером кластера и контроллерами узлов для пользователя eucalyptus.

После этого установка системы Eucalyptus производится стандартным инсталлятором без проблем. Для запуска системы выполняем команды:
  • на контроллере «облака»
    # $EUCALYPTUS/etc/init.d/eucalyptus-cloud start
    # $EUCALYPTUS/etc/init.d/eucalyptus-cc start
  • на контроллере узла
    # $EUCALYPTUS/etc/init.d/eucalyptus-nc start

Службы стартовали, в логах ошибок не видно. Теперь зарегистрируем наш кластер на контролере облака:
$ $EUCALYPTUS/usr/sbin/euca_conf -addcluster <clustername> <clusterhost>
Добавляем машины-узлы к нашему кластеру:
$ $EUCALYPTUS/usr/sbin/euca_conf -addnode "<nodehost1> ... <nodehostN>"

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

Далее заходим по адресу <clusterhost>:8443 и указываем всю необходимую информацию на веб-портале для управления «облаком».
Основная часть работы сделана – развёрнута «облачная» инфраструктура. Теперь остаётся добавить в хранилище образы виртуальных машин и запустить их.

Имитировать пользовательский хост мы будем при помощи виртуальной машины с Debian lenny на борту. Скачиваем и устанавливаем Euca2ools. С сайта нашего «облака» скачиваем сертификат X.509 и добавляем необходимую информацию в систему:
$ mkdir ~/.euca
$ cd ~/.euca
$ unzip name-of-the-key-zip.zip
$ chmod 0700 ~/.euca
$ chmod 0600 ~/.euca/*
$ . ~/.euca/euca2-*/eucarc


Теперь можно проверить работоспособность «облака». Проверим, видны ли кластер и машина-узел:
$ euca-describe-availability-zones verbose
AVAILABILITYZONE MyCluster 192.168.0.1
AVAILABILITYZONE |- vm types free / max cpu ram disk
AVAILABILITYZONE |- m1.small 0002 / 0002 1 128 10
AVAILABILITYZONE |- c1.medium 0002 / 0002 1 256 10
AVAILABILITYZONE |- m1.large 0001 / 0001 2 512 10
AVAILABILITYZONE |- m1.xlarge 0000 / 0000 2 1024 20
AVAILABILITYZONE |- c1.xlarge 0000 / 0000 4 2048 20
AVAILABILITYZONE |- 192.168.0.2
certs[cc=true,nc=true] @ Mon Apr 05 15:13:30 PST 2010


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

Производим требуемые действия, но в середине загрузки появляется ошибка:
500 Unable to parse date

Проблема заключается в том, что на виртуальной машине сбилась дата. Забыли про главное правило – синхронизация времени. Синхронизируем нашу виртуальную машину, повторяем процесс загрузки – всё без ошибок.
Проверяем что получилось:
$ euca-describe-images
IMAGE eki-747416B3 debian-kernel-bucket/vmlinuz-2.6.26-2-xen-686.manifest.xml admin available public x86_64 kernel

IMAGE eri-DA6317EF debian-ramdisk-bucket/initrd.img-2.6.26-2-xen-686.manifest.xml admin available public x86_64 ramdisk

IMAGE emi-076811AA debian-image-bucket/deb.img.manifest.xml admin available public x86_64 machine


Запускаем виртуальную машину:
$ euca-run-instances –t c1.medium --kernel eki-747416B3 --ramdisk eri-DA6317EF emi-076811AA

К несчастью, образ копируется из хранилища на машину-узел, но при запуске падает. Проблема кроется во взаимодействии контроллера узла и гипервизора. Ищем на машине-узле файл, отвечающий за данное взаимодействие — /usr/share/eucalyptus/gen_libvirt_xml. В строку, отвечающую за дополнительные настройки запуска виртуальной машины, добавляем ещё один параметр xencons=tty так, чтобы строка приняла вид:
root=/dev/sda1 xencons=tty

Повторяем процедуру запуска:
$ euca-run-instances –t c1.medium --kernel eki-747416B3 --ramdisk eri-DA6317EF emi-076811AA
INSTANCE i-3E190649 emi-076811AA 192.168.0.5 192.168.0.5 running c1.medium 2010-04-05T15:43:37.916Z

Желаемый результат получен – создана «облачная» инфраструктура, загружен и запущен образ виртуальной машины. Полученная платформа может применяться для предоставления, как внутрикорпоративных, так и публичных сервисов.
Стоит отметить, что все компоненты могут быть установлены на один физический хост. Это накладывает некоторые ограничения на функциональность, но достаточно удобно для изучения системы Eucalyptus. Не менее важным является тот факт, что Eucalyptus полностью совместим с сервисами Amazon. Таким образом, данная система может также использоваться как тестовая площадка для отладки образов, планируемых для использования на серверах Amazon. В данном примере мы создавали виртуальные машины на базе Linux, однако, возможности современных «облачных» систем позволяют запускать и виртуальные машины под управлением Windows. Этот вопрос оставим за рамками данной статьи.
Теги:
Хабы:
Всего голосов 36: ↑35 и ↓1+34
Комментарии10

Публикации

Истории

Ближайшие события