Глава 2. Установка OpenStack

Содержание

Требования системы
Требования операционной системы
Начальная настройка сети
Настройка интерфейса
Перед тем как вы начнете
Права доступа
Настройка репозитория OpenStack
Установка утилит OpenStack
Задание имен хостов
Запрет SELinux
Удаление правил iptables
Установка и настройка протокола службы времени
Модернизация системы
Установка OpenStack
Установка и настройка сервера баз данных MySQL
Установка клиента MySQL
Установка и настройка сервера сообщений
Установка и настройка службы идентификации
Определение пользователей, владельцев и ролей в Keystone
Определение служб и API конечных точек в Keystone
Проверка установки Keystone
Установка переменных среды
Установка и настройка службы образов
Определение службы и API конечных точек Glance в Keystone
Проверка установки службы образов Glance
Установка и настройка вычислительной службы
Установка и настройка компонентов узла контроллера
Установка и настройка компонентов вычислительного узла
Проверка связи между узлами
Установка инструментальной панели OpenStack
Разрешение соединения с инструментальной панелью
Идентификация сервера Keystone
Изменение адреса прослушивания
Проверка связи с инструментальной панелью
Заключение

Установка, настройка и сопровождение облаков OpenStack может быть трудной задачей при выполнении вручную. Многие сторонние поставщики предлагают загружаемое облачное программное обеспечение, основанное на OpenStack, которые обеспечивает развертывание и стратегии управления с помощью Chef, Puppet, Fuel, Ansible и других инструментов.

Эта глава послужит вам руководством по установке на основе пакетов следующих компонентов OpenStack в операционной системе CentOS:

  • Keystone
  • Glance
  • Nova Compute
  • Horizon

Описанный в данной главе процесс установки основан на OpenStack Installation Guide для Red Hat Enterprise Linux, CentOS и Fedora, который создан на http://docs.openstack.org/.

Если вы предпочли загрузить дистрибутив стороннего производителя на основе OpenStack, попробуйте один из следующих:

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

 Требования системы

Компоненты OpenStack предназначены для запуска на стандартной аппаратуре, которая варьируется от настольных компьютеров до серверов уровня предприятия. Процессоры вычислительных узлов требуют поддержки технологии виртуализации, подобной технологии Intel VT-x или AMD AMD-v.

Данная книга предполагает, что OpenStack будет установлена на физические аппаратные средства, которые отвечают следующим минимальным требованиям:

 Компоненты

Сервер Рекомендуемое оборудование Замечания

Узел контроллера (выполняет службы сетевой среды, томов, API, планировщика и образов)

Процессор: 64-битный x86
Оперативная память: 8ГБ
Объем диска: 80ГБ
Сеть: две сетевые платы интерфейса 1Gbps (NIC)

Хотя может использоваться один NIC, это не рекомендуется, а также не рассматривается в данном построении

Вычислительный узел (выполняет виртуальные экземпляры)

Процессор: 64-битный x86
Оперативная память: 16ГБ
Объем диска: 80ГБ
Сеть: две сетевые платы интерфейса 1Gbps (NIC)

Хотя может использоваться один NIC, это не рекомендуется, а также не рассматривается в данном построении

Хотя и машины, которые не отвечают минимальным требованиям, могут допускать установку на основе описанной здесь документации, тем не менее, здесь приведены данные требования чтобы гарантировать успешную практику.

 Требования операционной системы

OpenStack в настоящее время собран в пакеты для следующих дистрибутивов: CentOS, Debian, Fedora, RHEL, openSUSE, SLES и Ubuntu. В данной книге мы предполагаем, что на все хосты перед установкой OpenStack была установлена операционная система CentOS 6.5:

На момент написания рекомендовалась следующая минимальная версия ядра:

  • Версия ядра: 31.20.3.el6.x86_64.

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

 Начальная настройка сети

Для понимания того, как первоначально должна быть настроена сеть на каждом хосте давайте обратимся к следующему рисунку:


На предыдущем рисунке к каждому хосту подключены кабели к двум интерфейсам. Интерфейс eth0 будет служить в качестве интерфейса управления для служб OpenStack и доступа API, а eth1 будет использоваться в качестве моста для внешнего трафика и обмена владельца (tenant).

Как минимум, интерфейс управления должен быть настроен с IP-адресом, который имеет исходящий доступ в интернет. Доступ в интернет необходим для загрузки пакетов OpenStack из репозитория пакетов. Рекомендуется входящий доступ к адресу сервер управления через SSH (TCP порт 22).

На протяжении данной книги будут будут представлены примеры настроек и использованы различные службы OpenStack. Следующая таблица представляет VLAN-ы и связанные сети, используемые для этих служб:

Имя VLAN VLAN ID Сеть

MGMT_NET

10

10.254.254.0/24

OVERLAY_NET

20

172.18.0.0/24

GATEWAY_NET

50

10.50.0.0/24

TENANT_NET30

30

10.30.0.0/24

TENANT_NET31

31

10.31.0.0/24

TENANT_NET32

32

10.32.0.0/24

TENANT_NET33

33

10.33.0.0/24

Следующая таблица представляет рекомендуемые для каждого интерфейса IP адреса и ID VLAN, которые вы должны выбирать следуя нашим примерам:

Имя хоста Интерфейс Адрес IP Порт коммутации

controller.learningneutron.com

eth0

10.254.254.100

