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

    Существующие технологии «облачных вычислений» позволяют не только использовать публичные сервисы, на подобии 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. Этот вопрос оставим за рамками данной статьи.
    Поделиться публикацией

    Похожие публикации

    Комментарии 10
      0
      До чего же знакомые картинки:)
        0
        ох нефигасебе. Да это же UCSB! Я думал там совсем ничего годного не делают.
          +1
          Интересно, насколько оно фичастее, по сравнению с xencloud?
            +1
            Основываясь на документации, xencloud фичастее по работе с виртуальными машинами. В свою очередь Eucalyptus более ориентирован на взаимодействие с внешними «облачными» провайдерами. Есть надежда, что многие фичи, вышедшего в январе релиза xencloud, будут реализованы и в других «облачных» системах.
            +1
            Только что проснулся пораньше повозиться с новым сервером, и в документации наткнулся на описание Ubuntu Enterprise Cloud. Думается мне, развёртывание на большом количестве машин на ubuntu server будет чуть проще, чем на debian, там при установке сразу можно выбрать роли для этой машины.
            Вы не могли бы подсказать в двух словах, зачем локальное облако нужно, даёт ли оно возможности обычного сервера (точнее, вообще возможности полноценной линукс машины), и, если да, можно ли перенести функции своего сервера на облако какого-нибудь амазона?
              0
              Amazon фактически и является ресурсом, позволяющим расширять серверную инфраструктуру за пределы инфраструктуры предприятия. На выбор предлагается набор конфигураций виртуальных машин, на которые может быть установлено необходимое ПО.
              «Облако», говоря простым языком, является набором виртуальных машин с централизованным управлением. Соответственно, вполне можно создавать образы, которые будут выполнять функции обычного сервера.
                0
                если будете пробовать убунтовское облако, отпишитесь на хабре.
                  0
                  а… так в убунте тотже самый евкалиптус…
                  +1
                  и всё, таки.
                  поскольку распределение общих ресурсов происходит между виртуалками по физическим узлам,
                  в масштабе предприятия получается не очень эффективно.
                  развечто завести по отдельной виртуалке на каждую задачу (отдельно под DNS, MTA, файлсервер, DB, итп).

                  насколько вообще характерен такой подход для IaaS облаков?

                  ИМХО, гораздо эффективнее будет кластеризация.
                    0
                    Всё зависит от поставленных задач. Когда простым и «непростым» пользователям нужны виртуальные машины для выполнения их собственных задач — «облако» с веб-интерфейсом является более чем удобным решением. Несомненно, для расчёта различных математических и физических задач, кластеризация будет более эффективной.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое