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

Резервирование сервера приложений + резервированный проект КАСКАД/АСОКУ

В данном разделе описана конфигурация, состоящая из 2 резервированных серверов ПО «ТехноДок» и КАСКАЛ/АСОКУ (рисунок 1). Для примера будем использовать следующие адреса:

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

Схема взаимодействия ПО «ТехноДок» и КАСКАД/АСОКУ

Рисунок 1 – Схема взаимодействия ПО «ТехноДок» и КАСКАД/АСОКУ

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

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

Настройка кластера БД ПО «ТехноДок»

В качестве резервируемой БД в ПО «ТехноДок» могут выступать следующие СУБД:

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

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

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

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

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

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

Настройка кластера ПО «ТехноДок».

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

  • Открыть файл technodoc.settings.ini на хосте reports.server1.
  • В секции [Cluster] указать настройке Priority значение равное 1, что сделает данный сервер основным, так как это будет максимальный приоритет среди серверов в данной конфигурации (можно указать любое число, которое будет больше чем на резервном сервере).
  • В секции [Cluster] задать для настройки ServersAddresses:0 значение равное http://reports.server2. Данная настройка задает адрес второго сервера для его опроса и определения состояния сервера.
  • В результате настройки в секции [Cluster] на хосте reports.server1 будут выглядеть следующим образом:
[Cluster]
Priority = 1 # Приоритет текущего сервера. Сервер с наивысшим приоритетом является основным
ServersAddresses:0 = http://reports.server2 # Адреса серверов в кластере в формате [http|https]://[IP|доменное имя]:[порт]

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

  • Открыть файл technodoc.settings.ini на хосте reports.server1.
  • Отключить задачи для режима резервного сервера: UploadReportValuesJob, ProcessReportsCreationRulesJob, ProcessReportsRulesJob, CalculateOperationTimeJob, SendMailsJob и DeleteMailsJob. Для этого необходимо добавить в конфигурацию для каждой задачи секцию конфигурирования с префиксом Standby и указать значение настройки IsEnabled равным False:
# Список допустимых названий задач:
[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:

  • Открыть файл technodoc.settings.ini на хосте reports.server2.
  • В секции [Cluster] указать настройке Priority значение равное 0, что сделает данный сервер резервным, так как это будет минимальный приоритет среди серверов в данной конфигурации (можно указать любое число, которое будет меньше чем на основном сервере).
  • В секции [Cluster] задать для настройки ServersAddresses:0 значение равное http://reports.server1. Данная настройка задает адрес второго сервера для его опроса и определения состояния сервера.
  • В результате настройки в секции [Cluster] на хосте reports.server2 будут выглядеть следующим образом:
[Cluster]
Priority = 0 # Приоритет текущего сервера. Сервер с наивысшим приоритетом является основным
ServersAddresses:0 = http://reports.server1 # Адреса серверов в кластере в формате [http|https]://[IP|доменное имя]:[порт]

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

  • Открыть файл technodoc.settings.ini на хосте reports.server2.
  • Отключить задачи для режима резервного сервера: UploadReportValuesJob, ProcessReportsCreationRulesJob, ProcessReportsRulesJob, CalculateOperationTimeJob, SendMailsJob и DeleteMailsJob. Для этого необходимо добавить для каждой задачи секции конфигурирования с префиксом Standby и указать значение настройки IsEnabled равным False:
# Список допустимых названий задач:
[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 # Включена ли задача

После всех манипуляций необходимо перезагрузить ПО «ТехноДок». В случае выполнения аварийного переключения пользователь будет видеть информационное окно (рисунок 2). Чтобы убрать данное окно необходимо удалить файл .failover в папке data приложения.

Информационное окно о возникшем аварийном переключении

Рисунок 2 – Информационное окно о возникшем аварийном переключении

Настройка обмена данными ПО «ТехноДок» и КАСКАД/АСОКУ

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

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

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

Рисунок 2 – Запуск скрипта взаимодействия ПО «ТехноДок» и КАСКАД/АСОКУ

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

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

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

Рисунок 3 – Настройка внешнего соединения с источником данных КАСКАД/АСОКУ

Замечание

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

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

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

  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. Если проект был запущен, то перезагрузить проект.

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