Назад | Перейти на главную страницу

Как балансировка нагрузки HAProxy пересылает запрос?

Я пытаюсь понять, как работает балансировка нагрузки в HAProxy, чтобы я мог немного спланировать мощность. Итак, какой из них является правильным для балансировки нагрузки HAProxy?

Сценарий A: запрос от клиента был отправлен в HAProxy, Haproxy перенаправил запрос на доступный веб-сервер, который в этом сценарии Webserver1. Веб-сервер1 отвечает на запрос и возвращает запрошенную страницу непосредственно в браузер клиента.

Сценарий B: запрос от клиента был отправлен в HAProxy, Haproxy перенаправил запрос на доступный веб-сервер, который в этом сценарии Webserver2. Webserver2 отвечает на запрос, отправляя страницу обратно в HAProxy, а HAProxy передает запрос обратно в браузер клиента.

Кроме того, может ли эта настройка работать? Сетевой адаптер с выходом в Интернет в HAPRoxy использует общедоступный IP-адрес, тогда как внутренний сетевой адаптер для HAProxy использует частный IP, как и веб-сервер1 и веб-сервер2. Оба они используют частный IP.

Последний вопрос. Какой сценарий балансировки нагрузки поддерживает HAProxy, кроме Round Robin? Я пытаюсь выполнить следующее: когда клиент подключается к webserver1 в первый раз, я хотел бы сохранить это соединение для этого клиента, пока сеанс не истечет или не завершится. Любые предложения о том, как это сделать?

Пожалуйста, порекомендуйте?

Большое спасибо за все ваши советы.

Сценарий B. HAProxy создает TCP-соединение с серверной частью для отправки запроса клиента, серверная часть отвечает на HAProxy, затем HAProxy отправляет запрос клиенту. У клиента никогда не было TCP-соединения с серверной частью, поэтому между ними нет прямой связи.

Кроме того, может ли эта настройка работать? Сетевой адаптер с выходом в Интернет в HAPRoxy использует общедоступный IP-адрес, тогда как внутренний сетевой адаптер для HAProxy использует частный IP, как и веб-сервер1 и веб-сервер2. Оба они используют частный IP.

Да, это может сработать.

Какой сценарий балансировки нагрузки поддерживает HAProxy, кроме Round Robin? Я пытаюсь выполнить следующее: когда клиент подключается к webserver1 в первый раз, я хотел бы сохранить это соединение для этого клиента, пока сеанс не истечет или не завершится. Любые предложения о том, как это сделать?

То, что вы ищете, называется липкими сессиями, см. этот вопрос для примера.