Перейти к содержанию

Настройка проекта

В качестве примера настройки работы серверов в кластере рассмотрим три возможных варианта конфигурации:

  • 1 + 1 (основной + резервный) с общей базой данных для обоих.
  • 1 + 1 (основной + резервный) с индивидуальной базой данных для каждого сервера в кластере.
  • 1 + N (основной + N резервных).

Общая база данных

Пример конфигурации с общей базой данных:

flowchart LR
    subgraph CLUSTER[<B>SCADA-кластер</B>]
    direction TD    
        S1(Основной сервер <br>IP-адрес: 10.0.0.10</br>)
        S2(Резервный сервер <br>IP-адрес: 10.0.0.20</br>)
        S1 <---> S2
        style S1 fill:#e5f9ed,stroke-width:1px
        style S2 fill:#e5f9ed,stroke-width:1px,color:#fff
        style CLUSTER fill:#ffffff,stroke-dasharray: 10 10
    end

    AR[(Сервер БД <br>IP-адрес: 10.0.0.30</br>)]

    S1 ---> AR
    S2 ---> AR

Сначала настроим параметры связи с общей базой в проекте. Предположим, это СУБД PostgreSQL, которая работает на узле с IP-адресом 10.0.0.30.

Информация

Создание новой базы данных PostgreSQL рассматривается в соотвествующем разделе документации.

Чтобы настроить работу SCADA-кластера, откройте меню "Резервирование" проекта и выполните следующие действия:

  1. Включите флаг "Статус" для активации резервирования в проекте.
  2. Укажите IP-адрес основного сервера кластера 10.0.0.10.
  3. Добавьте резервный сервер и укажите для него IP-адрес 10.0.0.20.
  4. Выберите базу данных, настроенную на предыдущем шаге, в поле "База данных".

Далее следует настроить синхронизацию значений для активных тегов проекта. Это делается с помощью флага синхронизации в свойствах тега.

Включение этого флага позволит резервному серверу подписаться и получать обновления тегов, чтобы он обладал актуальным значением в дежурном режиме. Если данный флаг для тега не установлен, его значение не синхронизируется. Актуальное значение появится на резервном сервере только после запуска на нём драйвера опроса устройств. Таким образом, в случае аварии, часть значений может быть утеряна. Также этот флаг влияет на синхронизацию значения в базе данных: после простоя основной сервер выполнит запрос к резервному для получения актуальных значений тегов за период своего бездействия.

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

  1. Основной сервер с IP-адресом 10.0.0.10.
  2. Резервный сервер с IP-адресом 10.0.0.20.

Сначала сделайте активным профиль основного сервера и разверните проект.

Для развертывания на резервном сервере сделайте его профиль активным, а затем также нажмите кнопку "Развернуть".

Для проверки ротации принудительно отключите основной сервер в "Менеджере служб". Резервный сервер запустит опрос драйвера и продолжит выполнение развернутого проекта. После восстановления связи с основным сервером резервный автоматически передаст управление ему.

Индивидуальная база данных

Пример конфигурации с индивидуальной базой данных для каждого сервера в кластере:

flowchart LR
    subgraph CLUSTER[<B>SCADA-кластер</B>]
    direction TD    
        S1(Основной сервер <br>IP-адрес: 10.0.0.10</br>)
        S2(Резервный сервер <br>IP-адрес: 10.0.0.20</br>)
        S1 <---> S2
        style S1 fill:#e5f9ed,stroke-width:1px
        style S2 fill:#e5f9ed,stroke-width:1px,color:#fff
        style CLUSTER fill:#ffffff,stroke-dasharray: 10 10
    end

    AR1[(Сервер БД <br>IP-адрес: 10.0.0.30</br>)]
    AR2[(Сервер БД <br>IP-адрес: 10.0.0.40</br>)]

    S1 ---> AR1
    S2 ---> AR2

Настройте доступ к базе данных основного сервера (10.0.0.30) и к резервному узлу кластера (10.0.0.20), выполнив действия из предыдущего шага. Чтобы подключить базу данных резервного сервера (10.0.0.40), нажмите кнопку ... в поле "База данных".

Откроется окно "Настройка баз данных". Добавьте в нем новый узел с IP-адресом базы данных резервного сервера 10.0.0.40.

Настройте синхронизацию значений для активных тегов проекта. Это делается с помощью флага синхронизации в свойствах тега.

Включение этого флага позволит резервному серверу подписаться и получать обновления тегов, чтобы он обладал самым актуальным значением в дежурном режиме. Если данный флаг для тега не установлен, его значение не синхронизируется. Актуальное значение появится на резервном сервере только после запуска на нём драйвера опроса устройств. Таким образом, в случае аварии, часть значений может быть утеряна. Также этот флаг влияет на синхронизацию значения в базе данных: после простоя основной сервер выполнит запрос к резервному для получения актуальных значений тегов за период своего бездействия.

Далее разверните проект сначала на основном сервере, затем на резервном.

Для проверки ротации принудительно отключите основной сервер в "Менеджере служб". Резервный сервер запустит опрос драйвера и продолжит выполнение развернутого проекта. После восстановления связи с основным сервером резервный автоматически передаст управление ему.

Несколько резервных серверов

Если в конфигурации проекта указано несколько резервных серверов, переключение выполняется по правилам очереди: сначала управление передается серверу с порядковым номером 1 в списке, если он не отвечает — серверу 2, затем 3 и так далее.

Внимание

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