Проблемы с балансировкой нагрузки веб-приложения .Net с использованием сервера состояний

Проблемы с балансировкой нагрузки веб-приложения .Net с использованием сервера состояний

У нас есть несколько веб-серверов за балансировщиком нагрузки Netscaler. На каждом из серверов (Win2008) размещено приложение ASP.Net (использующее iis 6.1), настроенное на использование центрального сервера, на котором запущена служба .Net StateServer для управления состоянием сеанса.

Когда мы настраиваем балансировщик нагрузки на использование маршрутизации «round robin» или «least busy», веб-приложение регулярно вылетает с ошибкой, указывающей на отсутствие чего-то, что оно ожидало увидеть в состоянии сеанса. Однако это происходит не ВСЕГДА — только на определенных этапах и примерно в 75% попыток.

Когда мы настраиваем балансировщик нагрузки на постоянство сервера (так что пользователь «прилипает» к одному серверу), проблема не возникает. (Но это не желаемый нами режим работы)

Что мы уже проверили/сделали:

  • Перезапусквсе вещи
  • Ключи машины одинаковы на всех серверах.
  • Нет проблем с подключением между веб-серверами и сервером состояния.
  • IIS — это имена сайтов, пути и идентификаторы, которые одинаковы на всех веб-серверах.
  • В журналах приложений не регистрируется никаких ошибок.

Есть ли у кого-нибудь предложения по другим вещам, которые следует проверить/возможным причинам?

NB. У нас точно такая же настройка в другой среде — тот же тип балансировщиков нагрузки, то же веб-приложение, та же конфигурация, та же настройка сервера... и все работает отлично. Единственное отличие — другая версия VMWare Tools, но не видите ли вы в этом причину?

решение1

Месяцы спустя мы обнаружили причину. Некоторые (но не все) серверы были обновлены до более новой версии .Net Framework.

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

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

Связанный контент