Порт доступа (VLAN 10, не помеченный- untagged)

 

eth1

С подключенным кабелем, но на данный момент не настроенный

Магистральный (trunk) порт (VLAN 20, 30-33, 50)

compute01.learningneutron.com

eth0

10.254.254.101

Порт доступа (VLAN 10, не помеченный- untagged)

 

eth1

С подключенным кабелем, но на данный момент не настроенный

Магистральный (trunk) порт (VLAN 20, 30-33, 50)

Интерфейс eth1 каждого сервера будет настроен в Главе 4. Построение инфраструктуры виртуальной коммутации. На текущий момент интерфейс должен быть соединен кабелем и соответствующий порт коммутатора должен быть настроен как магистральный (trunk). На случай потери связи настоятельно рекомендуется через DRAC, iLo или другой механизм доступа контроллера управления системной платой (out-of-band).

 Настройка интерфейса

CentOS применяет индивидуальные файлы интерфейса для описания их настройки. Как только система загружена, эти файлы используются для определения того какие интерфейсы поднимать и как они должны быть настроены. Файлы настройки интерфейса могут быть найдены в /etc/sysconfig/network-scripts/

[Совет]Совет

Загрузка кода примера

Вы можете загрузить файлы примеров кода для всех купленных вами книг Packt из вашей учетной записи на http://www.packtpub.com. Где бы вы ни приобрели оригинал книги, вы можете посетить http://www.packtpub.com/support и зарегистрироваться, чтобы иметь файлы, высылаемые через e-mail непосредственно вам.

С использованием текстового редактора измените соответствующий фал интерфейса для eth0 на каждом хосте следующим образом:

# nano /etc/sysconfig/network-scripts/ifcfg-eth0

Далее приводится файл настройки eth0 для узла контроллера:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.254.254.100
NETMASK=255.255.255.0
GATEWAY=10.254.254.1

Следующим идет файл настройки eth0 для вычислительного узла:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.254.254.101
NETMASK=255.255.255.0
GATEWAY=10.254.254.1

Чтобы активировать внесенные изменения запустите повторяющуюся последовательность (cycle) для интерфейса с применением команд ifdown и ifup на каждом узле:

# ifdown eth0; ifup eth0

 Перед тем как вы начнете

Перед тем как вы сможете установить OpenStack, для подготовки системы к успешной установке должна быть выполнена некоторая работа.

 Права доступа

Службы OpenStack могут быть установлены либо пользователем с правами root или с полномочиями sudo. Последнее может потребовать чтобы пользователь был добавлен в файл sudoers на каждом хосте. Для ознакомления с трюками настройки sudoers, пожалуйста, посетите следующий URL:
http://wiki.centos.org/TipsAndTricks/BecomingRoot
{Прим. пер.: Для Ubuntu рекомендуется создать файл, названный именем пользователя, в каталоге /etc/sudoers.d/, содержащим следующую строку (для файла с именем /etc/sudoers.d/alice):

alice ALL = (root) NOPASSWD:ALL
},
Для данной установки все команды должны выполняться с правами root, если не оговорено обратное.

 Настройка репозитория OpenStack

Установка OpenStack в CentOS использует пакеты репозитория RedHat RDO. Чтобы сделать репозиторий RDO доступным, на всех хостах загрузите и установите пакет rdo-release-havana:

# rpm -ivh http://repos.fedorapeople.org/repos/openstack/openstackhavana/rdo-release-havana-8.noarch.rpm

Пакет EPEL включает в себя ключи GPG для помощи в подписании пакетов и информации репозитория и должен быть установлен на всех хостах:

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epelrelease-6-8.noarch.rpm

 Установка утилит OpenStack

На протяжении всей книги используется утилита crudini для того, чтобы сделать настройку различных служб быстрой и согласованной. crudini переписывает или добавляет индивидуальные установки настройки не переписывая весь файл. Следующая команда устанавливает crudini и другой полезный пакет настройки OpenStack, openstack-utils:

# yum -y install crudini openstack-utils

 Задание имен хостов

Перед установкой OpenStack проверьте что окружение каждого узла настроено с соотвествующим ему именем хоста. С применением текстового редактора измените значение HOSTNAME в файле /etc/sysconfig/network на каждом узле:

  • Узел контроллера: HOSTNAME=controller.learningneutron.com.
  • Вычислительный узел: HOSTNAME=compute01.learningneutron.com.

Для упрощения взаимодействия между хостами рекомендуется использовать DNS или локальный преобразователь имен (name resolver) для разрешения имен хостов. При помощи текстового редактора на каждом узле измените файл /etc/hosts с тем, чтобы он содержал IP адреса управления и имена хостов всех узлов:

10.254.254.100 controller.learningneutron.com controller
10.254.254.101 compute01.learningneutron.com compute01

 Запрет SELinux

Во избежание проблем со связью между службами рекомендуется запретить на всех узлах политику безопасности SELinux на протяжении данной установки и последующего тестового использования.

SELinux может быть установлена в одно из следующих трех состояний:

  • enforcing: Принудительно применяется политика безопасности SELinux.
  • permissive: SELinux выдает предупреждения вместо принудительного применения.
  • disabled: Никакая политика SELinux не загружена.

Чтобы запретить SELinux, отредактируйте файл /etc/selinux/config и измените значение SELinux на disabled. Для вашего удобства следующая команда сделает соответствующее изменение:

