[ English | 한국어 (대한민국) | English (United Kingdom) | Indonesia | français | русский | Deutsch ]

Быстрое начало: AIO

Все-в-одном (AIO) это отличный способ выполнить установку OpenStack-Ansible для:

  • окружения для разработки

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

  • простого исследовательского развертывания

Хоть AIO и не рекомендуется для больших рабочих окружений, он отлично подходит для небольших установок для проверки концепта.

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

  • 8 vCPU

  • 50 Гб свободного дискового пространства на root разделе

  • 8 Гб ОЗУ

Рекомендуемые системные ресурсы:

  • CPU/материнская плата поддерживают аппаратную виртуализацию

  • 8 ядер CPU

  • 80 Гб свободного дискового пространства, или 60 Гб+ на чистом дополнительном диске. Использование дополнительного диска требует использования параметра bootstrap_host_data_disk_device. Пожалуйста, обратитесь к разделу Установка AIO для деталей.

  • 16 Гб ОЗУ

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

Установка AIO

Обзор

Имеется три необходимых шага для запуска установки AIO, с опциональным первым шагом, если вам нужно настроить развертывание:

  • Подготовка сервера

  • Начальная подготовка Ansible и требуемых ролей

  • Начальная подготовка конфигурации AIO

  • Запуск плейбуков

Подготовка сервера

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

Примечание

Выполните следующие команды от имени root пользователя.

## Ubuntu
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# yum upgrade
# yum install git
# systemctl stop firewalld
# systemctl mask firewalld
# reboot

Примечание

Перед перезагрузкой убедитесь, что в файле /etc/sysconfig/selinux параметр SELINUX=enforcing изменен на SELINUX=disabled. Включенный SELinux на данный момент не поддерживается в OpeStack Ansible для CentOS/RHEL из-за нехватки желающих поддерживать данный функционал.

## openSUSE
# zypper up
# zypper in git-core
# reboot

Примечание

Если вы производите установку с ограниченным доступом к сети, пожалуйста, просмотрите дополнение Установка с ограниченным соединением в Инструкции по развертыванию перед продолжением.

Начальная подготовка Ansible и требуемых ролей

Начните с клонирования репозитория OpenStack-Ansible и перехода в его корневую директорию:

# git clone https://opendev.org/openstack/openstack-ansible \
    /opt/openstack-ansible
# cd /opt/openstack-ansible

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

# # List all existing tags.
# git tag -l

# # Checkout the stable branch and find just the latest tag
# git checkout stable/ussuri
# git describe --abbrev=0 --tags

# # Checkout the latest tag from either method of retrieving the tag.
# git checkout ussuri-em

Примечание

The Ussuri release is only compatible with Debian 10 (buster), Ubuntu 18.04 (Bionic Beaver), Ubuntu 20.04 (Focal Fossa), CentOS 7 and CentOS 8. Experimentat support is provided for openSUSE Leap 15.X but this is expected to be removed in the next major release.

Следующий шаг это выполнение подготовки Ansible и Ansible ролей для среды разработки.

Выполните следующие команды для подготовки Ansible и требуемых ролей:

# scripts/bootstrap-ansible.sh

Примечание

Вы можете столкнуться с ошибками во время выполнения скрипта начальной подготовки Ansible, во время установки некоторых модулей Python (таких как pycrypto), например:

configure: error: cannot run C compiled programs.

Причина данной ошибки может быть следствием установленного флага noexec, использованного при монтировании файловой системы для /tmp, который вы можете проверить при помощи следующей команды:

# mount | grep $(df /tmp | tail -n +2 | awk '{print $1}') | grep noexec

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

# TMPDIR=/var/tmp scripts/bootstrap-ansible.sh

Начальная подготовка конфигурации AIO

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

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

Просмотрите файл bootstrap-host role defaults - в нем содержатся различные настройки развертывания. Оператор имеет возможность настроить, каким образом сервер будет подготовлен. Это может быть полезно, когда вы хотите, что бы AIO использовал второй диск для данных, либо же использовать данную роль для подготовки развертывания окружения на несколько серверов.

