балансировка нагрузки на HTTP-серверах ковбоя

как вы балансируете нагрузку на идентичные ковбойские http-серверы в одном кластере, учитывая, что у них одинаковые слушатели, которые прослушивают один и тот же порт для запросов? Я не думаю, что обычный циклический подход для балансировки нагрузки будет работать в этом сценарии, поскольку слушатели для каждого сервера всегда активны при запуске сервера. Что мне здесь не хватает?


person dnldd    schedule 15.04.2014    source источник
comment
Чем это отличается от балансировки нагрузки любого другого HTTP-сервера?   -  person kjw0188    schedule 16.04.2014
comment
Я не знаю, как выполняется балансировка нагрузки для других http-серверов. Все, что я обнаружил, это то, что для балансировки нагрузки запросы могут направляться на разные серверы в пуле. Извлекается идентификатор Pid и вызывается соответствующий обработчик. Я пытаюсь понять, как это можно сделать для ковбойских http-серверов, поскольку они прослушивают порты для запросов.   -  person dnldd    schedule 16.04.2014


Ответы (1)


Я думаю, вам не хватает того, что Cowboy не регистрирует своих слушателей глобально в кластере, он только регистрирует их локально. Запросы, отправленные на node1, обрабатываются обработчиками, запущенными на node1. Cowboy не создает автоматически кластер серверов на каждом из ваших подключенных узлов. Сервер Cowboy должен быть запущен на каждом из ваших узлов, и они будут работать независимо друг от друга.

Лучший способ управлять балансировкой нагрузки - использовать обратный прокси-сервер, такой как Nginx, и перенаправлять запросы через ваш кластер.

Если вам нужны «липкие сеансы», которые направляют запросы к глобально зарегистрированным процессам, вам следует выполнить поиск (с помощью global:whereis_name/1) из обработчика Cowboy и оттуда направить сообщение через кластер.

person lastcanal    schedule 20.07.2014