# sed -i "/SELINUX=enforcing/c\SELINUX=disabled" /etc/selinux/config

 Удаление правил iptables

CentOS поставляется с достаточно ограничительными правилами по умолчанию. Отредактируйте службу iptables межсетевого экрана чтобы позволить весь входящий трафик следующими командами:

# iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
# iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
# service iptables save
[Совет]Совет

Изменения правил призваны уменьшить возможные проблемы с данным руководством по установке и не предназначены для применения в промышленной реализации. Обратитесь к инструкции по безопасности OpenStack на http://docs.openstack.org/sec/ для получения дополнительной информации по безопасности среды OpenStack.

 Установка и настройка протокола службы времени

Программа синхронизации времени, подобная NTP, крайне необходима, поскольку службы OpenStack зависят от согласованности и синхронности времени между хостами. Для Nova (вычислительная служба) наличие синхронного времени позволяет избегать проблем при запуске виртуальных машин по рассписанию на вычислительных узлах. Другие службы могут испытывать подобные проблемы при рассинхронизации времени.

Для установки NTP выполните следующие команды на всех узлах в вашем окружении:

# yum -y install ntp
# service ntpd start

В отличие от Ubuntu, операционные системы RHEL и CentOS не запускают автоматически службы после установки. Для настройки запуска NTP при загрузке воспользуйтесь командой chkconfig, как показано ниже:

# chkconfig ntpd on

 Модернизация системы

Перед установкой OpenStack важно, чтобы ядро и другие пакеты системы на всех узлах были обновлены до последней поддерживаемой версии CentOS 6.5. Выполните следующую команду yum на каждом узле с последующей перезагрузкой, чтобы изменения вступили в силу:

# yum -y upgrade
# reboot

 Установка OpenStack

Этапы оставшейся части главы устанавливают службы OpenStack включая Keystone, Glance, Nova Compute и Horizon на отдельный контроллер и вычислительный узел. Neutron, служба сетевой среды OpenStack, будет установлена в следующей главе.

 Установка и настройка сервера баз данных MySQL

На узле контроллера воспользуйтесь yum для установки сервера баз данных MySQL:

# yum -y install mysql mysql-server MySQL-python

После установки настройте IP адрес, с которым будет связан MySQL изменив файл настройки /etc/my.cnf и добавив определение bind-address. Выполнение этого позволит связываться с MySQL другим хостам окружения. Значение для bind-address должно быть IP иправления узла контролера:

# crudini --set /etc/my.cnf mysqld bind-address 10.254.254.100

Запустите процесс mysqld и настройте его запуск при загрузке:

# service mysqld start
# chkconfig mysqld on

Утилита безопасной установки MySQL используется для построения базы данных MySQL по умолчанию и установки пароля для пользователя root MySQL. Следующая команда начнет процесс установки и настройки MySQL:

# mysql_secure_installation

В процессе установки MySQL вы получите запросы на ввод пароля и изменение различных настроек. Для данной установки выбран пароль openstack для root. Для вашего окружения настоятельно рекомендуется более приспособленный с точки зрения безопасности пароль.

Чтобы покинуть процесс настройки ответьте [Y]es на оставшиеся вопросы. На данный момент времени сервер MySQL был успешно установлен на узле контроллера.

 Установка клиента MySQL

Помимо сервера MySQL, вычислительные узлы в среде должны быть настроены как клиенты MySQL. Установите клиент MySQL на compute01 следующим образом:

# mysql_secure_installation

 Установка и настройка сервера сообщений

Advanced Message Queue Protocol (AMQP) (Протокол расширенной очереди сообщений) является технологией сообщений выбранной для применения в облаке на основе OpenStack. Компоненты, подобные Nova, Cinder и Neutron внутренне взаимодействуют через AMQP и друг с другом с применением вызовов API. Ниже приводятся инструкции для установки Qpid, брокера AMQP. Популярные альтернативы содержат RabbitMQ и ZeroMQ.

На узле контроллера установите сервер сообщений:

# yum -y install qpid-cpp-server memcached

Для упрощения установки запретите аутентификацию Qpid отредактировав файл /etc/qpidd.conf и изменив параметр auth на no следующим образом:

# sed -i "/^auth/s/auth=yes/auth=no/" /etc/qpidd.conf
[Совет]Совет

Хотя запрещение аутентификации приемлемо для данного тестового окружения, в промышленной реализации аутентификация должна быть разрешена. Ознакомьтесь с документацией Qpid для дальнейших инструкций о том, как разрешить аутентификацию.

Запустите службу qpid и установите ее автоматический запуск при загрузке:

# service qpidd start
# chkconfig qpidd on

 Установка и настройка службы идентификации

Службой идентификации для OpenStack является KeyStone и она используется для аутентификации и авторизации пользователей и служб в облаке OpenStack. KeyStone должен быть установлен только на узле контроллера наряду с python-keystoneclient:

# yum -y install openstack-keystone python-keystoneclient

Настройте Keystone при помощи crudini для использования MySQL в качестве его базы данных. В данной установке имя пользователя и пароль будут keystone:

# crudini --set /etc/keystone/keystone.conf sql connection mysql://keystone:keystone@controller/keystone
[Совет]Совет

На протяжении данной книги используются не безопасные пароли для упрощения настройки, что не рекомендуется для использования в промышленном применении. Посетите http://www.strongpasswordgenerator.org для создания сильного пароля для вашей среды.

