У меня есть балансировщик нагрузки, который распределяет трафик на 1 из 5 веб-узлов. Есть ли простой способ узнать, к какому веб-узлу я обращаюсь, когда он предоставляет мне контент? Например, где я могу реализовать заголовок в Apache? Добавить скрытый элемент HTML на каждую страницу?
Бонусные баллы: что люди делают, чтобы заставить себя подключиться к одному конкретному веб-узлу?
Есть несколько способов решить эту проблему. Мне больше всего нравится, в основном потому, что это просто, - это установить HTTP-заголовок, специфичный для каждого сервера в конфигурации apache, который просто содержит имя хоста. Вы можете использовать произвольную строку, если не хотите раскрывать основные имена хостов.
# On host1
Header set ServerID host1
# On host2
Header set ServerID host2
# etc.
Затем вы можете увидеть соответствующий HTTP-заголовок в ответе на запрос.
Что касается принуждение к конкретному узлу, это зависит от деталей того, как вы балансируете нагрузку на серверы.
Если вы запускаете приложение без сохранения состояния, а балансировщик нагрузки просто отправляет запросы в циклическом режиме или каким-то случайным образом, вы мало что можете сделать, чтобы заставить себя перейти к конкретному базовому узлу (кроме, возможно, выключения всех другие узлы).
Однако, если ваши балансировщики нагрузки выполняют какую-либо форму вставки файлов cookie (или аналогичных) для обеспечения закрепленных сеансов, вы обычно можете настроить запрос, который позволит вам принудительно перейти к конкретному базовому узлу, но многое зависит от используемый метод.