Облако Ubuntu

Облачные вычисления являются моделью вычислений, позволяющей предоставлять требуемые вычислительные мощности по запросу из общего набора имеющихся ресурсов. Такие ресурсы, как хранилище, вычислительная мощность, сеть и программное обеспечение, являются абстрактными и предоставляются как сервис через интернет в любом месте в любое время. Счет на данные ресурсы выставляется по времени использования, аналогично тому как оплачиваются электричество, вода или телефония. Инфраструктура облака Ubuntu использует программное обеспечение с открытым кодом OpenStack для создания в высшей степени масштабируемых облачных вычислений как для открытых, так и частных облаков.

Обзор

Это руководство показывает установку OpenStack с образа Ubuntu 12.04 LTS Server Edition и предполагает базовую сетевую топологию с единственной обслуживающей системой по принципу облачной системы "все в одном". Поскольку рассмотрение упрощено, данные инструкции как есть не предназначены для построения промышленных серверов, а только позволяют вам получить проверку концепции построения облака Ubuntu с использованием OpenStack.

Необходимые требования

Для развертывания минимальной инфраструктуры облака Ubuntu вам потребуется как минимум:

  1. одна выделенная система.

  2. два диапазона сетевых адресов (частная и доступная сети).

  3. выбранный сервер поддерживает VT (виртуальную технологию на аппаратном уровне) поскольку мы будем использовать в качестве виртуальной платформы KVM. Другие гипервизоры, как QEMU, UML, Vmware ESX/ESXi и XEN, тоже поддерживаются. Также поддерживается LXC (Linux Containers) через использование libvirt.

    Проверьте, что ваша система поддерживает kvm, выполнив sudo kvm-ok в линукс-терминале.

Минимальная топология, рекомендованная для промышленного использования предполагает три узла - один мастер-сервер для работы nova сервисов (кроме вычислений) и два сервера для запуска вычислительной среды nova. Такая установка не является избыточной и включает единую точку отказа (SPoF) в виде мастер-сервера.

Предварительная настройка сети

Перед тем, как устанавливать OpenStack нам требуется убедиться, что установлена поддержка сетевых мостов, база данных MySQL и сервер времени ntp. Это будет гарантировать, что мы будем содержать машины и сетевые узлы синхронизированными.

В этом примере "частная(private) сеть" будет из диапазона 10.0.0.0/24 на интерфейсе eth1. Все внутренние взаимодействия между экземплярами системы будут проходить там, в то время как "общедоступная(public) сеть" будет из диапазона 10.153.107.0/29 на интерфейсе eth0.

Установка поддержки мостов

sudo apt-get install bridge-utils

Установка и настройка NTP

sudo apt-get install ntp

Следующие две строки добавьте в файл /etc/ntp.conf:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Перезапустите сервис ntp:

sudo service ntp restart

Установка и настройка MySQL

sudo apt-get install mysql-server

Создайте базу данных и mysql пользователя для OpenStack:

sudo mysql -uroot -ppassword -e "CREATE DATABASE nova;"
sudo mysql -uroot -ppassword -e "GRANT ALL ON nova.* TO novauser@localhost \ 
IDENTIFIED BY 'novapassword' ";

Символ продолжения строки "\" подразумевает, что вы включаете следующую строку как продолжение текущей команды.

Установка вычислительного ресурса OpenStack (Nova)

Вычислительный ресурс OpenStack (Nova) является диспетчером облачного процесса вычислений (основной частью системы IaaS - инфраструктура как сервис). Он написан на Python с использованием оболочек Eventlet и Twisted и опирается на стандарты AMQP протокола сообщений и SQLAlchemy для доступа хранилищам данных.

Установим компоненты OpenStack Nova:

sudo apt-get install nova-api nova-network nova-volume nova-objectstore nova-scheduler \
nova-compute euca2ools unzip

Перезапустим libvirt-bin просто чтобы быть уверенными, что libvirtd знает об ebtables (фильтре для сетевых мостов):

sudo service libvirt-bin restar

Установим RabbitMQ - расширенный протокол очереди сообщений (AMQP):

sudo apt-get install rabbitmq-server

Отредактируем /etc/nova/nova.conf и добавим следующее:

# Nova config FlatDHCPManager
--sql_connection=mysql://novauser:novapassword@localhost/nova
--flat_injected=true
--network_manager=nova.network.manager.FlatDHCPManager
--fixed_range=10.0.0.0/24
--floating_range=10.153.107.72/29
--flat_network_dhcp_start=10.0.0.2
--flat_network_bridge=br100
--flat_interface=eth1
--public_interface=eth0

Перезапустим сервисы OpenStack:

for i in nova-api nova-network nova-objectstore nova-scheduler nova-volume nova-compute; \
do sudo stop $i; sleep 2; done

for i in nova-api nova-network nova-objectstore nova-scheduler nova-volume nova-compute; \
do sudo start $i; sleep 2; done

Перенесем базу данных Nova с sqlite на MySQL. Это может занять длительное время:

sudo nova-manage db sync

Определим отдельную частную сеть, в которой будут работать все ваши элементы. Она будет использоваться с фиксированными адресами IP, указанными в nova.conf:

sudo nova-manage network create --fixed_range_v4 10.0.0.0/24 --label private \
--bridge_interface br100

Определим отдельную общедоступную сеть и разместим в ней 6 плавающих IP адресов, начиная с 10.153.107.72, для использования элементами среды:

sudo nova-manage floating create --ip_range=10.153.107.72/29

Создадим пользователя (user1), проект (project1), загрузим учетную запись и получим конфигурационный файл:

