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

Установка

Важно

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

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

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/s tate/dhcpd.leases, /v ar/lib/dhcp/dhcpd.lea ses
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: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 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/pxe linux.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

Дополнительные параметры

Секция Параметр Описание Значение по умолчанию
DEFAULT traceback_enabled

Параметр для вывода трассировки ошибки при логировании. Возможные значения:

  • true;
  • false.

Значения являются регистронезависимыми.

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 - данный узел не является загруженным и не будет принят к балансировке.

Важно

При изменении параметров файла конфигурации, для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».

План восстановления

В случае неудачной установки или обновления модуля 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