Развертывание фермы WebApi за Nginx
Last updated
Was this helpful?
Last updated
Was this helpful?
Развертываем по инструкциям компоненты WebApi, States, Notifications на каждом узле фермы.
Правим конфигурационный файл WebApi (c:\Primo\WebApi\appsettings.ProdWin.json
или c:\Primo\WebApi\appsettings.ProdLinux.json
), где:
RobotDeployment: OrchBaseUrl – url, на который отвечает nginx;
InstanceInfo: Id – уникальный номер для каждого узла:
Правим конфигурационный файл nginx (`/etc/nginx/nginx.conf``````):
Прописываем url узлов фермы (на узлах порты должны быть открыты):
Настраиваем Passive Health Checks: fail_timeout – время, в течение которого должно произойти количество неудачных попыток, чтобы сервер был помечен как недоступный, а также время, в течение которого сервер помечается как недоступный (по умолчанию 10 секунд). max_fails – количество неудачных попыток, которые должны произойти в течение периода fail_timeout, чтобы сервер был помечен как недоступный (по умолчанию – 1 попытка).
Запускаем программу синхронизации папок 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
командой:
Запускаем программу Syncthing командой (потом нужно настроить как службу):
Добавляем папку C:\tmp
(или /srv/samba/shared/tmp
для Linux) в папки синхронизации для текущего устройства:
Добавляем удаленные устройства:
ID устройства можно просмотреть в модальном окне, которое открывается из Главное меню/Действия/Показать ID.
Редактируем удаленные устройства, указывая удаленную папку C:\tmp
(или /srv/samba/shared/tmp
для Linux) на вкладке Предоставление доступа:
Программу Syncthing помещаем в автозагрузку Windows или для Linux запускаем её как службу (файл службы syncthing.service идет в комплекте поставки). Подробнее эти процессы описаны в подразделах ниже.
Убеждаемся, что синхронизация работает: визуально наблюдаем содержимое папки C:\tmp
(или /srv/samba/shared/tmp
для Linux) на разных узлах и результат её проверки WebApi в БД ltools в таблице RobotDistrExistsNodeConfirms:
Если какой-то узел будет выведен из фермы, а запись в RobotDistrExistsNodeConfirms для него останется с Exists=false, то эта запись должна быть удалена из таблицы вручную.
Системное время должно быть синхронизировано на всех узлах.
Создаем bat-файл C:\syncthing_start.bat
со следующими командами*:
*путь зависит от того, куда распакован архив syncthing-windows-amd64-v1.18.2.zip.
Вносим созданный файл в автозагрузку Windows командой:
Добавится значение в системный реестр:
Копируем папку с файлами из комплекта поставки (архив предварительно распаковываем):
Копируем syncthing.service из комплекта постави:
Перезапускаем service:
Ставим в автозагрузку:
Даем права на исполнение syncthing:
Запускаем службу syncthing.service:
Проверяем состояние службы:
Удаленные устройства добавляются при помощи ID устройства: