Балансировка нагрузки экземпляров Windows Azure локально

При развертывании нескольких экземпляров WebRole в Windows Azure Emulatorэмулятор запускает несколько экземпляров IIS Express WebRole, каждый из которых имеет зарезервированный локальный IP-адрес, например:

 127.255.0.1
 127.255.0.2
 127.255.0.3

Проблема в том, что я хочу получить доступ к WebRole, как если бы он был действительно развернут в Azure, мне нужно проверить, что Session State сохраняется между экземплярами.

Так как мой Session Id хранится в cookie, каждый раз, когда я подключаюсь к другому экземпляру, мне нужно вручную "вставить" cookie в запрос для проверки данных сеанса (поскольку браузер рассматривает IP следующего экземпляра как другой домен).

Есть ли способ, которым я могу использовать hostname (на компьютере с Windows 7), который случайно указывает на один из этих IP?

1 ответ

Решение

Ну, по-видимому, эмулятор выполняет балансировку нагрузки для всех запросов между экземплярами:

Нажатие "Отладка" в облачном проекте откроет веб-страницу с IP-адресом, который является виртуальным балансировщиком нагрузки (обычно 127.0.0.1:80, если он еще не занят).

Тем не менее, во-первых, меня ввели в заблуждение две вещи:

  • 1. Список нескольких экземпляров IIS Express, каждый из которых имеет свою привязку (изображение прилагается).

введите описание изображения здесь

  • 2. Неявная близость:

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

Заключение:

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

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

Другие вопросы по тегам