Перейти к основному содержимому

КАСКАД

ТехноДок может быть встроен в SCADA систему КАСКАД. Для интеграции необходимо выполнить следующие шаги:

  • Остановить проект КАСКАД.
  • Скопировать директории components/kaskad/panels и components/kaskad/scripts из дистрибутива ТехноДок в корневую директорию проекта КАСКАД.
  • Добавить в конец файла config/prog проекта КАСКАД строку
    WCCOActrl        | always |      30 |        2 |        2 |technodoc.ctl
  • Запустить проект КАСКАД.
  • Перейти в ТехноДок и открыть форму Внешние соединения. Добавить новое соединение с типом КАСКАД, нажать кнопку Сохранить. Настроенное соединение будет доступно для использования в системе.

Бесшовная авторизация из панели проекта

  1. В проекте КАСКАД открыть скрипт scripts\libs\Technodoc\Core\technodocServerSettings.ctl.
    • Для переменной TECHNODOC_LOCAL_HTTP_ADDRESS указать корректный адрес сервера ТехноДок.
    • Если ТехноДок установлен в виде кластера, то для переменной TECHNODOC_CLUSTER_URLS задать в виде строк список адресов (URL) экземпляров ТехноДок в кластере.
    • Если ТехноДок и проект КАСКАД расположены на разных серверах, то в переменных TECHNODOC_LOCAL_HTTP_ADDRESS и TECHNODOC_CLUSTER_URLS указать адреса сервера(серверов) ТехноДок.
  2. Для бесшовной авторизации пользователей перейти в настройки ТехноДок -> Аутентификация и включить опцию Включить авторизацию из внешних систем.
    • В поле Токен авторизации будет указано значение токена по умолчанию 9c5a61c7b1c14031a42f476cd09f8062.
    • Этот токен должен совпадать с переменной AUTH_TOKEN в коде панели technodoc.pnl. Если в настройках ТехноДок значение токена авторизации не изменяли, то редактировать панель technodoc.pnl не требуется.
    • Данная опция позволит выполнять вход пользователей КАСКАД в ТехноДок из панели technodoc.pnl.
    • Если пользователь входит впервые, то в ТехноДок для него будет создана учетная запись.
    • При входе происходит синхронизация Групп прав КАСКАД и Ролей ТехноДок. Для каждой Группы прав создается Роль и назначается пользователю. Например, если в КАСКАД есть пользователь Иванов Иван с логином ivanov и группами прав Операторы и Инженеры, то при открытии панели technodoc.pnl будет создана соответствующая учетная запись и роли Операторы и Инженеры (если такие роли не были созданы ранее).
    • Администратор системы может назначить необходимые права для существующих и новых ролей.
  3. Перезапустить проект КАСКАД.
Устранение проблем
  • Если при запуске ТехноДок при помощи виджета WebView.ewo возникает ошибка Failed to create OpenGL context for format QSurfaceFormat... добавьте в переменные среды переменную QT_OPENGL со значением angle или software и перезапустите КАСКАД.

Резервирование

В данном разделе описана конфигурация, состоящая из 2 резервированных серверов ТехноДок и КАСКАД. Для примера будем использовать следующие адреса:

  • reports.server1 и reports.server2 – основной и резервный сервер ТехноДок. База данных ТехноДок находится на тех же серверах. В качестве резервируемой БД может выступать MariaDB, PostgreSQL или Microsoft SQL Server.
  • kaskad.server1 и kaskad.server2 - основной и резервный сервер КАСКАД.

Схема взаимодействия ТехноДок и КАСКАД

Схема взаимодействия ТехноДок и КАСКАД

Для обмена данными между ТехноДок и КАСКАД используется протокол XMLRPC. Для отображения графического интерфейса ТехноДок используется панель с компонентом WebView. Для настройки взаимодействия ТехноДок и КАСКАД необходимо выполнить следующие действия:

  1. Настроить кластер БД ТехноДок.
  2. Настроить кластер ТехноДок.
  3. Добавить и настроить скрипты взаимодействия КАСКАД с ТехноДок в проекте КАСКАД в настроенный резервируемый проект.
  4. Добавить в ТехноДок внешнее соединение с настройками подключения для каждой из пар проекта КАСКАД.
  5. Добавить и настроить в проекте КАСКАД панель отображения ТехноДок с автоматическим выбором основного сервера.

Настройка реплицируемой БД ТехноДок

ТехноДок может использовать одну из следующих СУБД для создания реплицированной БД:

