Запрос HTTPS всегда отправляется на один и тот же узел в масштабируемом наборе виртуальных машин Azure Service Fabric.

У меня есть служба, работающая в Azure Service Fabric, которая доступна миру с помощью Azure Load Balancer (с общедоступным IP-адресом).

Когда я отправляю 1000 запросов с машины в течение 3 минут, все запросы направляются на один и тот же узел. Я ожидаю, что они будут распределены по всем 5 узлам моего масштабируемого набора виртуальных машин.

Я не устанавливал никаких настроек сохранения сеанса в моем балансировщике нагрузки. В приведенной ниже ссылке на балансировщике нагрузки по умолчанию установлен тайм-аут простоя, равный 4 минутам. Это приводит к тому, что все мои запросы отправляются на один и тот же узел?

https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/


person Raghav    schedule 21.07.2018    source источник


Ответы (1)


В Azure LB всякий раз, когда вы устанавливаете соединение между клиентом и службой, балансировщик нагрузки будет придерживать это соединение, направленное на тот же сервер \ службу. Таймаут простоя покажет, как долго соединение должно оставаться в режиме ожидания, прежде чем оно рассмотрит возможность открытия нового соединения. Новое соединение, скорее всего, перенаправит вас на другой сервер \ службу, и если любой другой доступен, он также может подключиться к тому же самому.

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

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

режим распределения балансировщика нагрузки использует 2 или 5 кортежей, чтобы сохранить эти «липкие» связи. Вы можете проверить, использует ли ваш кортеж из 5 (по умолчанию). В конфигурациях с 5 кортежами LB также будет учитывать порт клиента, когда соединение открыто.

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

Если вы используете несколько клиентов, это не должно быть проблемой, но если эти тесты были получены от нескольких клиентов, вы должны подтвердить, не используют ли они одно и то же соединение повторно.

В точечной сети вам, возможно, придется настроить конфигурации на ServicePoint и ServicePointManager.

Вы также можете взглянуть на это сообщение в блоге: как-исправить-балансировщик нагрузки-not-working-in-round-robin-fashion-for- ваш-облачный-сервис. Он предназначен для облачных сервисов, но использует аналогичный подход.

person Diego Mendes    schedule 21.07.2018