Глава 2. Установка OpenStack
Содержание
- Требования системы
- Перед тем как вы начнете
- Установка и настройка протокола службы времени
- Модернизация системы
- Установка OpenStack
- Заключение
Установка, настройка и сопровождение облаков 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, попробуйте один из следующих:
- Rackspace Private Cloud: http://www.rackspace.com/cloud/private/.
- RedHat RDO: http://openstack.redhat.com/.
- Mirantis OpenStack: http://software.mirantis.com/.
- Piston Cloud: http://www.pistoncloud.com/.
После установки многие используемые в книге концепции и примеры должны по-прежнему применяться, но могут потребоваться дополнительные усилия для реализации.
Компоненты OpenStack предназначены для запуска на стандартной аппаратуре, которая варьируется от настольных компьютеров до серверов уровня предприятия. Процессоры вычислительных узлов требуют поддержки технологии виртуализации, подобной технологии Intel VT-x или AMD AMD-v.
Данная книга предполагает, что OpenStack будет установлена на физические аппаратные средства, которые отвечают следующим минимальным требованиям:
Сервер | Рекомендуемое оборудование | Замечания |
---|---|---|
Узел контроллера (выполняет службы сетевой среды, томов, API, планировщика и образов) |
Процессор: 64-битный x86 |
Хотя может использоваться один NIC, это не рекомендуется, а также не рассматривается в данном построении |
Вычислительный узел (выполняет виртуальные экземпляры) |
Процессор: 64-битный x86 |
Хотя может использоваться один NIC, это не рекомендуется, а также не рассматривается в данном построении |
Хотя и машины, которые не отвечают минимальным требованиям, могут допускать установку на основе описанной здесь документации, тем не менее, здесь приведены данные требования чтобы гарантировать успешную практику.
OpenStack в настоящее время собран в пакеты для следующих дистрибутивов: CentOS, Debian, Fedora, RHEL, openSUSE, SLES и Ubuntu. В данной книге мы предполагаем, что на все хосты перед установкой OpenStack была установлена операционная система CentOS 6.5:
- CentOS 6.5: http://www.centos.org/.
На момент написания рекомендовалась следующая минимальная версия ядра:
- Версия ядра: 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 | Порт коммутации |
---|---|---|---|
|
|
10.254.254.100 |
Порт доступа (VLAN 10, не помеченный- untagged) |
|
|
С подключенным кабелем, но на данный момент не настроенный |
Магистральный (trunk) порт (VLAN 20, 30-33, 50) |
|
|
10.254.254.101 |
Порт доступа (VLAN 10, не помеченный- untagged) |
|
|
С подключенным кабелем, но на данный момент не настроенный |
Магистральный (trunk) порт (VLAN 20, 30-33, 50) |
Интерфейс eth1
каждого сервера будет настроен в
Главе 4.
Построение инфраструктуры виртуальной коммутации. На текущий момент интерфейс должен быть соединен кабелем и
соответствующий порт коммутатора должен быть настроен как магистральный (trunk). На случай потери связи настоятельно рекомендуется
через DRAC, iLo или другой механизм доступа контроллера управления системной платой (out-of-band).
CentOS применяет индивидуальные файлы интерфейса для описания их настройки. Как только система загружена, эти файлы используются
для определения того какие интерфейсы поднимать и как они должны быть настроены. Файлы настройки интерфейса могут быть найдены в
/etc/sysconfig/network-scripts/
![]() | Совет |
---|---|
Загрузка кода примера Вы можете загрузить файлы примеров кода для всех купленных вами книг Packt из вашей учетной записи на
|
С использованием текстового редактора измените соответствующий фал интерфейса для 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 в 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
На протяжении всей книги используется утилита 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 может быть установлена в одно из следующих трех состояний:
enforcing
: Принудительно применяется политика безопасности SELinux.permissive
: SELinux выдает предупреждения вместо принудительного применения.disabled
: Никакая политика SELinux не загружена.
Чтобы запретить SELinux, отредактируйте файл /etc/selinux/config
и измените значение
SELinux
на disabled
. Для вашего удобства следующая
команда сделает соответствующее изменение:
# sed -i "/SELINUX=enforcing/c\SELINUX=disabled" /etc/selinux/config
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 на
|
Программа синхронизации времени, подобная 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 включая Keystone, Glance, Nova Compute и Horizon на отдельный контроллер и вычислительный узел. Neutron, служба сетевой среды OpenStack, будет установлена в следующей главе.
На узле контроллера воспользуйтесь 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 на
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
![]() | Совет |
---|---|
На протяжении данной книги используются не безопасные пароли для упрощения настройки, что не рекомендуется для использования
в промышленном применении. Посетите |
Для создания базы данных 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 завершилась, необходимо установить пользователей, владельцев (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
Каждая установленная служба 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 был установлен и настроен соответствующим образом, воспользуйтесь командой
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
Как и другие службы 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 установлен и настроен правильно загрузите тестовый образ из интернета и проверьте что он может быть выгружен на сервер образов:
# 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 следующим образом:
- Образы облака Ubuntu:
http://cloud-images.ubuntu.com/
. - Образы на основе Red Hat:
http://openstack.redhat.com/Image_resources
.
Чтобы установить образ из удаленного местоположения примените параметр --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
![]() | Совет |
---|---|
Служба |
Когда службы 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, также называемая 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
Измените файл /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.