cd ; mkdir nova ; cd nova
sudo nova-manage user admin user1
sudo nova-manage project create project1 user1
sudo nova-manage project zipfile project1 user1
unzip nova.zip
source novarc

Проверм установку вычислительного ресурса OpenStack, набрав:

sudo nova-manage service list
sudo nova-manage version list

Если сервисы nova не отработают корректно, перезапустите сервисы OpenStack, как описывалось выше. Для дополнительной информации смотрите секцию Поддержка и решение проблем в этом руководстве.

Установка сервиса образов систем (Glance)

Nova использует сервис Glance для управления образами операционных систем, которые требуются для поднятия экземпляров системы. Glance может использовать различные типы систем хранилищ, такие как файловое хранение, S3 (Simple Storage Service) и пр. Glance состоит из двух компонентов: glance-api и glance-registry. Они могут управляться с использованием соответствующих задач загрузки сервисов. Для нашего примера в качестве хранилища мы будем использовать mysql.

Установка Glance:

sudo apt-get install glance

Создадим базу данных и пользователя для glance:

sudo mysql -uroot -ppassword -e "CREATE DATABASE glance;"
sudo mysql -uroot -ppassword -e "GRANT ALL ON glance.* TO glanceuser@localhost \
IDENTIFIED BY 'glancepassword' ";

Отредактируем файл /etc/glance/glance-registry.conf и изменим строку, содержащую опцию "sql_connection =", на следующее:

sql_connection = mysql://glanceuser:glancepassword@localhost/glance

Удалим базу данных sqlite:

rm -rf /var/lib/glance/glance.sqlite

Перезапустим glance-registry после внесенных изменений в /etc/glance/glance-registry.conf. База данных MySQL будет автоматически заполнена:

sudo restart glance-registry

При поиске проблем посмотрите файлы журналов /var/log/glance/api.log и /var/log/glance/registry.log.

Работающие экземпляры (instances)

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

Загрузите, зарегистрируйте и опубликуйте облачный образ Ubuntu:

distro=lucid
wget http://cloud-images.ubuntu.com/$distro/current/$distro-server-cloudimg-amd64.tar.gz
cloud-publish-tarball "$distro"-server-cloudimg-amd64.tar.gz "$distro"_amd64
Здесь используется дистрибутив lucid (10.04), но скорее всего можно использовать любой поддерживаемый, например, precise. (прим. пер.)

Создайте ключевую пару для пользователя и подготовьте экземпляр системы:

cd ~/nova
source novarc
euca-add-keypair user1 > user1.priv
chmod 0600 user1.priv

Разрешите доступ по icmp (ping) и ssh к экземплярам:

euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
euca-authorize -P icmp -t -1:-1 default

Запустите экземпляр системы:

ami=`euca-describe-images |  awk {'print $2'} | grep -m1 ami`
euca-run-instances $ami -k user1 -t m1.tiny
euca-describe-instances

Присвойте экземпляру адрес общедоступной сети:

euca-allocate-address
euca-associate-address -i instance_id public_ip_address
euca-describe-instances

Вы здесь должны ввести instance_id (ami) и public_ip_address, показанные выше командами euca-describe-instances и euca-allocate-address.

Теперь вы можете использовать SSH доступ к экземпляру:

ssh -i user1.priv ubuntu@ipaddress

Для выключения экземпляра:

euca-terminate-instances instance_id

Установка хранилища инфраструктуры (Swift)

Swift является распределенным хранилищем высокой доступности соответствия object/blob. Оно используется инфраструктурой OpenStack для предоставления S3-подобных облачных сервисов хранения. Оно также совместимо с S3 api от Amazon.

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

Хотя вы можете установить Swift на единственный сервер, для промышленных сред требуется установка на несколько серверов. Если вы хотите установить хранилище объектов OpenStack (Swift) на отдельный сетевой сервер для разработки или тестирования, используйте инструкции установки 'Swift все в одном' на Ubuntu.

Дополнительная информация доступна по адресу: http://swift.openstack.org/development_saio.html.

Поддержка и решение проблем

Поддержка сообщества:

  1. Присоединяйтесь к IRC каналу #openstack на freenode.

Ссылки

Термины

Документация по облаку Ubuntu использует терминологию, которая некоторым может быть непонятна. Эта секция предоставляет словарь таких терминов и аббревиатур.

  1. Облако (Cloud) - объединенный набор физических машин, которые предлагают вычислительные ресурсы с помощью виртуальных машин, резервируемых и выделяемых динамически.

  2. IaaS - инфраструктура как сервис - Сервисы облачной инфраструктуры, благодаря которым виртуальное окружение предоставляется провайдером в виде сервиса через интернет. Инфраструктура может включать сервера, сетевое оборудование и программное обеспечение.

  3. EBS - Эластичное блочное хранилище.

  4. EC2 - Эластичное облако вычислений. Общедоступные облачные вычисления, предоставляемые Amazon на основе почасовой или погигабайтной оплаты.

  5. Узел (Node) - физическая машина, которая может запускать виртуальные машины по команде контроллера узлов (node controller). Для Ubuntu это в основном означает, что центральный процессор (CPU) поддерживает расширения VT (аппаратной виртуализации) и может запускать гипервизор KVM.

  6. S3 - простой сервис хранения - Решение Amazon для предоставления хранилища с погигабайтной оплатой для EC2.

  7. Облако Ubuntu - Решение облачных вычислений для Ubuntu, основанное на OpenStack.

  8. ВМ (VM) - виртуальная машина.

  9. VT - технология виртуализации. Особенность некоторых современных процессоров, позволяющая ускорять работу виртуальных машин.