Установка и настройка¶
Установка¶
Важно
Перед началом установки необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.
Режим суперпользователя:
sudo -i
Важно
Установка производится на управляющий узел. Для работы модуля необходимо установить службу OpenStack Nova API.
Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:
mkdir -p /tmp/rollback/cloud_manager pip3 freeze > /tmp/rollback/cloud_manager/
После чего в каталоге
/tmp/rollback/cloud_manager
будет находиться файлpip_before.txt
с перечнем установленных приложений.Также сохраните версии миграции:
openstack aos db list -n cloud_manager > /tmp/rollback/cloud_manager/migrations.txt
Где:
/tmp/rollback/cloud_manager/
- директория файла;migrations.txt
- наименование файла с версиями миграций.
Установите пакет CloudManager:
из репозитория Python-пакетов:
pip3 install cloud-manager
Сохраните список установленных пакетов после установки для возможности отката изменений:
pip3 freeze > /tmp/rollback/cloud_manager/pip_after.txt
Добавьте пользователя:
useradd -m aos passwd aos
Примечание
Для установки CloudManager на Astra Linux (Smolensk) выполните следующее:
Подключите предоставленный Вам репозиторий с пакетами AccentOS.
Установите пакет командой:
sudo apt install -y cloud-manager
Установка на двух и более контроллерах¶
При установке CloudManager на двух и более контроллерах необходимо:
- Реплицировать базу данных на каждый из контроллеров;
- Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров;
- Процессы мониторинга и управления и синхронизации вычислительных узлов должны быть активны только на одном контроллере. У этого же контроллера должен быть настроен доступ к серверу брокера сообщений;
- Инициализацию вычислительных узлов и устройств управления питанием необходимо проводить только на одном из контроллеров.
Примечание
Удаление и диагностика модуля на каждом контроллере происходит таким же образом, как и в случае с одним контроллером.
Настройка¶
Примечание
Рассматривается настройка запуска API сервиса через WSGI-сервер, поставляемый вместе с библиотекой eventlet
. Для настройки запуска сервиса через другой WSGI-сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: cloud_manager.api.cloud_manager_api.wsgi
.
Выполните первичную настройку модуля:
openstack aos configure -n cloud_manager
Создайте каталог для логов с нужными правами:
mkdir -p /var/log/aos/cloud-manager chown -R aos:aos /var/log/aos/cloud-manager
Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их (подробнее см. Файл конфигурации):
cp /etc/aos/aos.conf.example /etc/aos/aos.conf cp /etc/aos/cloud_manager.conf.example /etc/aos/cloud_manager.conf
Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:
# Зайдите в базу данных, используя пароль пользователя root mysql -uroot -p # Создайте базу данных cloud_manager CREATE DATABASE cloud_manager; # Дайте права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных cloud_manager GRANT ALL PRIVILEGES ON cloud_manager.* TO 'aos'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON cloud_manager.* TO 'aos'@'%' IDENTIFIED BY 'password'; # Осуществите выход из базы данных
Отредактируйте секцию
[database]
конфигурационного файлаetc/aos/cloud_manager.conf
, например:[database] url = mysql+pymysql://aos:password@tst.stand.loc:3306/cloud_manager?charset=utf8
Выполните миграцию базы данных:
openstack aos db migrate -n cloud_manager
Настройте брокер сообщений RabbitMQ Server:
rabbitmqctl add_user aos password rabbitmqctl add_vhost aos rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*" rabbitmqctl set_permissions aos ".*" ".*" ".*"
Создайте пользователя в OpenStack для API сервисов:
openstack user create --domain default --project service --project-domain default --password password --or-show aos
Назначьте пользователю роль service:
openstack role add --user aos --user-domain default --project service --project-domain default service
Включите и запустите службы systemd:
systemctl daemon-reload systemctl enable aos-cloud-manager-agent.service systemctl start aos-cloud-manager-agent.service systemctl enable aos-cloud-manager-api.service systemctl start aos-cloud-manager-api.service systemctl enable aos-cloud-manager-listener.service systemctl start aos-cloud-manager-listener.service systemctl enable aos-cloud-manager-beat.service systemctl start aos-cloud-manager-beat.service systemctl enable aos-cloud-manager-worker.service systemctl start aos-cloud-manager-worker.service
Создайте сервис CloudManager API:
openstack service create --name cloud-manager --description "Cloud Manager Service" cloud-manager
Создайте точки входа (endpoint):
openstack endpoint create --region RegionOne cloud-manager internal http://controller:9362 openstack endpoint create --region RegionOne cloud-manager admin http://controller:9362 openstack endpoint create --region RegionOne cloud-manager public http://controller:9362
Файл конфигурации¶
Примечание
Файл конфигурации позволяет переопределять секции и параметры общего файла aos.conf
для конкретного модуля.
Примечание
По умолчанию в файле cloud_manager.conf.example
строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.
Конфигурационный файл представлен в ini
формате и состоит из следующих секций и параметров:
Секция | Параметр | Описание | Значение по умолчанию |
---|---|---|---|
DEFAULT | dhcp_leases | Путь до директории с .leases файлами DHCP
сервера. |
/var/lib/dhcp/dhcpd/s tate/dhcpd.leases, /v ar/lib/dhcp/dhcpd.lea ses |
agent | agent_confirm_timeout | Максимальное время ожидания подтверждения ответа от службы aos-agent. | 10 |
agent | agent_response_timeout | Максимальное время ожидания ответа от службы aos- agent. | 60 |
agent | backoff_factor | Увеличивает время ожидания между итерациями подключений. | 0.3 |
agent | enabled | Параметр для включения или отключения функционала управления узлами, предоставляемого модулем Agent. | False |
agent | logfile | Путь до лог файла службы aos-cloud-manager-agent. | |
api | audit_enabled | Флаг, включающий аудит запросов API. | True |
api | host | IP-адрес, на котором будет запущена служба CloudManager API. | 0.0.0.0 |
api | logfile | Путь до лог файла службы aos-cloud-manager-api. | |
api | port | Порт, на котором будет запущена служба CloudManager API. | 9362 |
balancing | approx | Точность балансировки. | 0.1 |
balancing | enabled | Параметр для включения или отключения функционала балансировки узлов. | False |
balancing | migration_retries | Количество попыток миграции виртуальных машин. | 3 |
balancing | periodic_time | Период между балансировкой агрегатров узлов. Измеряется в часах. | 24 |
certificates | requests_ca_bundle | Путь до сертификатов безопасности. | /etc/ssl/certs/ca- certificates.crt |
database | url | Настройка подключения к базе данных. | mysql+pymysql://aos:p assword@localhost:330 6/cloud_manager?chars et=utf8 |
drs | host | Хост, на котором запущена система DRS. | |
drs | password | Пароль пользователя системы DRS. | |
drs | port | Порт сервера с системой DRS. | 80 |
drs | username | Пользователь системы DRS. | |
drs_trigger | enabled | Параметр, включащий автоматическое применение результатов аудита. | True |
drs_trigger | logfile | Путь до лог файла автоматического применения результатов аудита. | |
drs_trigger | trigger_interval | Интервал запуска автоматического применения результатов аудита. Измеряется в секундах. | 600 |
extra_availabil ity_check | attempts | Количество попыток считывания файла. | 2 |
extra_availabil ity_check | delay | Задержка при повторной попытке считывания файла состояния вычислительного узла. Измеряется в секундах. | 60 |
extra_availabil ity_check | enabled | Параметр для включения или отключения дополнительной проверки доступности вычислительных узлов через хранилище. | False |
extra_availabil ity_check | instance_rate | Необходимый процент запущенных виртуальных машин. | 100 |
host_tasks | allow_evacuate_host | Параметр разрешает, либо запрещает эвакуацию хоста. | True |
host_tasks | deny_evacuate | Этот параметр запрещает эвакуацию для указанных хостов. | |
host_tasks | evacuation_retries | Количество попыток эвакуации виртуальных машин. | 2 |
host_tasks | prioritized_evacuation_timeout | Интервал между запусками эвакуации групп виртуальных машин с одинаковыми приоритетами восстановления. Измеряется в секундах. | 60 |
host_tasks | recovery_priority | Приоритет восстановления виртуальной машины во время автоэвакуации при проблемах на гипервизоре. | 5 |
host_tasks | retries_wait_for_node_state | Максимальное количество попыток опроса состояния гипервизора. | 240 |
host_tasks | retries_wait_for_vm_status | Максимальное количество попыток опроса состояния виртуальной машины. | 60 |
listener | durability | Устойчивость к перезагрузке RabbitMQ очереди и exchange. | True |
listener | logfile | Путь до лог файла службы aos-cloud-manager- listener. | |
listener | nova_rabbit_vhost | Виртуальный хост RabbitMQ службы Nova. | / |
node_sync | enabled | Параметр, включающий синхронизацию вычислительных узлов. | True |
node_sync | logfile | Путь до лог файла синхронизации вычислительных узлов. | |
node_sync | reserve_interval | Время ожидания до начала перевода свободного гипервизора в резерв. | 60 |
node_sync | sync_interval | Интервал синхронизации вычислительных узлов в секундах. | 60 |
node_tracker | allow_host_auto_power_off | Параметр разрешает, либо запрещает перезапуск вычислительного узла в случае его перехода в статус down. | False |
node_tracker | enabled | Параметр, включающий проверку статуса вычислительных узлов. | True |
node_tracker | host_restart_timeout | Время ожидания перезапуска вычислительного узла. Измеряется в секундах. | 600 |
node_tracker | logfile | Путь до лог файла проверки статуса вычислительных узлов. | |
node_tracker | loop_time | Интервал времени между проверками статуса вычислительных узлов (в секундах). | 30 |
node_tracker | max_down_hosts | Максимально допустимое количество вычислительных узлов в статусе down, за исключением резервных. При превышении этого количества автоматическая эвакуация не производится ни для одного из узлов. Отрицательные числа недопустимы. | 0 |
node_tracker | mutex | Количество попыток определения статуса гипервизора при переходе в статус down перед запуском обработчика. | 3 |
node_tracker | mutex_up | Количество попыток определения статуса гипервизора при переходе в статус up перед запуском обработчика. | 1 |
node_tracker | timeout_reserv_node_up | Время ожидания поднятия резервного вычислительного узла в минутах. | 15 |
nova_database | url | Настройка подключения к базе данных. | |
power | shutdown_interval | Время ожидания до начала следующей итерации во время проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. Измеряется в секундах. | 30 |
power | shutdown_max_tick | Максимальное количество итераций проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. | 10 |
pxe | conf_dir | Каталог для конфигурационных файлов PXE. | /var/lib/tftpboot/pxe linux.cfg/ |
storage_sync | enabled | Параметр, включающий синхронизацию хранилищ. | True |
storage_sync | logfile | Путь до лог файла синхронизации хранилищ. | |
storage_sync | sync_interval | Интервал запуска синхронизации хранилищ. Измеряется в секундах. | 60 |
Дополнительные параметры¶
Секция | Параметр | Описание | Значение по умолчанию |
---|---|---|---|
DEFAULT |
traceback_enabled |
Параметр для вывода трассировки ошибки при логировании. Возможные значения:
Значения являются регистронезависимыми. |
false |
Примечание
approx
в секции balancing
конфигурационного файла - это параметр для определения загруженности гипервизора. Узел считается загруженным, если отношение среднего значения занятой оперативной памяти гипервизора к общему количеству памяти данного гипервизора превышает среднее значение занятой оперативной памяти всех узлов, принятых к балансировке, к количеству оперативной памяти данных узлов + approx
.
Пример:
К балансировке приняты два вычислительных узла с общем количество ОЗУ 8192 МБ по 4086 МБ на каждом, при этом на одном вычислительном узле занято 3072 МБ ОЗУ, а на втором вычислительном узле занято 256 МБ ОЗУ.
Общая загрузка балансируемых узлов будет рассчитана как: (3072+256)/8192 = 0.40
Загрузка первого гипервизора будет рассчитана как 3072/4086 = 0.75
Загрузка второго гипервизора будет рассчитана как 256/4086 = 0.06
Параметр approx = 0.1
Добавив значение approx для каждого гипервизора, сравним полученные значения со значением общей загрузки:
для первого узла: 0.75 > 0.40 + 0.1 - данный узел загружен и нуждается в балансировке;
для второго узла: 0.06 < 0.40 + 0.1 - данный узел не является загруженным и не будет принят к балансировке.
Важно
При изменении параметров файла конфигурации, для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».
Возможности использования модуля¶
- Инициализация вычислительных узлов;
- Заполнение информации о вычислительных узлах;
- Создание образа для PXE;
- Инициализация устройств управления питанием;
- Управление питанием вычислительных узлов;
- Синхронизация вычислительных узлов;
- Мониторинг и управление вычислительными узлами;
- Управление резервированием гипервизоров.
План восстановления¶
В случае неудачной установки или обновления модуля CloudManager выполните возврат к исходному состоянию:
Сравните версии миграций в файле
/tmp/rollback/cloud_manager/migrations.txt
с текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:openstack aos db list -n cloud_manager openstack aos db migrate -n cloud_manager --migration 27
Произведите возврат к предыдущему состоянию пакетов:
cd /tmp/rollback/cloud_manager diff --changed-group-format='%>' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_uninstall.txt diff --changed-group-format='%<' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_install.txt pip3 uninstall -r pip_uninstall.txt pip3 install -r pip_install.txt