Управление облаком на open-source софте

    В последнее время очень модными стали решения по построению облачных систем, облака строят все кому не лень. Для конечного пользователя все прозрачно: «Вот тебе точка входа, вот там твои ресурсы — используй!» И мало кто из них задумывается о том, как оно все устроено внутри. Да и не надо им знать, в сущности. Однако, людям, которые заняты как раз конфигурированием подобных систем, очень интересно, а как же это работает у других? И главное — на чем?


    В данный момент имеется достаточно программного обеспечения для создания облачной инфраструктуры и управления ею. Это продукты от VMware, Citrix, Red Hat и т. д. В этом же ряду стоит очень интересный софт под названием OpenNebula. Он содержит в себе инструменты по администрированию системы с консольным и графическим интерфейсом, а также инструменты для конечных пользователей, которые позволяют управлять ресурсами. Посмотреть пример работы можно на видео.

    Что ж, попробуем развернуть свою собственную систему управления облаком. Стоит сказать, что в данном материале не будут рассматриваться вопросы подключения к хостам виртуализации — только установка и обзор возможностей.

    Preconfig


    Итак, для начала ставим Ubuntu 11.10 64 bit Server (можно ставить как на голое железо, так и в качестве виртуальной машины). Установку Ubuntu не рассматриваем, т. к. она проста и описана везде, где только можно. Далее начинаем преконфигурацию сервера.

    Создаем пользователя oneadmin и группу cloud:

    mkdir -p /srv/cloud/
    groupadd -g 10000 cloud
    /srv/cloud/one as home folder.
    useradd -u 10000 -m oneadmin -d /srv/cloud/one -s /bin/bash -g cloud
    passwd oneadmin
    chown -R oneadmin:cloud /srv/cloud/


    Проверим, возможен ли вход под oneadmin:

    su -l oneadmin
    exit


    Ставим mysql и создаем базу:

    apt-get install mysql-server mysql-admin

    # mysql -u root -p
    mysql> CREATE USER 'oneadmin'@'localhost' IDENTIFIED BY 'oneadmin';
    mysql> CREATE DATABASE opennebula;
    mysql> GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin' IDENTIFIED BY 'oneadmin';
    mysql> quit;




    Install&Configure


    Ставим необходимые пакеты:

    apt-get install g++ libxmlrpc-c3-dev scons libsqlite3-dev libmysqlclient-dev libxml2-dev libssl-dev ruby libxmlrpc-c3-0 libxmlrpc-core-c3-dev gems

    Заходим под oneadmin. Качаем дистрибутив OpenNebula 3.4.0, распаковываем и переходим в каталог:

    su -l oneadmin
    wget dev.opennebula.org/packages/opennebula-3.4.0/opennebula-3.4.0.tar.gz
    tar xzf opennebula-3.4.0.tar.gz
    cd opennebula-3.4.0/


    Задаем параметры сборки пакета:

    scons sqlite=no mysql=yes
    exit


    Устанавливаем OpenNebula под root’ом:

    ./install.sh -u oneadmin -g cloud -d /srv/cloud/one

    Снова заходим под oneadmin:

    su -l oneadmin

    И создаем переменные окружения:

    nano ~/.bash_profile
    export ONE_LOCATION=/srv/cloud/one
    export ONE_AUTH=$ONE_LOCATION/.one/one_auth
    export ONE_XMLRPC=http://localhost:2633/RPC2
    export PATH=$ONE_LOCATION/bin:/usr/local/bin:/var/lib/gems/1.8/bin/:/var/lib/gems/1.8/:$PATH


    Применяем:

    source ~/.bash_profile

    Создаем файл аутентификации, пароль указывается в явном виде:

    mkdir ~/.one
    echo "oneadmin:<THE_PASSWORD>" > ~/.one/one_auth


    Далее вносим необходимые изменения в конфигурационный файл oned.conf:

    nano ~/etc/oned.conf

    Нужно закомментировать строку:

    #DB = [ backend = "sqlite" ]

    И указать в качестве бэкэнда mysql:

    DB = [ backend = "mysql",
    server = "localhost",
    port =3306,
    user = "oneadmin",
    # passwd = "password",
    db_name = "opennebula" ]


    Значение passwd было закомментировано, так как для пользователя oneadmin в mysql пароль не был задан.

    Стартуем сервис oned:

    one start

    И даем команду «onevm list», просто чтобы посмотреть, запустится ли сервис:



    Вывод, понятное дело, будет пустым.

    Sunstone Install


    Итак, сервис стартовал, ставим необходимые пакеты и GUI:

    apt-get install rubygems
    gem install json sinatra thin install rack rails rake sequel sqlite3


    Далее необходимо поправить конфигурационный файл сервера Sunstone:

    nano /srv/cloud/one/etc/sunstone-server.conf

    Находим:

    # Server Configuration
    :host: 127.0.0.1
    :port: 9869


    И меняем на:

    # Server Configuration
    :host: 0.0.0.0
    :port: 8888


    Запускаем Sunstone-сервер под oneadmin и получаем ошибку, смотрим логи:

    sunstone-server start




    Исправляем ошибки:

    gem install rubygems-update
    update_rubygems
    gem update --system


    Стартуем sunstone:

    sunstone-server start

    GUI


    Заходим по адресу http:// ip_address_or_hostname:8888. Заполняем поля имя и пароль, ранее прописанные в one_auth:



    Достаточно аскетичный dashboard. С левой стороны дерево инструментов, справа — информация о службах и ресурсах:



    Можно переключиться на русский язык:



    Кому как привычнее:



    Итак, что мы имеем?

    Инструменты для создания пользователей, групп и списков доступа:









    Панель для создания образов виртуальных машин, самих виртуалок и шаблонов:





    И в самом низу — управление хостами, создание кластеров, добавление хранилищ и создание виртуальных сетей:



    Для примера выпадающее окно:



    Имеется возможность подключения различных гипервизоров:



    Enduser Interface


    Это была установка средств администрирования. А что же делать конечному пользователю? Не давать же ему доступ к админской консоли… Для обычных юзеров имеется другой инструментарий.

    OCCI install


    Находим и правим файл конфигурации occi сервиса:

    nano /srv/cloud/one/etc/occi-server.conf

    В этом файле необходимо поправить одну строчку:

    # Host and port where OCCI server will run
    :server: localhost
    :port: 4567


    на строку:

    :server: 0.0.0.0

    Мы поменяли еще и порт — поставили 8889, так как установка осуществляется на одном хосте. Далее доставим необходимые пакеты:

    apt-get install libxml2 libxslt expat

    И стартуем сервис occi:

    occi-server start

    Идем по нашему IP-адресу или доменному имени (кстати, в документации сказано, что в конфиге необходимо указывать именно FQDN) и смотрим, что у нас получилось:

    http:// ip-address_or_fqdn:8889/ui



    Логинимся на портал самообслуживания с логином oneadmin и паролем, который был указан ранее.
    Далее мы увидим только то, что сконфигурировали для данного пользователя. Если бы ранее мы создали другого пользователя, сконфигурировали для него подсеть, шаблоны ВМ и прочее, то увидели бы соответствующую картинку. А так мы наблюдаем девственно чистый дашборд:



    Ну и далее по пунктам:





    При наличии необходимых прав можно попробовать и здесь что-нибудь добавить, но работать оно не будет, т. к. не добавлены гипервизоры.



    К сожалению, тут русского языка нет, хотя он был бы кстати именно в клиентской части, а не в админке.



    Заключение


    Вот, собственно, и все. Сервер управления поставили, портал самообслуживания есть — вперед к облакам! Весь инструментарий достаточно прост и функционален. На нашем тестовом стенде все работает без проблем. Рулить всем можно и без GUI, прямо из консоли. Документация достаточно подробная.

    Кстати, есть другой способ установки: кому лень проходить описанные выше шаги, можно поставить все одной командой:

    apt-get install opennebula

    а потом возиться с настройкой конфигов.

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

    Удачи всем!

    madbug,
    DEPO Computers
    DEPO Computers 47,28
    Компания
    Поделиться публикацией
    Комментарии 15
    • +2
      Итак, для начала ставим Ubuntu 11.10 64 bit Server
      А сама Canonical участвует в проекте OpenStack, и именно эту IaaS-платформу продвигает. :-/
      • +1
        уже модно ставить 12.04 server, ибо LTS :)
        • +2
          При этом поддержку OpenNebula никто не отменял, в 12.04 server она так же должна войти в стандартный набор поддерживаемых пакетов.
          OpenStack сейчас очень активно драйвится коммерческими компаниями, OpenNebula изначально выросла из университетских кругов, она успешно используется во многих научно-исследовательских центрах. От этого свои плюсы и минусы. С точки зрения изящности решения opennebula на мой взгляд выглядит гораздо интереснее — не надо ставить агентов на каждый хост, управление гипервизорами осуществляется прозрачно, апдейты выходят сильно реже и более стабильные. В OpenStack же с каждым апдейтом что-нибудь да отваливается.
        • +3
          Как там работает кластеризация? сможет HA для инстансев без потерь при падении физического сервера?
          • +3
            Вот в ближайшее время отвечу на все вопросы, как только закончу все тесты.
          • +7
            *всучил воздушный шарик в карму куда только мог*
            Не знаю зачем оно мне, но пригодится!

            Насчёт проды про настройку «примеров подключения гипервизоров, создания сетей, хранилищ и всего прочего» — очень-очень сильно ждём!!! Это чуть не самое вкусненькое!
            • +1
              Хотелось бы продолжения, и впечатлений от работы!
              • +1
                Спасибо за обзор.
                Будем ждать продолжения.
                • +2
                  Да интересная штуковина, тут есть образ для VMWare с сразу предварительно настроенной OpenNebula 3.4.1 для управления ESX фермой
                  • 0
                    Я единственное не понял — виртуалки, какие в этом продукте создаются --> VMware или какие-то другие?
                    • 0
                      Как я понял то тут имеется поддержка API vCloud, EC2 Query, OGF OCCI.
                      • +1
                        Сюда загляните www.opennebula.org/documentation:rel3.4
                        • +1
                          OpenNebula посредством драйвером работает со всеми основными гипервизорами — ESXi, KVM, XEN, Hyper-V. Т.к. opennebula не является непосредственно ПО виртуализации, а есть средство управления, используется функционал гипервизоров посредством предоставляемых оными интерфейсов управления…
                        • +2
                          Спасибо за статью. Жаль, что нет описания работы с виртуальными машинами, а только установка. Но хорошо, что вы начали эту тему :) попытаюсь её поддерживать
                          • +1
                            Лучше подготовиться как следует, а потом уже описывать все подключения, чем в сыром варианте выкладывать материал. Поэтому здесь только управлялка, а все остальное чуть позже.
                            Спасибо за поддержку! ;)

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

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