Особенности настройки кластера Web-клиент

С целью повышения отказоустойчивости и распределения нагрузки, администратор может объединить несколько экземпляров модуля Web-клиент в кластер.

Обязательные условия для работы кластера

  • Каждый экземпляр Web-клиента должен иметь уникальный адрес подключения.

  • Балансировщик нагрузки должен передавать заголовок X-Forwarded-Proto.

Подготовка узлов кластера

Чтобы подготовить узлы кластера Web-клиента к работе:
  1. Установите и настройте модуль Web-клиент на первом компьютере кластера Linux.

  2. Установите и настройте Web-клиент на последующих узлах кластера Linux.

  3. Настройте балансировщик нагрузки.

Сгенерируйте отпечаток

  1. Если Web-клиент использует HTTPS, создайте сертификат с помощью OpenSSL. Пример использования утилиты приведён в разделе администрирования модуля Консоль управления Docsvision: "Создание доверенного сертификата для подключения к БД".

  2. Установите и настройте Web-клиент на втором компьютере кластера (далее — УЗЕЛ 2).

    Экземпляр Web-клиента, установленный на втором и последующих узлах кластера, должен быть настроен на работу с теми же сервером и базой данных Docsvision, что и УЗЕЛ 1.
  3. В конфигурационном файле /usr/lib/docsvision/webclient/appsettings.json на УЗЛЕ 1 укажите путь к полученному сертификату в элементе "Https": ("Http":, если используется незащищённое соединение). Фрагмент конфигурационного файла приведён ниже:

    {
    "Https": {
      "Url": "https://*:5005",
      "Certificate": {
        "Path": "/home/user/certificate.pfx", (1)
        "Password": "password" (2)
        }
      }
    }
    1 Путь к сертификату
    2 Пароль от сертификата
  4. Сгенерируйте сертификат на втором узле.

  5. Откройте конфигурационный файл /usr/lib/docsvision/webclient/appsettings.json на УЗЛЕ 2 и укажите путь к полученному сертификату.

  6. Повторите шаги инструкции для третьего и последующих узлов кластера Web-клиента.

Настройка nginx

При использовании прокси-сервиса nginx, установленного на отдельной машине от Web-клиента необходимо в корень конфигурационного файла Web-клиент добавить настройку ForwardedHeaders/KnownProxies, разрешающую принимать от прокси-сервиса заголовки. Если Web-клиент и прокси установлены на одном ПК, ничего добавлять не нужно.

{
  "ForwardedHeaders":
  {
    "KnownProxies": {
      "proxy1": "{123.456.789}" (1)
    }
  }
}
1 Укажите IP адрес сервера nginx. Вместо proxy1 можно использовать любое уникальное название. В значении параметра указывается только IP адрес. При необходимости можно указывать несколько прокси-сервисов.

На стороне прокси-сервиса должна быть настроена передача заголовков: X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port (если порт не соответствует схеме), X-Forwarded-For.

Пример для nginx:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;

Если за прокси-сервисом скрыто несколько экземпляров Web-клиента, нужно установить настройку Docsvision/WebClient/SettingGroups/WebClient/ServerR7JwtAccessToWebClientEnable в значение true. Если настройка отсутствует, добавьте её самостоятельно.

Пример конфигурации:
{
  "Docsvision": {
    "WebClient": {
      "SettingGroups": {
        "WebClient": {
          "ServerR7JwtAccessToWebClientEnable": true
        }
      }
    }
  }
}