как вы балансируете нагрузку на идентичные ковбойские http-серверы в одном кластере, учитывая, что у них одинаковые слушатели, которые прослушивают один и тот же порт для запросов? Я не думаю, что обычный циклический подход для балансировки нагрузки будет работать в этом сценарии, поскольку слушатели для каждого сервера всегда активны при запуске сервера. Что мне здесь не хватает?
балансировка нагрузки на HTTP-серверах ковбоя
Ответы (1)
Я думаю, вам не хватает того, что Cowboy не регистрирует своих слушателей глобально в кластере, он только регистрирует их локально. Запросы, отправленные на node1
, обрабатываются обработчиками, запущенными на node1
. Cowboy не создает автоматически кластер серверов на каждом из ваших подключенных узлов. Сервер Cowboy должен быть запущен на каждом из ваших узлов, и они будут работать независимо друг от друга.
Лучший способ управлять балансировкой нагрузки - использовать обратный прокси-сервер, такой как Nginx, и перенаправлять запросы через ваш кластер.
Если вам нужны «липкие сеансы», которые направляют запросы к глобально зарегистрированным процессам, вам следует выполнить поиск (с помощью global:whereis_name/1
) из обработчика Cowboy и оттуда направить сообщение через кластер.