Установка и настройка

Установка

Важно

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

Режим суперпользователя:

sudo -i

Важно

Установка производится на управляющий узел. Для работы модуля необходимо установить службу OpenStack Nova API.

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

    mkdir -p /tmp/rollback/cloud_manager
    pip3 freeze > /tmp/rollback/cloud_manager/
    

    После чего в каталоге /tmp/rollback/cloud_manager будет находиться файл pip_before.txt с перечнем установленных приложений.

  2. Также сохраните версии миграции:

    openstack aos db list -n cloud_manager > /tmp/rollback/cloud_manager/migrations.txt
    

    Где:

    • /tmp/rollback/cloud_manager/ - директория файла;

    • migrations.txt - наименование файла с версиями миграций.

  3. Установите пакет CloudManager:

    • из репозитория Python-пакетов:

      pip3 install cloud-manager
      
  4. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip3 freeze > /tmp/rollback/cloud_manager/pip_after.txt
    
  5. Добавьте пользователя:

    useradd -m aos
    passwd aos
    

Примечание

Для установки CloudManager на Astra Linux (Smolensk) выполните следующее:

  1. Подключите предоставленный Вам репозиторий с пакетами AccentOS.

  2. Установите пакет командой:

    sudo apt install -y cloud-manager
    

Установка на двух и более контроллерах

При установке CloudManager на двух и более контроллерах необходимо:

  1. Реплицировать базу данных на каждый из контроллеров;

  2. Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров;

  3. Процессы мониторинга и управления и синхронизации вычислительных узлов должны быть активны только на одном контроллере. У этого же контроллера должен быть настроен доступ к серверу брокера сообщений;

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

Примечание

Удаление и диагностика модуля на каждом контроллере происходит таким же образом, как и в случае с одним контроллером.

Настройка

Примечание

Рассматривается настройка запуска API сервиса через WSGI-сервер, поставляемый вместе с библиотекой eventlet. Для настройки запуска сервиса через другой WSGI-сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: cloud_manager.api.cloud_manager_api.wsgi.

  1. Выполните первичную настройку модуля:

    openstack aos configure -n cloud_manager
    
  2. Создайте каталог для логов с нужными правами:

    mkdir -p /var/log/aos/cloud-manager
    chown -R aos:aos /var/log/aos/cloud-manager
    
  1. Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их (подробнее см. Файл конфигурации):

    cp /etc/aos/aos.conf.example /etc/aos/aos.conf
    cp /etc/aos/cloud_manager.conf.example /etc/aos/cloud_manager.conf
    
  2. Создайте базу данных на примере 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';
    # Осуществите выход из базы данных
    
  3. Отредактируйте секцию [database] конфигурационного файла etc/aos/cloud_manager.conf, например:

    [database]
    url = mysql+pymysql://aos:password@tst.stand.loc:3306/cloud_manager?charset=utf8
    
  4. Выполните миграцию базы данных:

    openstack aos db migrate -n cloud_manager
    
  5. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user aos password
    rabbitmqctl add_vhost aos
    rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*"
    rabbitmqctl set_permissions aos ".*" ".*" ".*"
    
  6. Создайте пользователя в OpenStack для API сервисов:

    openstack user create --domain default --project service --project-domain default --password password --or-show aos
    
  7. Назначьте пользователю роль service:

    openstack role add --user aos --user-domain default --project service --project-domain default service
    
  8. Включите и запустите службы 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
    
  9. Создайте сервис CloudManager API:

    openstack service create --name cloud-manager --description "Cloud Manager Service" cloud-manager
    
  10. Создайте точки входа (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/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 выполните возврат к исходному состоянию:

  1. Сравните версии миграций в файле /tmp/rollback/cloud_manager/migrations.txt с текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:

    openstack aos db list -n cloud_manager
    openstack aos db migrate -n cloud_manager --migration 27
    
  2. Произведите возврат к предыдущему состоянию пакетов:

    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