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

Установка

Важно

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

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

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 Максимальное время ожидания подтверждения ответа от службы aos-agent. 10
agent agent_response_timeout Максимальное время ожидания ответа от службы aos- agent. 60
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
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 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
power shutdown_interval Время ожидания до начала следующей итерации во время проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. Измеряется в секундах. 30
power shutdown_max_tick Максимальное количество итераций проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. 10
power ssh_connect_timeout Время работы канала связи для выполнения команд. Измеряется в секундах. 1
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

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

  • 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