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

Важно

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

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

sudo -i

Важно

Установка производится на управляющий узел.

Установка

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

    mkdir -p /tmp/tionix_rollback/scheduler
    pip freeze > /tmp/tionix_rollback/scheduler/pip_before.txt
    

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

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

    django-admin showmigrations --settings=tionix_scheduler.settings.django_settings > /tmp/tionix_rollback/scheduler/migrations.txt
    

    Где:

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

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

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

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

    pip freeze > /tmp/tionix_rollback/scheduler/pip_after.txt
    

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

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

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

Примечание

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

Настройка

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

    openstack tnx configure -n tnx_scheduler tnx_client
    
  2. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user tionix password
    rabbitmqctl add_vhost tionix
    rabbitmqctl set_permissions -p tionix tionix ".*" ".*" ".*"
    rabbitmqctl set_permissions tionix ".*" ".*" ".*"
    
  3. Создайте каталог для лог-файлов с нужными правами:

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

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

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

    openstack tnx db migrate -n tnx_scheduler
    
  4. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable tionix-scheduler-beat.service
    systemctl start tionix-scheduler-beat.service
    systemctl enable tionix-scheduler-worker.service
    systemctl start tionix-scheduler-worker.service
    
  5. Создайте сервис Scheduler API:

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

    openstack endpoint create --region RegionOne tnx-scheduler internal http://controller:10001
    openstack endpoint create --region RegionOne tnx-scheduler admin http://controller:10001
    openstack endpoint create --region RegionOne tnx-scheduler public http://controller:10001
    
  7. Создайте симлинк на поставляемый конфигурационный файл Apache и перезапустите веб сервера:

    # Ubuntu:
    ln -s /etc/apache2/conf-available/tionix-scheduler-dash.conf /etc/apache2/conf-enabled/tionix-scheduler-dash.conf
    service apache2 restart
    
    # ALT Linux 7:
    ln -s /etc/httpd2/conf/sites-available/tionix-scheduler-dash.conf /etc/httpd2/conf/sites-enabled/tionix-scheduler-dash.conf
    systemctl restart httpd2
    

    Примечание

    Необходимо убедиться в корректности конфигурационного файла: проверить пути к установленным модулям, пути к логам, соответствие директив установленной версии Apache.

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

Примечание

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

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

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

Настройки базы данных, где:

  • ENGINE - django.db.backends.mysql;
  • NAME - tionix_scheduler.
LOG_LEVEL

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

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

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

INFO
ENTRY_GROUPS Список наименований групп, по которым будет производиться сбор задач по точкам входа, например: tionix_tasks.  
TASK_LOCALE Локальное наименование задач, собранных по точкам входа. Например, en.  
Настройки сервиса выполнения асинхронных задач:
Параметр Описание Значение по умолчанию
TIME_ZONE Временная зона для логирования событий процессов Celery.  
CELERY_TASK_SERIALIZER Задача сериализации.  
CELERY_RESULT_SERIALIZER Результаты сериализации.  
CELERY_ACCEPT_CONTENT Разрешенные операции сериализации для поступающих сообщений.  
CELERYBEAT_SYNC_EVERY Количество выполненных задач до очередной синхронизации.  
CELERYBEAT_MAX_LOOP_INTERVAL Интервал между проверками расписания.  
SENTRY

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

  • ENABLED - Флаг, отвечающий за отправку сообщений об ошибках в Sentry. Возможные значения:

    • True;
    • False.

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

  • DSN - Адрес сервера Sentry, содержит ключ пользователя и идентификатор проекта;

  • LOG_LEVEL - Уровень логирования в Sentry. Значения являются регистронезависимыми.

  • False;
  • Адрес внутреннего сервера Sentry;
  • CRITICAL.
SCHEDULER_WORKER_LOGFILE Путь до лог файла службы tionix-scheduler-worker. /var/log/tionix/scheduler/worker.log
SCHEDULER_BEAT_LOGFILE Путь до лог файла службы tionix-scheduler-beat. /var/log/tionix/scheduler/beat.log

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

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

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

  • True;
  • False.

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

False

Важно

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

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

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

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

    django-admin showmigrations --settings=tionix_scheduler.settings.django_settings
    openstack tnx db migrate -n tnx_scheduler --migration "timetable 0017_auto_20161206_1023"
    
  2. Произведите возврат к предыдущему состоянию пакетов:

    cd /tmp/tionix_rollback/scheduler
    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