После выполнения настройки резервирования БД необходимо на каждом из серверов ТехноДок задать следующие настройки подключения:

  • Открыть файл application.conf на хосте reports.server1.
  • В секции [Database:Connections:Primary] раскомментировать следующие строки и указать корректные данные авторизации:
# Настройки для MariaDb
Type = MariaDb # Тип БД – MariaDb
ConnectionString=Server=reports.server1;Database=databaseName;Uid=root;Password=password # Строка соединения с БД;
# Настройки для PostgreSql
Type = PostgreSql # Тип БД – PostgreSql
ConnectionString=Server=reports.server1;Database=databaseName;User Id=postgres;Password=postgres;SearchPath=td# Строка соединения с БД;
# Настройки для Microsoft SQL Server
Type = MsSql # Тип БД – MS SQL Server
ConnectionString=Server=reports.server1;Database=databaseName;User Id=sa;Password=password # Строка соединения с БД;
  • В секции [Database:Connections: Standby] раскомментировать следующие строки и указать корректные данные авторизации:
# Настройки для MariaDb
Type = MariaDb # Тип БД – MariaDb
ConnectionString=Server=reports.server2;Database=databaseName;Uid=root;Password=password # Строка соединения с БД;
# Настройки для PostgreSql
Type = PostgreSql # Тип БД – PostgreSql
ConnectionString=Server=reports.server2;Database=databaseName;User Id=postgres;Password=postgres;SearchPath=td # Строка соединения с БД;
# Настройки для Microsoft SQL Server
Type = MsSql # Тип БД – MS SQL Server
ConnectionString=Server=reports.server2;Database=databaseName;User Id=sa;Password=password # Строка соединения с БД;
  • В секции [Database] установить настройку FailoverStrategy в значение RoundRobin (используется по умолчанию).
FailoverStrategy = RoundRobin
  • Повторить настройки в таком же порядке на сервере reports.server2.
Дополнение для PostgreSQL

Альтернативный вариант задать строку подключения к БД, в которой будут сразу указаны все сервера для подключения и приоритетная БД для подключения, за выбор БД для подключения будет отвечать драйвер, для этого:

  • Открыть файл application.conf на хосте reports.server1.
  • В секции [Database:Connections:Primary] раскомментировать следующие строки и указать корректные данные авторизации:
Type = PostgreSql                                                                                                                                              # Тип БД – PostgreSql
ConnectionString=Server=reports.server1,reports.server2;Database=databaseName;User Id=postgres;Password=postgres;SearchPath=td;Target Session Attributes=primary # Строка соединения с БД;
  • Повторить настройки в таком же порядке на сервере reports.server2. В данном случае с помощью задания опции подключения Target Session Attributes=primary драйвер автоматически будет искать и подключаться к главной БД без необходимости явного указанию второй строки соединения.
Дополнение для Microsoft SQL Server

При выборе в качестве опции резервирования группы доступности Always On будет нужна только одна строка подключения, соответственно настройки подключения будут выглядеть следующим образом (в качестве адреса кластера для примера зададим cluster.server):

  • Открыть файл application.conf на хосте reports.server1.
  • В секции [Database:Connections:Primary] раскомментировать следующие строки и указать корректные данные авторизации:
Type = MsSql # Тип БД – MS SQL Server
ConnectionString=Server=cluster.server;Database=databaseName;User Id=sa;Password=password # Строка соединения с БД;
  • Повторить настройки в таком же порядке на сервере reports.server2. В данном отвечать за выбор главной БД будет настроенный кластер, в составе которого работают группы доступности.

Настройка кластера ТехноДок.

Подробная информация о работе кластера ТехноДок описана в разделе Резервирование сервера приложений. В данном разделе будет приведен пример настройки кластера.

Действия выполняемые на хосте reports.server1:

  • Открыть файл application.conf на хосте reports.server1.
  • В секции [Cluster] указать настройку Priority=1, что сделает данный сервер ведущим, так как это будет максимальный приоритет среди серверов в данной конфигурации.
  • В секции [Cluster] указать настройку ServersAddresses:0=http://reports.server2. Данная настройка задает адрес второго сервера для его опроса.
  • В результате настройки в секции [Cluster] на хосте reports.server1 будут выглядеть следующим образом:
[Cluster]
Priority = 1
ServersAddresses:0 = http://reports.server2

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

  • Открыть файл application.conf на хосте reports.server1.
  • Отключить задачи для ведомого сервера как показано ниже:
