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

Важно

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

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

sudo -i

Важно

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

Установка

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

    mkdir -p /tmp/tionix_rollback/node_control
    pip freeze > /tmp/tionix_rollback/node_control/
    

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

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

    openstack tnx db list -n tnx_node_control > /tmp/tionix_rollback/node_control/migrations.txt
    

    Где:

    • /tmp/tionix_rollback/node_control/ - директория файла;
    • migrations.txt - наименование файла с версиями миграций.
  3. Установите пакет TIONIX.NodeControl:

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

      # Ubuntu, CentOS:
      pip install tionix-node-control
      
    • из репозитория RPM пакетов:

      # ALT Linux 7:
      apt-get -y install python-module-tionix_node_control
      
      # CentOS:
      yum -y install python-tionix_node_control
      
  4. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip freeze > /tmp/tionix_rollback/node_control/pip_after.txt
    
  5. Добавьте пользователя:

    useradd -m tionix
    passwd tionix
    

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

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

  1. Реплицировать базу данных на каждый из контроллеров;
  2. Устанавливать модуль с одинаковыми параметрами на каждый из контроллеров;
  3. Процессы tionix-node-control-node-tracker.service и tionix-node-control-node-syncer.service должны быть активны только на одном контроллере. У этого же контроллера должен быть настроен доступ к серверу брокера сообщений;
  4. Инициализацию вычислительных узлов и устройств управления питанием необходимо проводить только на одном из контроллеров.

Примечание

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

Настройка

Примечание

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

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

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

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

    cp /etc/tionix/node_control.yaml.example /etc/tionix/node_control.yaml
    
  2. Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте пользователя tionix c паролем password
    CREATE USER 'tionix'@'localhost' IDENTIFIED BY 'password';
    # Создайте базу данных tionix_node_control
    CREATE DATABASE tionix_node_control;
    # Дайте пользователю права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных tionix_node_control
    GRANT ALL PRIVILEGES ON tionix_node_control.* TO 'tionix'@'localhost';
    # Осуществите выход из базы данных
    
  3. Выполните миграцию базы данных:

    openstack tnx db migrate -n tnx_node_control
    
  4. Настройте брокер сообщений RabbitMQ Server:

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

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

    openstack role add --user tionix --user-domain default --project service --project-domain default service
    
  7. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable tionix-node-control-api.service
    systemctl start tionix-node-control-api.service
    systemctl enable tionix-node-control-node-syncer.service
    systemctl start tionix-node-control-node-syncer.service
    systemctl enable tionix-node-control-node-tracker.service
    systemctl start tionix-node-control-node-tracker.service
    systemctl enable tionix-node-control-worker.service
    systemctl start tionix-node-control-worker.service
    systemctl enable tionix-node-control-agent.service
    systemctl start tionix-node-control-agent.service
    
  8. Создайте сервис NodeControl API:

    openstack service create --name tnx-nc --description "TIONIX Node Control Service" tnx-nc
    
  9. Создайте точки входа (endpoint):

    openstack endpoint create --region RegionOne tnx-nc internal http://controller:9362
    openstack endpoint create --region RegionOne tnx-nc admin http://controller:9362
    openstack endpoint create --region RegionOne tnx-nc public http://controller:9362
    

Файл конфигурации

Примечание

По умолчанию в файле node_control.yaml.example строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.

Конфигурационный файл представлен в yaml формате и состоит из следующих секций и параметров:

Параметр Описание Значение по умолчанию
DB

Настройка подключения к базе данных, где:

tionix_node_control
SETTINGS_TRACKER

Настройка мониторинга вычислительных узлов, где:

  • mutex - количество попыток определения статуса гипервизора при переходе в статус down перед запуском обработчика;
  • mutex_up - количество попыток определения статуса гипервизора при переходе в статус up перед запуском обработчика;
  • loop_time - интервал времени между проверками статуса вычислительных узлов (в секундах).
  • mutex - 3;
  • mutex_up - 1;
  • loop_time - 30.
