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

Как узнать, какой веб-узел обслуживает контент?

У меня есть балансировщик нагрузки, который распределяет трафик на 1 из 5 веб-узлов. Есть ли простой способ узнать, к какому веб-узлу я обращаюсь, когда он предоставляет мне контент? Например, где я могу реализовать заголовок в Apache? Добавить скрытый элемент HTML на каждую страницу?

Бонусные баллы: что люди делают, чтобы заставить себя подключиться к одному конкретному веб-узлу?

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

# On host1
Header set ServerID host1
# On host2
Header set ServerID host2
# etc.

Затем вы можете увидеть соответствующий HTTP-заголовок в ответе на запрос.

Что касается принуждение к конкретному узлу, это зависит от деталей того, как вы балансируете нагрузку на серверы.

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

Однако, если ваши балансировщики нагрузки выполняют какую-либо форму вставки файлов cookie (или аналогичных) для обеспечения закрепленных сеансов, вы обычно можете настроить запрос, который позволит вам принудительно перейти к конкретному базовому узлу, но многое зависит от используемый метод.