[Standby:Reports:Jobs:UploadReportValuesJob]                       # Задача загрузки значений отчетов
IsEnabled = False
[Standby:Reports:Jobs:ProcessReportsCreationRulesJob] # Задача создания отчетов
IsEnabled = False
[Standby:Reports:Jobs:ProcessReportsRulesJob] # Задача обработки правил отчетов
IsEnabled = False
[Standby:OperationTime:Jobs:CalculateOperationTimeJob] # Задача расчета наработки
IsEnabled = False
[Standby:Mail:Jobs:SendMailsJob] # Задача отправки почты
IsEnabled = False
[Standby:Mail:Jobs:DeleteMailsJob] # Задача удаления устаревших писем
IsEnabled = False
Действия выполняемые на хосте reports.server2:
  • Открыть файл application.conf на хосте reports.server2.
  • В секции [Cluster] указать настройку Priority=0, что сделает данный сервер ведомым, так как это будет минимальный приоритет среди серверов в данной конфигурации.
  • В секции [Cluster] указать настройку ServersAddresses:0=http://reports.server1. Данная настройка задает адрес второго сервера.
  • В результате, настройки в секции [Cluster] на хосте reports.server2 будут выглядеть следующим образом:
[Cluster]
Priority = 0
ServersAddresses:0 = http://reports.server1
  • Для режима ведомого сервера отключить выполнение задач как показано ниже:
[Standby:Reports:Jobs:UploadReportValuesJob]                       # Задача загрузки значений отчетов
IsEnabled = False
[Standby:Reports:Jobs:ProcessReportsCreationRulesJob] # Задача создания отчетов
IsEnabled = False
[Standby:Reports:Jobs:ProcessReportsRulesJob] # Задача обработки правил отчетов
IsEnabled = False
[Standby:OperationTime:Jobs:CalculateOperationTimeJob] # Задача расчета наработки
IsEnabled = False
[Standby:Mail:Jobs:SendMailsJob] # Задача отправки почты
IsEnabled = False
[Standby:Mail:Jobs:DeleteMailsJob] # Задача удаления устаревших писем
IsEnabled = False
  • После завершения настроек выше, надо перезагрузить оба сервера приложений ТехноДок.

Настройка обмена данными ТехноДок и КАСКАД

ТехноДок выполняет обмен данными с КАСКАД по протоколу XMLRPC. Для настройки коммуникации между ТехноДок выполните следующие действия на каждом узле из резервированной пары (подробнее об интеграции смотрите КАСКАД):

  1. Скопируйте в проект КАСКАД CONTROL скрипты из папки components/kaskad/scripts установленного экземпляра ТехноДок.
  2. В скрипте technodoc.ctl при необходимости измените порт, изменив значение переменной TECHNODOC_XMLRPC_HTTP_PORT (по умолчанию используется 8242).
  3. Добавьте новый менеджер сценариев, указав в опциях запуска скрипт technodoc.ctl.
  4. Запустите добавленный менеджер. В консоли проекта должна появиться запись XMLRPC-сервер запущен на порту ХХХХ.

Запуск скрипта взаимодействия ТехноДок и КАСКАД

Запуск скрипта взаимодействия ТехноДок и КАСКАД

Далее необходимо добавить в ТехноДок внешнее соединение:

  1. Перейти в пункт меню Внешние соединения.
  2. Добавить источник данных КАСКАД и указать 2 опции подключения с адресами до каждой резервной пары серверов КАСКАД - kaskad.server1 и kaskad.server2 (подробнее о настройке данного источника данных см. Настройки источника КАСКАД).

Настройка внешнего соединения с источником данных КАСКАД

Настройка внешнего соединения с источником данных КАСКАД

Замечание

Строки подключения можно указать в любом порядке, ТехноДок выполнит подключение к первому доступному источнику, а КАСКАД автоматически перенаправит запрос к основному серверу.

Настройка панели КАСКАД при работе ТехноДок в кластере

Для настройки подключения панели к основному экземпляру ТехноДок в кластере необходимо выполнить следующие действия:

  1. В проекте КАСКАД открыть скрипт на каждом из серверов открыть scripts\libs\Technodoc\Core\technodocServerSettings.ctl.
  2. Для переменной TECHNODOC_CLUSTER_URLS задать в виде строк список адресов (URL) экземпляров ТехноДок в кластере.
// Массив адресов серверов ТехноДок
dyn_string TECHNODOC_CLUSTER_URLS = makeDynString("http://reports.server1", "http://reports.server2");
  1. Если проект был запущен, то перезагрузить проект.

Теперь, при открытии панели, будет выполняться поиск и подключение к основному экземпляру ТехноДок.