DHCP_LEASES_FILEPATHS Путь до директории с .leases файлами DHCP сервера. /var/lib/dhcp/dhcpd/state/dhcpd.leases, /var/lib/dhcp/dhcpd.leases
SYNC_NOVA_NODES_TIME Интервал синхронизации вычислительных узлов в секундах. 60
DB_CONNECTION_MAX_RETRIES Количество попыток подключения к базе данных. 2
TIMEOUT_RESERV_NODE_UP Время ожидания поднятия резервного вычислительного узла в минутах. 15
PXE

Настройка PXE, где:

  • conf_dir - каталог для конфигурационных файлов PXE.
/var/lib/tftpboot/pxelinux.cfg
MAX_DOWN_HOSTS Максимально допустимое количество вычислительных узлов в статусе down, за исключением резервных. При превышении этого количества автоматическая эвакуация не производится ни для одного из узлов. Отрицательные числа недопустимы. 0
ALLOW_HOST_AUTO_POWER_OFF

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

  • True;
  • False.

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

False
MAX_TICK_COUNT Максимальное количество итераций проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. 10
SLEEP_TIME Время ожидания до начала следующей итерации во время проверки статуса вычислительного узла при выключении хоста с эвакуацией виртуальных машин при отключении питания гипервизора консольной утилитой. Измеряется в секундах. 30
HOST_RESTART_TIMEOUT Время ожидания перезапуска вычислительного узла. Измеряется в секундах. 600
HOST_ATTACH_MAX_RETRIES Количество повторных попыток привязки хоста к виртуальному контроллеру в случае ошибки. 10
HOST_ATTACH_RETRY_DELAY Время ожидания до следующей попытки привязки хоста к виртуальному контроллеру. Измеряется в секундах. 120
HOST_ATTACH_NETWORK_TAG Тэг для фильтрации сетей при выборе сетевого интерфейса виртуального контроллера.  
KEY_PATH Путь до закрытого ключа, необходимого для обращения к виртуальному контроллеру. /etc/tionix/hybrid/tionix.crt
CONTROLLER_USERNAME Имя пользователя для подключения к виртуальному контроллеру. tionix
CONTROLLER_AUTH_PATH Путь до расположенного на виртуальном контроллере файла с авторизационными данными. /etc/tionix/hybrid/admin-openrc
LOG_LEVEL

Уровень логирования. Доступные значения:

  • DEBUG;
  • INFO;
  • WARNING;
  • ERROR;
  • CRITICAL.

Значения являются регистронезависимыми. Подробное описание параметров доступно в разделе Уровни логирования.

INFO
SENTRY

Настройки логирования Sentry, где:

  • ENABLED - Флаг, отвечающий за отправку сообщений об ошибках в Sentry;
  • DSN - Адрес сервера Sentry, содержит ключ пользователя и идентификатор проекта;
  • LOG_LEVEL - Уровень логирования в Sentry.

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

  • False;
  • Адрес внутреннего сервера Sentry;
  • CRITICAL.
ENABLE_CEPH_INTEGRATION

Параметр для включения или отключения функционала работы со службой Ceph, в том числе, программно-определяемыми хранилищами (SDS). Допустимые значения:

  • True;
  • False.

Значения являются регистронезависимыми. При значении параметра True в разделе TIONIX веб-интерфейса TIONIX.Dashboard отображается вкладка SDS.

False
ENABLE_NETWORK_ISOLATION

Параметр для включения или отключения функционала работы с изолированными программно-определяемыми сетями (SDN). Допустимые значения:

  • True;
  • False.

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

False
ENABLE_AGENT

Параметр для включения или отключения функционала управления узлами, предоставляемого модулем TIONIX.Agent. Допустимые значения:

  • True;
  • False.

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

False
NETWORK_ISOLATION_API_HOST Хост, на котором запущен сервис изоляции сети.  
NETWORK_ISOLATION_API_PORT Порт, на котором запущен сервис изоляции сети. 5549
RABBIT_QUEUES Имя vhost в брокере сообщений RabbitMQ. vhost: tionix
RETRIES_WAIT_FOR_NODE_STATE Максимальное количество попыток опроса состояния гипервизора. 240
RETRIES_WAIT_FOR_VM_STATUS Максимальное количество попыток опроса состояния виртуальной машины. 60
ALLOW_EVACUATE_HOST

