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