КАСКАД
ТехноДок может быть встроен в SCADA систему КАСКАД.
Для интеграции необходимо выполнить следующие шаги:
- Остановить проект КАСКАД.
- Скопировать директории
components/kaskad/panelsиcomponents/kaskad/scriptsиз дистрибутиваТехноДокв корневую директорию проекта КАСКАД. - Добавить в конец файла
config/progпроекта КАСКАД строкуWCCOActrl | always | 30 | 2 | 2 |technodoc.ctl - Запустить проект КАСКАД.
- Перейти в ТехноДок и открыть форму
Внешние соединения. Добавить новое соединение с типомКАСКАД, нажать кнопкуСохранить. Настроенное соединение будет доступно для использования в системе.
Бесшовная авторизация из панели проекта
- В проекте КАСКАД открыть скрипт
scripts\libs\Technodoc\Core\technodocServerSettings.ctl.- Для переменной
TECHNODOC_LOCAL_HTTP_ADDRESSуказать корректный адрес сервера ТехноДок. - Если ТехноДок установлен в виде кластера, то для переменной
TECHNODOC_CLUSTER_URLSзадать в виде строк список адресов (URL) экземпляров ТехноДок в кластере. - Если ТехноДок и проект КАСКАД расположены на разных серверах, то в переменных
TECHNODOC_LOCAL_HTTP_ADDRESSиTECHNODOC_CLUSTER_URLSуказать адреса сервера(серверов) ТехноДок.
- Для переменной
- Для бесшовной авторизации пользователей перейти в настройки
ТехноДок -> Аутентификацияи включить опциюВключить авторизацию из внешних систем.- В поле
Токен авторизациибудет указано значение токена по умолчанию9c5a61c7b1c14031a42f476cd09f8062. - Этот токен должен совпадать с переменной
AUTH_TOKENв коде панелиtechnodoc.pnl. Если в настройках ТехноДок значение токена авторизации не изменяли, то редактировать панельtechnodoc.pnlне требуется. - Данная опция позволит выполнять вход пользователей КАСКАД в ТехноДок из панели
technodoc.pnl. - Если пользователь входит впервые, то в ТехноДок для него будет создана учетная запись.
- При входе происходит синхронизация Групп прав КАСКАД и Ролей ТехноДок. Для каждой Группы прав создается Роль и назначается пользователю. Например, если в КАСКАД есть пользователь Иванов Иван с логином ivanov и группами прав
ОператорыиИнженеры, то при открытии панелиtechnodoc.pnlбудет создана соответствующая учетная запись и ролиОператорыиИнженеры(если такие роли не были созданы ранее). - Администратор системы может назначить необходимые права для существующих и новых ролей.
- В поле
- Перезапустить проект КАСКАД.
- Если при запуске ТехноДок при помощи виджета 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. Для настройки взаимодействия ТехноДок и КАСКАД необходимо выполнить следующие действия:
- Настроить кластер БД ТехноДок.
- Настроить кластер ТехноДок.
- Добавить и настроить скрипты взаимодействия КАСКАД с ТехноДок в проекте КАСКАД в настроенный резервируемый проект.
- Добавить в ТехноДок внешнее соединение с настройками подключения для каждой из пар проекта КАСКАД.
- Добавить и настроить в проекте КАСКАД панель отображения ТехноДок с автоматическим выбором основного сервера.
Настройка реплицируемой БД ТехноДок
ТехноДок может использовать одну из следующих СУБД для создания реплициров анной БД:
После выполнения настройки резервирования БД необходимо на каждом из серверов ТехноДок задать следующие настройки подключения:
- Открыть файл
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.
Альтернативный вариант задать строку подключения к БД, в которой будут сразу указаны все сервера для подключения и приоритетная БД для подключения, за выбор БД для подключения будет отвечать драйвер, для этого:
- Открыть файл
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драйвер автоматически будет искать и подключаться к главной БД без необходимости явного указанию второй строки соединения.
При выборе в качестве опции резервирования группы доступности 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. Для настройки коммуникации между ТехноДок выполните следующие действия на каждом узле из резервированной пары (подробнее об интеграции смотрите КАСКАД):
- Скопируйте в проект КАСКАД CONTROL скрипты из папки
components/kaskad/scriptsустановленного экземпляра ТехноДок. - В скрипте
technodoc.ctlпри необходимости измените порт, изменив значение переменнойTECHNODOC_XMLRPC_HTTP_PORT(по умолчанию используется 8242). - Добавьте новый менеджер сценариев, указав в опциях запуска скрипт
technodoc.ctl. - Запустите добавленный менеджер. В консоли проекта должна появиться запись
XMLRPC-сервер запущен на порту ХХХХ.
Далее необходимо добавить в ТехноДок внешнее соединение:
- Перейти в пункт меню
Внешние соединения. - Добавить источник данных КАСКАД и указать 2 опции подключения с адресами до каждой резервной пары серверов КАСКАД -
kaskad.server1иkaskad.server2(подробнее о настройке данного источника данных см. Настройки источника КАСКАД).
Строки подключения можно указать в любом порядке, ТехноДок выполнит подключение к первому доступному источнику, а КАСКАД автоматически перенаправит запрос к основному серверу.
Настройка панели КАСКА Д при работе ТехноДок в кластере
Для настройки подключения панели к основному экземпляру ТехноДок в кластере необходимо выполнить следующие действия:
- В проекте КАСКАД открыть скрипт на каждом из серверов открыть
scripts\libs\Technodoc\Core\technodocServerSettings.ctl. - Для переменной
TECHNODOC_CLUSTER_URLSзадать в виде строк список адресов (URL) экземпляров ТехноДок в кластере.
// Массив адресов серверов ТехноДок
dyn_string TECHNODOC_CLUSTER_URLS = makeDynString("http://reports.server1", "http://reports.server2");
- Если проект был запущен, то перезагрузить проект.
Теперь, при открытии панели, будет выполняться поиск и подключение к основному экземпляру ТехноДок.