Руководтсво администратора/разработчика

Документация

Интегрированная среда разработки Buildbox

Компоненты/сервисы

Прокси-сервис

Сервис, который согласует работу всех запущенных сервисов и приложений на сервере.

Прокси-сервис используется только в корневом сервисе, который имеет соответствующие настройки.

Прокси-сервис опрашивает все запущенные дочерние сервисы (BBCore-s) и веб-приложения (BBApp-s) и составляет карту соответствия адресов и портов.

Напомним: Каждый сервис функционирует на отдельном порту и является самостоятельным и независимым сервисом.

Взаимодействие сервисов с прокси возможно в ручном и автоматическом режиме.

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

В автоматическом режиме назначения порта клиентский сервис делает запрос на прокси-сервис с просьбой зарезервировать порт из указанного диапазона (диапазон передается в качестве параметра запроса). Данный диапазон указан по-умолчанию при автоматически при создании сервиса и настраивается администратором.

Хосты и диапазоны указанные в настройках прокси-сервера и которые постоянно сканирует прокси-сервис, должно соответствовать диапазону, из которого запрашивается порт клиентского сервиса.

Если один прокси-сервис обслуживает несколько хостов, то клиентский сервис одного хоста, должен запрашивать резервирование порта из диапазона портов, указанных для данного хоста.

Например:

Настройка прокси-сервиса на опрос двух хостов

[
      {"host":"host1.buildbox.app","portfrom":8100,"portto":8200,"protocol":"http"},
      {"host":"host1.buildbox.app","portfrom":8300,"portto":8500,"protocol":"http"}
]

Здесь настроен один из сервисов в режиме прокси-сервиса, он будет принимать на порту 8080 входящие запросы и обходить порты хостов host1.buildbox.app и host2.buildbox.app на придмет определения работающих на них клиентских сервисов.

Настройка клиентского сервиса

Здесь показано, чо сервис использует автоматическое определения рабочего порта из интервала портов 8100-8200. Запрашивать резервирование порта сервис будет у сервиса buildbox (local) proxy.

 

Резервирование порта

При запуске клиентского сервиса в режиме автоматического назначения портов

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

Для этих целей существует механизм резервирование порта на прокси-сервисе в момент старта клиентского сервиса.

Перед стартом сервис отправляет запрос на резервирвоание порта, отправив запрос с указанием того диапазона портов, из которых он готов получить порт.

Прокси-сервис получив запрос на резервирование:

  1. Составляет карту занятых портов на всех опрашиваемых им хостах
  2. Циклически обходит переданный диапазон и проверяет на отсутствие порта в списке занятых портов другими сервисами.
  3. Если порт свободен, заносит в список блокировки с указанием времени снятия блокировки с порта (по-умолчанию 2 минуты)
  4. Если в течение этого интервала клиентский сервис поднялся, прокси успеет его опросить и добавить информацию о новом сервисе в карту портов сервисов, в противном случае данный порт будет отдан другому клиентскому сервису при запросе на резервирование порта.

Внимание! Если на разных хостах используется один и тот же диапазон портов, то при резервировании порт будет занят единожды, т.е. выделен один раз одному из сервисов на хостовой машине и как следствие на другом хосту этот порт использован быть не может (только при ручном назначение)

Настройка

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

При настройке сервера необходимо указать:

  • порт (например: 80) -  порт, на котором ваш сервер будет принимать запросы пользователей и на который может быть настроен внешний прокси-сервер (при необходимости)
  • конфигурации серверов - json-документ, в котором указан список сереров, на которых происходит опрос портов для построения карты.