Skip to Content
Primo RPA OrchestratorСистемным администраторамРазвертывание фермы WebApi за Nginx

Развертывание фермы WebApi за Nginx

  1. Развертываем по инструкциям компоненты WebApi, States, Notifications на каждом узле фермы.
  2. Правим конфигурационный файл WebApi (c:\Primo\WebApi\appsettings.ProdWin.json или c:\Primo\WebApi\appsettings.ProdLinux.json), где:
    RobotDeployment: OrchBaseUrl – url, на который отвечает nginx;
    InstanceInfo: Id – уникальный номер для каждого узла:
    "RobotDeployment": { "OrchBaseUrl": "https://192.168.0.19:44392", "SslCertPassword": "JLWIyl1xZNDVVx8tcVllOg==", "TimeOutInMinutes": 5, "DeployWithTracking": true, "PortMin": 8000, "PortMax": 9000, "OrchPassword": "JLWIyl1xZNDVVx8tcVllOg==" }, "InstanceInfo": { "Id": 0 },
  3. Правим конфигурационный файл nginx (/etc/nginx/nginx.conf):
    • Прописываем url узлов фермы (на узлах порты должны быть открыты):
      alt
    • Настраиваем Passive Health Checks:
      fail_timeout – время, в течение которого должно произойти количество неудачных попыток, чтобы сервер был помечен как недоступный, а также время, в течение которого сервер помечается как недоступный (по умолчанию 10 секунд).
      max_fails – количество неудачных попыток, которые должны произойти в течение периода fail_timeout, чтобы сервер был помечен как недоступный (по умолчанию – 1 попытка).
  4. Запускаем программу синхронизации папок Syncthing (идет в комплекте поставки) и настраиваем через её UI синхронизацию папки C:\tmp* (или /srv/samba/shared/tmp для Linux) на узлах фермы:

* - В зависимости от того, какая папка указана в appsettings.ProdWin.json (appsettings.ProdLinux.json) в секции RobotDistrUpload:TargetFilePath

  • На Windows просто запускаем syncthing.exe (его потом нужно добавить в автозагрузку).

  • На Linux:
    Разархивируем архив в директорию /srv/samba/shared/install/syncthing-linux-amd64-v1.18.2 командой:

    # tar -xvf /srv/samba/shared/install/syncthing-linux-amd64-v1.18.2.tar.gz -C /srv/samba/shared/install/syncthing-linux-amd64-v1.18.2/

    Запускаем программу Syncthing командой (потом нужно настроить как службу):

    # /srv/samba/shared/install/syncthing-linux-amd64-v1.18.2/syncthing
  • Добавляем папку C:\tmp (или /srv/samba/shared/tmp для Linux) в папки синхронизации для текущего устройства:

    alt

  • Добавляем удаленные устройства:

    alt

    Удаленные устройства добавляются при помощи ID устройства:
    alt

    ID устройства можно просмотреть в модальном окне, которое открывается из Главное меню/Действия/Показать ID.

  • Редактируем удаленные устройства, указывая удаленную папку C:\tmp (или /srv/samba/shared/tmp для Linux) на вкладке Предоставление доступа:

    alt

  1. Программу Syncthing помещаем в автозагрузку Windows или для Linux запускаем её как службу (файл службы syncthing.service идет в комплекте поставки). Подробнее эти процессы описаны в подразделах ниже.
  2. Убеждаемся, что синхронизация работает: визуально наблюдаем содержимое папки C:\tmp (или /srv/samba/shared/tmp для Linux) на разных узлах и результат её проверки WebApi в БД ltools в таблице RobotDistrExistsNodeConfirms:

alt

  1. Если какой-то узел будет выведен из фермы, а запись в RobotDistrExistsNodeConfirms для него останется с Exists=false, то эта запись должна быть удалена из таблицы вручную.
  2. Системное время должно быть синхронизировано на всех узлах.

Добавление Syncthing в автозагрузку Windows

Создаем bat-файл C:\syncthing_start.bat со следующими командами*:

* - путь зависит от того, куда распакован архив syncthing-windows-amd64-v1.18.2.zip.

cd C:\Install\syncthing-windows-amd64-v1.18.2\syncthing-windows-amd64-v1.18.2 start syncthing

Вносим созданный файл в автозагрузку Windows командой:

REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v syncthing_start /t REG_SZ /d "C:\syncthing_start.bat"

Добавится значение в системный реестр:

alt

Запуск Syncthing как службы в Linux

Копируем папку с файлами из комплекта поставки (архив предварительно распаковываем):

#cp -R /srv/samba/shared/install/syncthing-linux-amd64-v1.18.2 /opt/Primo/syncthing

Копируем syncthing.service из комплекта поставки:

#cp /srv/samba/shared/install/syncthing.service /etc/systemd/system/syncthing.service

Перезапускаем service:

#systemctl daemon-reload

Ставим в автозагрузку:

#systemctl enable /etc/systemd/system/syncthing.service

Даем права на исполнение syncthing:

#chmod -R 777 /opt/Primo/syncthing/syncthing

Запускаем службу syncthing.service:

#systemctl start syncthing.service

Проверяем состояние службы:

#systemctl status syncthing.service