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

Высокая доступность

Резервирование сервера приложений

Описание

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

  • Для каждого экземпляра сервера приложений необходимо указать его приоритет Cluster:Priority и адреса других серверов ТехноДок Cluster:ServersAddresses в файле application.conf.
  • В Системе может быть только один ведущий сервер и неограниченное количество ведомых серверов приложений.

Кластер серверов приложений

Кластер серверов приложений

  • Сервера приложений ТехноДок запускают процесс голосования и назначают серверу с наибольшим приоритетом роль ведущий, остальным серверам назначается роль ведомый.
    • Частота голосования определяется настройкой Cluster:PollingRate в файле application.conf. Значение по умолчанию - 1 минута.
    • Если в процессе голосования сервер меняет роль с ведомого на ведущего, то происходит повышение приоритета сервера на значение, равное количеству секунд, прошедших с 1 января 1970 года.
    • После того, как ведомый сервер стал ведущим, обратного переключения не произойдет до тех пор, пока новый ведущий сервер корректно функционирует.

Выбор нового ведущего сервера приложений

Выбор нового ведущего сервера приложений

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

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

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

  • Сервер приложений в роли ведущий использует настройки application.conf из основной секции настроек.
  • Сервер приложений в ведомый использует настройки application.conf из секции Standby.
    • Предполагается, что большая часть периодических задач (создание отчетов по расписанию, пересчет отчетов, отправка по почте и т.д.) будут работать только на основном сервере, на резервном сервере они будут простаивать.
    • Чтобы указать, что определенная настройка должна примениться только для ведомого сервера, необходимо перед настройкой добавить префикс Standby. Например, для отключения всех периодических задач, необходимо в файле application.conf в секции [Standby:JobScheduler] раскомментировать строку IsEnabled=false.
  • Клиентское приложений ТехноДок может отправлять запросы на чтение как ведущему серверу, так и ведомому.
    • В зависимости от настройки Cluster:RequestHandleType в application.conf будет выбрана одна из стратегий обработки запросов на сервере с ролью ведомый:
      • Cluster:RequestHandleType=Forbid - для запросов на изменение данных (POST, PUT, DELETE) будет возвращена ошибка 405 Method Not Allowed.
      • Cluster:RequestHandleType=RedirectToPrimary - запросы на изменение данных будут перенаправлены на ведущий сервер.
      • Режим Cluster:RequestHandleType=RedirectToPrimary гарантированно поддерживается в панели Каскад. В других браузерах могут быть установлены политики безопасности, которые в настоящий момент не позволяют корректно выполнять перенаправление запросов.

Настройка

Для примера рассмотрим схему, состоящую из 2-х серверов reports.server1 (ведущий) и reports.server1 (ведомый).

Пример кластера из 2-х серверов

Пример кластера из 2-х серверов

Действия выполняемые на хосте 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
  • После завершения настроек выше, надо перезагрузить оба сервера приложений ТехноДок.