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

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

Резервирование сервера приложений реализовано в виде кластера серверов. Конфигурирование кластера серверов осуществляется посредством указания приоритета каждого сервера (настройка Cluster:Priority) и адреса других серверов (настройка Cluster:ServersAddresses) в файле technodoc.settings.ini.

В Системе в одно и то же время может быть только один основной сервер и неограниченное количество резервных серверов (Рисунок 1). При запуске Системы, сервер запрашивает приоритеты других серверов и, если его приоритет больше приоритета любого другого сервера в кластере, он становится основным, иначе – резервным.

При работе сервера в качестве основного, настройки Системы загружаются из основной секции файла technodoc.settings.json. При работе сервера в качестве резервного сервера настройки Системы загружаются из секции Standby. Предполагается, что большая часть периодических задач (задача по созданию, обновлению, отправке отчетов по почте и др.) будут работать только на основном сервере, на резервном сервере они будут отключены. Таким образом, при работе Системы в качестве кластера серверов, каждый из которых взаимодействует с одной и той же базой данных, целостность данных не будет нарушена. Пользователь может работать с Системой как при помощи основного сервера, так и при помощи резервного. Однако, в случае подключения к резервному серверу все операции, связанные с обновлением данных, будут запрещены.

Кластер серверов

Рисунок 1 – Кластер серверов

Чтобы указать, что определенная настройка должна примениться только в том случае если сервер работает в качестве резервного, необходимо перед ней добавить префикс Standby. Например, для отключения всех периодических задач, в том случае, если сервер работает в качестве резервного, необходимо в конфигурационном файле technodoc.settings.ini, в секции [JobScheduler] раскомментировать строку IsEnabled=false.

В случае отключения основного сервера, другие сервера в кластере определяют, кто возьмет на себя роль нового основного сервера. Определение основного сервера происходит за счет сравнения приоритетов серверов. Сервер с наивысшим значением приоритета из оставшихся становится основным (Рисунок 2). Важно заметить, что в случае аварийного переключения, сервер, который стал основным, повышает свой приоритет на значение, равное количеству секунд, прошедших с 1 января 1970 года. Соответственно, после того, как резервный сервер стал основным, обратного переключения не произойдет до тех пор, пока он корректно функционирует. Определение нового основного сервера будет произведено при следующем расчете статуса всех серверов в кластере. Период расчета статуса сервера задается при помощи настройки PollingRate секции Cluster в файле technodoc.settings.ini.

Переключение приложения с основного сервера на резервный

Рисунок 2 – Переключение приложения с основного сервера на резервный