Для создания базы данных Keystone, связанных таблиц и пользователя базы данных keystone, который будет использован для службы Keystone для связи с базой данных, воспользуйтесь командой openstack-db

# openstack-db --init --service keystone --password keystone

Вы можете быть запрошены на ввод пароля пользователя root MySQL. Пока он не изменен, данная установка использует пароль openstack для MySQL root.

Определите маркер (жетон, token) авторизации для его использования как совместно используемого кода безопасности между Keystone и другими службами OpenStack. Когда он определен, маркер авторизации admin_token может быть использован для внесения изменений в Keystone в случае, если не был настроен пользователь с правами администратора или если пароль был забыт. Выполняющие к Keystone запросы клиенты могут передавать маркер авторизации, который затем удостоверяется Keystone перед выполнением действий.

Для создания случайного маркера и сохранения его в файле настройки может быть использован OpenSSL:

# ADMIN_TOKEN=$(openssl rand -hex 10)
# crudini --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

По умолчанию Keystone использует для аутентификации маркеры PKI. Следующие шаги создадут ключи и сертификаты подписи:

# keystone-manage pki_setup --keystone-user keystone --keystone-groupkeystone
# chown -R keystone:keystone /etc/keystone/* /var/log/keystone/keystone.log

Применив crudini, измените /etc/keystone/keystone.conf и установите значение provider для PKI:

# crudini --set /etc/keystone/keystone.conf token provider keystone.token.providers.pki.Provider

Запустите службу Keystone и разрешите ее старт во время загрузки введя следующие команды:

# service openstack-keystone start
# chkconfig openstack-keystone on

 Определение пользователей, владельцев и ролей в Keystone

После того, как установка Keystone завершилась, необходимо установить пользователей, владельцев (tenant), роли и конечные точки которые будут использовать различные службы OpenStack.

Обычно для аутентификации через Keystone используются имя пользователя и пароль. Однако, поскольку пользователи пока еще не были созданы, необходимо воспользоваться созданным ранее маркером авторизации. Маркер может быть передан с применением параметра --os-token команды keystone или путем установки значения переменной окружения OS_SERVICE_TOKEN. Мы воспользуемся обеими переменными окружения OS_SERVICE_TOKEN и OS_SERVICE_ENDPOINT для обеспечения маркера авторизации и определения того, где выполняется служба Keystone.

Воспользуйтесь командой export для экспорта переменной и ее значения в ваше окружение. OS_SERVICE_TOKEN должен быть установлен в определенное ранее значение $ADMIN_TOKEN:

# export OS_SERVICE_TOKEN=$ADMIN_TOKEN
# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0

В Keystone владельцы (tenant) представляют логическую группу пользователей, которым выделены ресурсы. Ресурсы выделяются владельцам, а не непосредственно пользователям. Создайте владельца admin для пользователя с правами администратора и владельца service для других служб OpenStack воспользовавшись следующим:

# keystone tenant-create --name=admin --description="Admin Tenant"
# keystone tenant-create --name=service --description="Service Tenant"

Для других пользователей облака дополнительные владельцы могут быть созданы позже. Далее, создайте пользователя с правами администратора с именем admin. Задайте пароль безопасности и адрес email для пользователя admin следующим образом:

# keystone user-create --name=admin --pass=secrete --email=admin@learningneutron.com

После создания пользователя admin создайте роль для административных задач с именем admin:

# keystone role-create --name=admin

Все созданные роли должны соответствовать ролям, определенным в файлах policy.json соответствующих служб OpenStack. Файлы политик по умолчанию используют роль admin для разрешения доступа к службам. Для дополнительной информации по управлению пользователями в Keystone, пожалуйста, ознакомьтесь со следующим URL: http://docs.openstack.org/admin-guidecloud/content/keystone-user-management.html.

Наконец, свяжите роль admin с пользователем admin при регистрации с владельцем admin следующим образом:

# keystone user-role-add --user=admin --tenant=admin --role=admin

 Определение служб и API конечных точек в Keystone

Каждая установленная служба OpenStack должна быть зарегистрирована в Keystone, следовательно можно отследить ее местоположение в сети. Существуют две команды, выполняющие регистрацию службы:

  • keystone service-create: Описывает создаваемую службу.
  • keystone endpoint-create: Связывает конечную точку API с соответствующей службой.

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

# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"

Результирующий вывод будет представлен в форме таблицы и будет содержать уникальный ID, который будет использоваться в последующих командах:

+-------------+----------------------------------+
| Property    |              Value               |
+-------------+----------------------------------+
| description | Keystone Identity Service        |
| id          | 47b36f2684e94cfdbd78ba912e6091ec |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+

Далее вы должны определить конечную точку API для службы идентификации с использованием выданного ID. При определении конечной точки вы должны предоставить URL для общедоступного API, внутреннего API и API администрирования. Эти три URL потенциально могут быть тремя различными сетевыми IP в зависимости от ваших сетевых установок, а также если используется NAT. Короткое имя контроллера будет использоваться для заполнения URL. Каждый хост может ссылаться на другой на основе имени хоста через DNS или созданных ранее локальных записей /etc/hosts. Давайте взглянем на следующие команды:

# keystone endpoint-create \
 --service-id=`keystone service-get keystone | awk '/ id / { print $4 }'` \
 --publicurl=http://controller:5000/v2.0 \
 --internalurl=http://controller:5000/v2.0 \
 --adminurl=http://controller:35357/v2.0

Результирующий вывод будет следующим:

+-------------+-----------------------------------+
| Property    |             Value                 |
+-------------+-----------------------------------+
| adminurl    | http://controller:35357/v2.0      |
| id          | 7c1112c14cd8494fbd8dadb09581926f  |
| internalurl | http://controller:5000/v2.0       |
| publicurl   | http://controller:5000/v2.0       |
| region      | regionOne                         |
| service_id  | 47b36f2684e94cfdbd78ba912e6091ec  |
+-------------+-----------------------------------+

 Проверка установки Keystone

Чтобы проверить, что Keystone был установлен и настроен соответствующим образом, воспользуйтесь командой unset для сброса значений переменных окружения OS_SERVICE_TOKEN и OS_SERVICE_ENDPOINT. Эти переменные нужны только для начальной загрузки пользователя с правами администратора и регистрации нашей службы Keystone. Давайте посмотрим на следующую команду:

# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

Когда значения переменных окружения сброшены, они должны быть доступными для использования аутентификации на основе имени пользователя. Вы можете запросить маркер аутентификации с применением пользователя admin и определенного ранее пароля:

# keystone --os-username=admin --os-password=secrete --os-authurl=http://controller:35357/v2.0 token-get

Keystone должен вернуть маркер, являющийся парой для предписанного ID пользователя. Это подтвердит что учетная запись установлена в Keystone с ожидаемыми полномочиями. Результирующий вывод следующий:

+-----------+----------------------------------+
| Property  |        Value                     |
+-----------+----------------------------------+
| expires   | 2014-07-25T00:45:46Z             |
| id        | <Base64-encoded Token>
| user_id   | 6d8b854881ff4568a22342fae7cc4df6 |
+-----------+----------------------------------+

Далее вы можете проверить, что авторизация работает соответствующим образом путем запроса авторизации для владельца:

# keystone --os-username=admin --os-password=secrete --os-tenantname=admin --os-auth-url=http://controller:35357/v2.0 token-get

Вы должны получить новый маркер в ответе, на данный момент содержащий ID владельца, обладающего admin. Это подтвердит, что учетная запись вашего пользователя имеет точное определение роли в описанном владельце и то, что владелец существует, как и ожидалось.

 Установка переменных среды

Чтобы избежать необходимости предоставлять учетные данные при каждом запуске вами команды OpenStack, создайте файл, содержащий переменные среды, который может быть загружен в любое время:

# mkdir ~/credentials

# cat >> ~/credentials/admin <<EOF
export OS_USERNAME=admin
export OS_PASSWORD=secrete
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller:35357/v2.0
EOF

Воспользуйтесь командой source для загрузки переменных окружения из файла. Чтобы проверить Keystone, выполните следующие команды:

# source ~/credentials/admin
# keystone token-get
# keystone user-list

Keystone должен вернуть необходимый маркер и список пользователей как на запросе ниже:


 Установка и настройка службы образов

Glance является службой образов для OpenStack. Он отвечает за хранение образов и моментальных снимков экземпляров, а также для предоставления образов вычислительным узлам при создании экземпляров.

Для установки Glance выполните следующую команду на узле контроллера:

# yum -y install openstack-glance

Вы можете воспользоваться командой openstack-db для инициализации базы данных Glance и добавления пользователя glance в MySQL:

# openstack-db --init --service glance --password glance

Воспользуйтесь crudini для установки строки соединения SQL в файлах настройки Glance:

# crudini --set /etc/glance/glance-api.conf DEFAULT sql_connection mysql://glance:glance@controller/glance
# crudini --set /etc/glance/glance-registry.conf DEFAULT sql_connection mysql://glance:glance@controller/glance

Затем вы можете добавить пользователя glance в Keystone и создайте соответствующую роль:

# keystone user-create --name=glance --pass=glance --email=glance@learningneutron.com
# keystone user-role-add --user=glance --tenant=service --role=admin

Воспользуйтесь crudini для установки атрибутов в файлах настройки Glance:

# crudini --set /etc/glance/glance-api.conf keystone_authtoken auth_host controller
# crudini --set /etc/glance/glance-api.conf keystone_authtoken admin_user glance
# crudini --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service
# crudini --set /etc/glance/glance-api.conf keystone_authtoken admin_password glance
# crudini --set /etc/glance/glance-registry.conf keystone_authtoken auth_host controller
# crudini --set /etc/glance/glance-registry.conf keystone_authtoken admin_user glance
# crudini --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service
# crudini --set /etc/glance/glance-registry.conf keystone_authtoken admin_password glance

Glance содержит файлы настройки по умолчанию которые необходимо скопировать и изменить следующим образом:

# cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-apipaste.ini
# cp /usr/share/glance/glance-registry-dist-paste.ini /etc/glance/glanceregistry-paste.ini

Каждый из упомянутых выше в предыдущих командах файлов должен быть изменен для добавления следующих параметров:

# crudini --set /etc/glance/glance-api-paste.ini filter:authtoken auth_host controller
# crudini --set /etc/glance/glance-api-paste.ini filter:authtoken admin_user glance