Скрипт начальной подготовки настроен на передачу переменной окружения BOOTSTRAP_OPTS как дополнительного параметра для процесса подготовки. Например, если вы хотите, задать второй диск (/dev/sdb) для переразметки при подготовке, которая удалит все данные на данном устройстве, выполните:

# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"

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

# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"
# export BOOTSTRAP_OPTS="${BOOTSTRAP_OPTS} bootstrap_host_data_disk_fs_type=xfs"

Для стандартного сценария AIO, начальная подготовка выполняется при помощи команды:

# scripts/bootstrap-aio.sh

Чтобы добавить сервисы OpenStack в дополнение к сервисам настраивающимся AIO по умолчанию в рамках сценария, скопируйте файлы из директории conf.d с расширением .aio в /etc/openstack_deploy и смените их расширение на .yml. Например, для того, что бы подключить сервисы Телеметрии OpenStack, выполните следующее:

# cd /opt/openstack-ansible/
# cp etc/openstack_deploy/conf.d/{aodh,gnocchi,ceilometer}.yml.aio /etc/openstack_deploy/conf.d/
# for f in $(ls -1 /etc/openstack_deploy/conf.d/*.aio); do mv -v ${f} ${f%.*}; done

Также есть возможность сделать это (и изменить настройки по умолчанию) при помощи изменения переменной окружения SCENARIO перед выполнением скрипта начальной подготовки. При добавлении ключевого слова „aio“, будет установлен набор базовых сервисов OpenStack (cinder, glance, horizon, neutron, nova). Ключевые слова „lxc“ и „nspawn“ могут быть использованы, что бы задать тип используемых контейнеров, в то время, как ключевое слова „metal“ установит все сервисы без контейнеров. Для установки других сервисов, добавьте имя файла из директории conf.d без расширения .yml.aio в переменную окружения SCENARIO. Каждое ключевое слово должно отделяться нижним подчеркиванием. Например, такое определение выполнит установку AIO с barbican, cinder, glance, horizon, neutron и nova. Cinder будет настроен на хранение данных в ceph и будет использован LXC для контейнеризации.

# export SCENARIO='aio_lxc_barbican_ceph'
# scripts/bootstrap-aio.sh

Примечание

Если ключевые слова „metal“ и „aio“ использованы вместе, horizon не будет установлен, так как haproxy и horizon конфликтуют из-за использования одинаковых портов.

Для того, что бы глобально переопределить значения по умолчанию для сценария, отредактируйте /etc/openstack_deploy/user_variables.yml. Для понимания различных способов переопределения стандартного поведения, заданного в ролях, плейбуках и переменных групп, ознакомьтесь с Overriding default configuration.

Ознакомьтесь с Deployment Guide, где более подробно описаны способы применения собственной конфигурации, вместо использования начальной подготовки AIO.

Запуск плейбуков

Наконец, запустите плейбуки выполнив:

# cd /opt/openstack-ansible/playbooks
# openstack-ansible setup-hosts.yml
# openstack-ansible setup-infrastructure.yml
# openstack-ansible setup-openstack.yml

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

  • Сервера без виртуализации с SSD диском: ~30-50 минут

  • Виртуальные сервера с SSD диском: ~45-60 минут

  • Системы с традиционными жесткими дисками: ~90-120 минут

Как только выполнение плейбуков завершилось, вы можете экспериментировать с изменением различных настроек в /etc/openstack_deploy/user_variables.yml и запускать только отдельные плейбуки. Например, для запуска плейбука для сервиса Keystone выполните:

# cd /opt/openstack-ansible/playbooks
# openstack-ansible os-keystone-install.yml

Перезагрузка AIO

Так как на AIO расположены все три участника кластера MariaDB/Galera, кластер должен быть повторно инициализирован после перезагрузки сервера.

Это можно сделать выполнив:

# cd /opt/openstack-ansible/playbooks
# openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml

Если не получилось вернуть кластер базы данных в рабочее состояние при помощи данного способа, пожалуйста обратитесь к разделу Galera Cluster Recovery </admin/maintenance-tasks.html#galera-cluster-recovery> в инструкции по поддержке.

Переустановка AIO

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

# # Move to the playbooks directory.
# cd /opt/openstack-ansible/playbooks

# # Destroy all of the running containers.
# openstack-ansible lxc-containers-destroy.yml

# # On the host stop all of the services that run locally and not
# #  within a container.
# for i in \
       $(ls /etc/init \
         | grep -e "nova\|swift\|neutron\|cinder" \
         | awk -F'.' '{print $1}'); do \
    service $i stop; \
  done

# # Uninstall the core services that were installed.
# for i in $(pip freeze | grep -e "nova\|neutron\|keystone\|swift\|cinder"); do \
    pip uninstall -y $i; done

# # Remove crusty directories.
# rm -rf /openstack /etc/{neutron,nova,swift,cinder} \
         /var/log/{neutron,nova,swift,cinder}

# # Remove the pip configuration files on the host
# rm -rf /root/.pip

# # Remove the apt package manager proxy
# rm /etc/apt/apt.conf.d/00apt-cacher-proxy

Если необходимо переустановить окружение AIO, самый эффективный способ это переустановить операционную систему на сервере и начать с начала. По этой причине лучше всего запускать AIO в виртуальной машине или гостевом облаке.

Справочная схема по развертыванию AIO

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

Данная диаграмма не масштабируется и даже не точна на 100%, она была создана в ознакомительных целях и должна использоваться ТОЛЬКО для них.

          ------->[ ETH0 == Public Network ]
          |
          V                        [  *   ] Socket Connections
[ HOST MACHINE ]                   [ <>v^ ] Network Connections
  *       ^  *
  |       |  |-------------------------------------------------------
  |       |                                                         |
  |       |---------------->[ HAProxy ]                             |
  |                                 ^                               |
  |                                 |                               |
  |                                 V                               |
  |                          (BR-Interfaces)<------                 |
  |                                  ^     *      |                 |
  *-[ LXC ]*--*----------------------|-----|------|----|            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      |  | |            |
  |           |                      |     |      V  * |            |
  |           *                      |     |   [ Galera x3 ]        |
  |        [ Memcached ]<------------|     |           |            |
  *-------*[ Rsyslog ]<--------------|--|  |           *            |
  |        [ Repos Server x3 ]<------|  ---|-->[ RabbitMQ x3 ]      |
  |        [ Horizon x2 ]<-----------|  |  |                        |
  |        [ Nova api ec2 ]<---------|--|  |                        |
  |        [ Nova api os ]<----------|->|  |                        |
  |        [ Nova console ]<---------|  |  |                        |
  |        [ Nova Cert ]<------------|->|  |                        |
  |        [ Cinder api ]<-----------|->|  |                        |
  |        [ Glance api ]<-----------|->|  |                        |
  |        [ Heat apis ]<------------|->|  | [ Loop back devices ]*-*
  |        [ Heat engine ]<----------|->|  |    \        \          |
  | ------>[ Nova api metadata ]     |  |  |    { LVM }  { XFS x3 } |
  | |      [ Nova conductor ]<-------|  |  |       *         *      |
  | |----->[ Nova scheduler ]--------|->|  |       |         |      |
  | |      [ Keystone x3 ]<----------|->|  |       |         |      |
  | | |--->[ Neutron agents ]*-------|--|---------------------------*
  | | |    [ Neutron server ]<-------|->|          |         |      |
  | | | |->[ Swift proxy ]<-----------  |          |         |      |
  *-|-|-|-*[ Cinder volume ]*----------------------*         |      |
  | | | |                               |                    |      |
  | | | -----------------------------------------            |      |
  | | ----------------------------------------- |            |      |
  | |          -------------------------|     | |            |      |
  | |          |                              | |            |      |
  | |          V                              | |            *      |
  ---->[ Compute ]*[ Neutron linuxbridge ]<---| |->[ Swift storage ]-