Установка и настройка
Установка
Важно
Перед началом установки необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.
Режим суперпользователя:
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 |
Путь до директории с |
/var/lib/dhcp/dhcpd/state/dhcpd.leases, /var/lib/dhcp/dhcpd.leases |
agent |
agent_confirm_timeout |
Максимальное время ожидания подтверждения ответа от службы tos-agent. |
10 |
agent |
agent_response_timeout |
Максимальное время ожидания ответа от службы tos-agent. |
60 |
agent |
backoff_factor |
Increasing wait time with each connection iteration |
0.3 |
agent |
enabled |
Параметр для включения или отключения функционала управления узлами, предоставляемого модулем Agent. |
False |
agent |
logfile |
Путь до лог файла службы tos-cloud-manager-agent. |
|
api |
audit_enabled |
Флаг, включающий аудит запросов API. |
True |
api |
host |
IP-адрес, на котором будет запущена служба CloudManager API. |
0.0.0.0 |
api |
logfile |
Путь до лог файла службы tos-cloud-manager-api. |
|
api |
port |
Порт, на котором будет запущена служба CloudManager API. |
9362 |
balancing |
approx |
Точность балансировки. |
0.1 |
balancing |
enabled |
Параметр для включения или отключения функционала балансировки узлов. |
False |
balancing |
migration_retries |
Количество попыток миграции виртуальных машин. |
3 |
balancing |
periodic_time |
Период между балансировкой агрегатров узлов. Измеряется в часах. |
24 |
database |
url |
Настройка подключения к базе данных. |
mysql+pymysql://tos:password@localhost:3306/cloud_manager?charset=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_availability_check |
attempts |
Количество попыток считывания файла. |
2 |
extra_availability_check |
delay |
Задержка при повторной попытке считывания файла состояния вычислительного узла. Измеряется в секундах. |
60 |
extra_availability_check |
enabled |
Параметр для включения или отключения дополнительной проверки доступности вычислительных узлов через хранилище. |
False |
extra_availability_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 |
logfile |
Путь до лог файла службы tos-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/pxelinux.cfg/ |
sig_validation |
confirm_timeout |
Таймаут подтверждения rpc запроса. |
10 |
sig_validation |
enabled |
Включение периодической задачи верификации sig. |
True |
sig_validation |
lock_timeout |
Длительность блокировки задачи в секундах. |
70 |
sig_validation |
sync_interval |
Длительность интервала между проверками состояния сервиса sig. |
60 |
sig_validation |
timeout |
Общий таймаут rpc запроса. |
60 |
storage_sync |
enabled |
Параметр, включающий синхронизацию хранилищ. |
True |
storage_sync |
logfile |
Путь до лог файла синхронизации хранилищ. |
|
storage_sync |
sync_interval |
Интервал запуска синхронизации хранилищ. Измеряется в секундах. |
60 |
Примечание
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 - данный узел не является загруженным и не будет принят к балансировке.
Важно
При изменении параметров файла конфигурации, для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».
Возможности использования модуля
План восстановления
В случае неудачной установки или обновления модуля 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