# crudini --set /etc/glance/glance-api-paste.ini filter:authtoken admin_tenant_name service
# crudini --set /etc/glance/glance-api-paste.ini filter:authtoken admin_password glance
# crudini --set /etc/glance/glance-api-paste.ini filter:authtoken flavor keystone

# crudini --set /etc/glance/glance-registry-paste.ini filter:authtoken auth_host controller
# crudini --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_user glance
# crudini --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_tenant_name service
# crudini --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_password glance
# crudini --set /etc/glance/glance-registry-paste.ini filter:authtoken flavor keystone

Вы можете запустить эти службы Glance и разрешить им запуск во время загрузки следующими командами:

# service openstack-glance-api start
# service openstack-glance-registry start
# chkconfig openstack-glance-api on
# chkconfig openstack-glance-registry on

 Определение службы и API конечных точек Glance в Keystone

Как и другие службы OpenStack, Glance должен быть добавлен в базу данных Keystone с помощью команд service-create и endpoint-create:

# keystone service-create --name=glance --type=image --description="Glance Image Service"

Вывод результата выглядит следующим образом:

+-------------+----------------------------------+
| Property    |              Value               |
+-------------+----------------------------------+
| description |       Glance Image Service       |
| id          | bbbacfbe630341b181659f00a2ef6a90 |
| name        |              glance              |
| type        |              image               |
+-------------+----------------------------------+

Значение id здесь должно быть использовано для заполнения значения service-id следующим образом:

# keystone endpoint-create \
 --service-id=`keystone service-get glance | awk '/ id / { print $4 }'`\
 --publicurl=http://controller:9292 \
 --internalurl=http://controller:9292 \
 --adminurl=http://controller:9292

Результирующий вывод таков:

+-------------+----------------------------------+
| Property    |              Value               |
+-------------+----------------------------------+
| adminurl    |      http://controller:9292      |
| id          | 32504596c4cc4661a04adbf1dfb97c08 |
| internalurl |      http://controller:9292      |
| publicurl   |      http://controller:9292      |
| region      |            regionOne             |
| service_id  | bbbacfbe630341b181659f00a2ef6a90 |
+-------------+----------------------------------+

 Проверка установки службы образов Glance

Чтобы проверить, что Glance установлен и настроен правильно загрузите тестовый образ из интернета и проверьте что он может быть выгружен на сервер образов:

# mkdir /var/tmp/images ; cd /var/tmp/images/
# wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img

Выгрузите образ на Glance с применением следующей команды:

# glance image-create --name=CirrOS-0.3.1 --disk-format=qcow2 --container-format=bare --is-public=true --file /var/tmp/images/cirros-0.3.1-x86_64-disk.img

Проверьте что этот образ существует в Glance с помощью команды image-list. Обратите внимание на следующий снимок экрана:


Образ CirrOS очень ограничен в функциональности и рекомендуется только для проверки связности и рабочей функциональности вычислительной среды (Compute). Многие производители предоставляют готовые для облаков образы для применения с OpenStack следующим образом:

Чтобы установить образ из удаленного местоположения примените параметр --location вместо --file следующим образом:

# glance image-create --name=Ubuntu-14.04 --disk-format=qcow2 --container-format=bare --is-public=true --location http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img

Другой взгляд на список образов (на следующем снимке экрана) показывает новые образы доступны для использования:


 Установка и настройка вычислительной службы

Вычислительная среда (Compute) это коллекция служб, которая позволяет оператором облака и владельцам запускать образы виртуальных машин. Большинство служб выполняются на узле контроллера за исключением службы openstack-nova-compute, которая работает на вычислительных узлах и отвечает за запуск экземпляров виртуальных машин.

 Установка и настройка компонентов узла контроллера

Установите пакет openstack-nova, который установит различные службы Nova (Compute), которые используются на узле контроллера, следующим образом:

# yum -y install openstack-nova python-novaclient

Выполните команду openstack-db для инициализации и создания базы данных службы Nova (Compute), связанных таблиц и пользователя MySQL следующим образом:

# openstack-db --init --service nova --password nova

Воспользуйтесь crudini для настройки Nova Compute для использования MySQL в качестве базы данных следующим образом:

# crudini --set /etc/nova/nova.conf database connection mysql://nova:nova@controller/nova

Установите эти ключи настройки для конфигурирования Nova (Compute) для использования брокера сообщений Qpid:

# crudini --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid
# crudini --set /etc/nova/nova.conf DEFAULT qpid_hostname controller

VNC Proxy является компонентой OpenStack, которая позволяет пользователям осуществлять доступ к их экземплярам с применением клиентов VNC. VNC означает Virtual Network Computing и является совместно используемой системой графического рабочего стола, которая использует протокол Remote Frame Buffer для управления другим компьютером через сеть. Контроллер должен быть способен взаимодействовать с вычислительными узлами для служб VNC чтобы работать надлежащим образом через инструментальную панель Horizon или других клиентов VNC.

Используйте crudini для установки параметров настройки my_ip, vncserver_listen и vncserver_proxyclient_address в значение адреса управляющего IP узла контроллера:

# crudini --set /etc/nova/nova.conf DEFAULT my_ip 10.254.254.100
# crudini --set /etc/nova/nova.conf DEFAULT vncserver_listen 10.254.254.100
# crudini --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.254.254.100

Создайте пользователя с именем nova в Keystone, который служба Nova (Compute) будет использовать для аутентификации. После этого поместите пользователя во владение (tenant) service и предоставьте пользователю роль admin:

