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

Установка

Важно

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

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

sudo -i

Важно

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

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

    mkdir -p /tmp/rollback/scheduler
    pip3 freeze > /tmp/rollback/scheduler/pip_before.txt
    

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

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

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

    Где:

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

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

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

    pip3 freeze > /tmp/rollback/scheduler/pip_after.txt
    

Примечание

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

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

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

    sudo apt install -y aos-scheduler
    

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

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

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

Примечание

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

Настройка

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

    openstack aos configure -n scheduler client
    
  2. Настройте брокер сообщений RabbitMQ Server:

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

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

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

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте базу данных scheduler
    CREATE DATABASE scheduler;
    # Дайте права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных scheduler
     GRANT ALL PRIVILEGES ON scheduler.* TO 'aos'@'localhost' IDENTIFIED BY 'password';
     GRANT ALL PRIVILEGES ON scheduler.* TO 'aos'@'%' IDENTIFIED BY 'password';
    # Осуществите выход из базы данных
    
  3. Отредактируйте секцию [database] конфигурационного файла etc/aos/scheduler.conf, например:

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

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

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

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

    openstack endpoint create --region RegionOne scheduler internal http://controller:10001
    openstack endpoint create --region RegionOne scheduler admin http://controller:10001
    openstack endpoint create --region RegionOne scheduler public http://controller:10001
    

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

Примечание

Файл конфигурации позволяет переопределять секции и параметры общего файла aos.conf для конкретного модуля.

Примечание

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

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

Секция Параметр Описание Значение по умолчанию
DEFAULT task_locale Локальное наименование задач, собранных по точкам входа. Например, en. en
DEFAULT time_zone Временная зона для логирования событий процессов Celery. Europe/Moscow
api host Хост сервиса scheduler api. 0.0.0.0
api logfile Путь до лог файла службы aos-scheduler-api.  
api num_workers Количество gunicorn воркеров сервиса scheduler api. 3
api port Порт сервиса scheduler api. 10001
api threads Количество gunicorn потоков сервиса scheduler api. 10
beat logfile Путь до лог файла службы aos-scheduler-beat.  
beat max_loop_interval Интервал между проверками расписания. 30
beat sync_every Количество выполненных задач до очередной синхронизации. 60
database url Настройка подключения к базе данных. mysql://aos:password@ localhost:3306/schedu ler

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

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

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

  • true;
  • false.

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

false

Важно

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

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

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

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

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

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