Параметр разрешает, либо запрещает эвакуацию хоста. Допустимые значения:

  • True;
  • False.

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

True
NODE_CONTROL_API_AUDIT_ENABLED

Параметр, включающий аудит запросов службы NodeControl API. Допустимые значения:

  • True;
  • False.
True
NODE_CONTROL_API_LISTEN IP-адрес, на котором будет запущена служба NodeControl API. 0.0.0.0
NODE_CONTROL_API_LISTEN_PORT Порт, на котором будет запущена служба NodeControl API. 9362
NODE_CONTROL_API_LOGFILE Путь до лог файла службы tionix-node-control-api. /var/log/tionix/node-control/node-control-api.log
NODE_CONTROL_NODE_SYNCER_LOGFILE Путь до лог файла службы tionix-node-control-node-syncer. /var/log/tionix/node-control/node-syncer.log
NODE_CONTROL_STORAGE_SYNCER_LOGFILE Путь до лог файла службы node_control-storage-syncer. /var/log/tionix/node-control/storage-syncer.log
NODE_CONTROL_NODE_TRACKER_LOGFILE Путь до лог файла службы tionix-node-control-node-tracker. /var/log/tionix/node-control/node-tracker.log
NODE_CONTROL_WORKER_LOGFILE Путь до лог файла службы tionix-node-control-worker. /var/log/tionix/node-control/worker.log
NODE_CONTROL_NOVA_LISTENER_LOGFILE Путь до лог файла службы tionix-node-control-nova-listener. /var/log/tionix/node-control/nova-listener.log
NODE_CONTROL_AGENT_LOGFILE Путь до лог файла службы tionix-node-control-agent. /var/log/tionix/node-control/agent.log
NODE_CONTROL_DRS_TRIGGER_LOGFILE Путь до лог файла службы tionix-node-control-drs-trigger. /var/log/tionix/node-control/drs-trigger.log
DRS_TRIGGER_INTERVAL Интервал запуска автоматического применения результатов аудита. Измеряется в секундах. 600
DRS

Настройка подключения к внешней системе DRS, где:

  • DRS_HOSTNAME - хост, на котором запущена система DRS;
  • DRS_PORT - порт сервера с системой DRS;
  • DRS_USER - пользователь системы DRS;
  • DRS_PASSWORD - пароль пользователя системы DRS.
  • DRS_PORT80
STORAGE_SYNC_INTERVAL Интервал запуска синхронизации информации о дисках. Измеряется в секундах. 60
RECOVERY_PRIORITY Значение приоритета восстановления, которое будет использоваться при переносе виртуальной машины во время автоэвакуации в случае неполадок на вычислительном узле. Принимает значения от 0 (перенос не осуществляется) до 10 (перенос осуществляется в первую очередь). 5
PRIORITIZED_EVACUATION_TIMEOUT Интервал между запусками эвакуации групп виртуальных машин с одинаковыми приоритетами восстановления. Измеряется в секундах. 60
EXTRA_AVAILABILITY_CHECK

Настройка дополнительной проверки доступности вычислительных узлов через хранилище, где:

  • CHECK_ENABLED - параметр для включения или отключения проверки. Допустимые значения:
    • True;
    • False.
  • DELAY - задержка при повторной попытке считывания файла состояния вычислительного узла. Измеряется в секундах;
  • ATTEMPTS - количество попыток считывания файла;
  • INSTANCE_RATE - необходимый процент запущенных виртуальных машин.
  • CHECK_ENABLEDFalse;
  • DELAY60;
  • ATTEMPTS2;
  • INSTANCE_RATE100.

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

Параметр Описание Значение по умолчанию
TRACEBACK_ENABLED

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

  • True;
  • False.

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

False

Важно

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

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

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

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

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

    cd /tmp/tionix_rollback/node_control
    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
    pip uninstall -r pip_uninstall.txt
    pip install -r pip_install.txt