# keystone user-create --name=nova --pass=nova --email=nova@learningneutron.com
# keystone user-role-add --user=nova --tenant=service --role=admin

Настройте Nova (Compute) на использование следующих полномочий Keystone:

# crudini --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_host controller
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_password nova

Полномочия должны быть добавлены в файл /etc/nova/api-paste.ini, который соответствует деталям данного построения. Эти параметры должны быть добавлены в раздел [filter:authtoken] файла ini:

# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_host controller
# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_port 35357
# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_protocol http
# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_uri http://controller:5000/v2.0
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_user nova
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_password nova

Вы можете убедится, что параметр api_paste_config=/etc/nova/api-paste.ini установлен на файл /etc/nova/nova.conf при помощи следующей команды:

# crudini --set /etc/nova/nova.conf DEFAULT api_paste_config /etc/nova/api-paste.ini

Вы должны зарегистрировать Nova (Compute) службой идентификации чтобы другие службы OpenStack могли определять ее местоположение. Зарегистрируйте эту службу и определите ее конечную точку:

# keystone service-create --name=nova --type=compute --description="Nova Compute service"

Результирующий вывод должен быть похож на:

+-------------+----------------------------------+
| Property    |              Value               |
+-------------+----------------------------------+
| description |       Nova Compute service       |
| id          | a946cbd06a124ec39662622cc2d6e4ec |
| name        |              nova                |
| type        |            compute               |
+-------------+----------------------------------+

Используйте возвращенное свойство id для создания конечной точки:

# keystone endpoint-create \
  --service-id=`keystone service-get nova | awk '/ id / { print $4 }'` \
  --publicurl=http://controller:8774/v2/%\(tenant_id\)s \
  --internalurl=http://controller:8774/v2/%\(tenant_id\)s \
  --adminurl=http://controller:8774/v2/%\(tenant_id\)s

Запустите службы Nova (Compute) и настройте их на старт при загрузке системы:

# service openstack-nova-api start
# service openstack-nova-cert start
# service openstack-nova-consoleauth start
# service openstack-nova-scheduler start
# service openstack-nova-conductor start
# service openstack-nova-novncproxy start
# service openstack-nova-console start
# chkconfig openstack-nova-api on
# chkconfig openstack-nova-cert on
# chkconfig openstack-nova-consoleauth on
# chkconfig openstack-nova-scheduler on
# chkconfig openstack-nova-conductor on
# chkconfig openstack-nova-novncproxy on
# chkconfig openstack-nova-console on
[Совет]Совет

Служба openstack-nova-network будет установлена как часть пакета openstack-nova, однако не должна запускаться. Служба openstack-nova-network является унаследованной сетевой службой, которая замещена Neutron. Neutron будет установлена в Главе 3. Установка Neutron.

 Установка и настройка компонентов вычислительного узла

Когда службы Nova (Compute) были настроены на узле контроллера, другой хост должен быть настроен в качестве вычислительного узла. Вычислительный узел принимает запросы от узла контроллера к экземплярам виртуальной машины хоста. Разделение служб за счет работы выделенных вычислительных узлов означает, что Nova (Compute) может масштабироваться горизонтально путем добавления дополнительных вычислительных узлов по мере использования всех доступных ресурсов.

На вычислительном узле установите пакет openstack-nova-compute. Этот пакет предоставляет службы виртуализации вычислительному узлу:

# yum -y install openstack-nova-compute

При помощи crudini измените файл настройки /etc/nova/nova.conf для определения MySQL в качестве базы данных и настройки различных установок аутентификации Keystone. Пользователь keystone nova был настроен в предыдущем разделе. Посмотрите на следующие команды:

# crudini --set /etc/nova/nova.conf database connection mysql://nova:nova@controller/nova
# crudini --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_host controller
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# crudini --set /etc/nova/nova.conf keystone_authtoken admin_password nova

Далее настройте Nova (Compute) на применение брокера сообщений Qpid, настроенного на узле контроллера:

# crudini --set /etc/nova/nova.conf DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid
# crudini --set /etc/nova/nova.conf DEFAULT qpid_hostname controller

Затем настройте Nova (Compute) для предоставления доступа к экземплярам удаленной консоли через прокси на нашем узле контроллера. Удаленная консоль доступна через инструментальную панель Horizon. Приводимые ниже настроки IP должны быть управляющими IP нашего вычислительного узла:

# crudini --set /etc/nova/nova.conf DEFAULT my_ip 10.254.254.101
# crudini --set /etc/nova/nova.conf DEFAULT vnc_enabled True
# crudini --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
# crudini --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.254.254.101
# crudini --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html

Определите хост, который выполняет службу образов Glance. В данной установке Glance работает на узле контроллера:

# crudini --set /etc/nova/nova.conf DEFAULT glance_host controller

Измените настройку /etc/nova/api-paste.ini для добавления полномочий в раздел [filter:authtoken]:

# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_host controller
# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_port 35357
# crudini --set /etc/nova/api-paste.ini filter:authtoken auth_protocol http
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_user nova
# crudini --set /etc/nova/api-paste.ini filter:authtoken admin_password nova

Убедитесь, что параметр api_paste_config=/etc/nova/api-paste.ini установлен на файл /etc/nova/nova.conf

# crudini --set /etc/nova/nova.conf DEFAULT api_paste_config /etc/nova/api-paste.ini

Запустите службы Nova (Compute) и настройте их на старт при загрузке системы:

# service libvirtd start
# service messagebus start
# service openstack-nova-compute start
# chkconfig libvirtd on
# chkconfig messagebus on
# chkconfig openstack-nova-compute on

 Проверка связи между узлами

Чтобы проверить состояние служб Nova в нашем окружении воспользуйтесь командой service-list на узле контроллера следующим образом:

# nova service-list

Команда должна вернуть состояния служб Nova, которые были зарегистрированы:


В приведенном выше выводе состояние служб на обоих узлах и контроллера, и вычислительном отражаются в колонке Status. Команда nova service-list может быть выполнена на любом узле окружения, однако будет требовать надлежащих полномочий аутентификации. Если существует несогласованность в полученном выводе между множеством узлов, стоит убедиться, что сетевое время (NTP) синхронизовано надлежащим образом на всех узлах.

 Установка инструментальной панели OpenStack

Инструментальная панель OpenStack, также называемая Horizon, предоставляет пользовательский интерфейс на основе веб к службам OpenStack, включающим Compute, Networking, Storage и Identity помимо прочих.

Чтобы установить Horizon, установите следующие пакеты на узле контроллера:

# yum -y install mod_wsgi openstack-dashboard

 Разрешение соединения с инструментальной панелью

Установки с именем ALLOWED_HOSTS существуют в файле /etc/openstack-dashboard/local_settings со следующими значениями по умолчанию:

ALLOWED_HOSTS = ['horizon.example.com', 'localhost']

Имена домена и хоста в списке представляют хосты HTTP, за которые отвечает веб- сервер Apache. Предыдущие установки будут требовать от пользователей, которые хотят получить доступ к панели Horizon, выполнять это через http://horizon.example.com в их браузере. Не стесняйтесь добавить свой собственный домен который ссылается на адрес управления/API контроллера. В противном случае закомментируйте строку знаком весового фунта (#) и сохраните файл, чтобы разрешить использование любого заголовка хоста:

# sed -i 's/ALLOWED_HOSTS/#ALLOWED_HOSTS/' /etc/openstack-dashboard/local_settings

 Идентификация сервера Keystone

Измените файл /etc/openstack-dashboard/local_settings для установки имени хоста сервера идентификации. В данной установке службы Keystone выполняются на нашем узле контроллера. Измените значения OPENSTACK_HOST и OPENSTACK_KEYSTONE_URL с помощью следующих команд:

# sed -i "/OPENSTACK_HOST/c\OPENSTACK_HOST = \"controller\"" /etc/openstack-dashboard/local_settings
# sed -i -e "\$aOPENSTACK_KEYSTONE_URL = \"http://controller:5000/v2.0\"" /etc/openstack-dashboard/local_settings

 Изменение адреса прослушивания

По умолчанию веб-сервер Apache настроен на прослушивание запросов HTTP на порт 80 и любые адреса IPv6. Чтобы изменить это поведение, отредактируйте /etc/httpd/conf/httpd.conf и замените адрес Listen на 10.254.254.100:

# sed -i 's/Listen 80/Listen 10.254.254.100:80/' /etc/httpd/conf/httpd.conf

Следуя этому сохраните данный файл и запустите службы инструментальной панели. Примените chkconfig для разрешения запуска служб при загрузке:

# service httpd start
# chkconfig httpd on

 Проверка связи с инструментальной панелью

С машины, имеющей доступ ксети управления нашего узла контроллера откройте следующий URL в веб-браузере:

http://controller/dashboard/

Файл /etc/hosts моего клиента был изменен, чтобы содержать те же соответствия IP- хост-именам, которые были настроены ранее в данной главе. Следующий снимок экрана демонстрирует успешноесоединение с нашей инструментальной панелью. Имя пользователя и пароль были созданы ранее вданной главе в разделе Определение пользователей, владельцев и ролей в Keystone. В данной установке имя пользователя admin, а пароль secrete. Взглянем на следующий снимок экрана:


После успешного входа в систему инструментальная панель по умолчанию находится на вкладке администрирования. Начиная с данного момента информация об окружении предоставляется в графическом виде. На следующем снимке экрана панель System Info предоставляет пользователю информацию о среде включая: Services (службы), Compute Services (вычислительные службы), Availability Zones (доступные зоны) и Host Aggregates (совокупности хостов). Службы, перечисленные на следующем снимке экрана являются службами, установленными ранее в данной главе:


Чтобы просмотреть представление служб Nova (Compute), кликните по закладке Compute Services. Это действие выдаст вывод аналогичный nova service-list в CLI в следующем виде:


 Заключение

На данный момент в нашей установке были развернуты службы OpenStack Identity, Image, Dashboard и Compute на наших узлах в нашем облаке. Пока среда еще не готова размещать экземпляры, поскольку службы сетевой среды OpenStack пока небыли установлены. В случае возникновения вопросов при процессах установке и проверки могут оказаться полезными в определении и решении проблем, помимо прочего, зарегистрированные сообщения, которые можно найти в /var/log/nova/, /var/log/glance, /var/log/httpd и /var/log/keystone, помимо прочих журналов.

В следующей главе вы получите руководство по установке сетевых служб Neutron и будете снабжены дополнительной информацией об архитектуре, лежащей в основе сетевой среды OpenStack.