Пуленепробиваемые сеансы для IIS Web Farm - PullRequest
5 голосов
/ 07 апреля 2009

Добрый день, все.

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

В настоящее время мы исследуем три различных метода.

  1. Использовать государственный сервер
  2. Используйте сервер SQL
  3. Забрось все на скрытые поля

Лично я хотел бы, чтобы вариант номер один вступил в действие, поскольку у нас нет выделенной базы данных для варианта номер два, а вариант номер три выглядит грязным хаком.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мой менеджер недоволен единой точкой отказа, обеспечиваемой сервером состояний (наш SQL-сервер реплицируется, поэтому проблем нет).

Можно ли что-то сделать для репликации сервера состояний или чего-то подобного?

Ответы [ 5 ]

3 голосов
/ 08 апреля 2009

Это может быть больно, но я решил выключить сессию и разобраться с последствиями. Пока ничего непреодолимого не придумано.

2 голосов
/ 08 апреля 2009

После еще одного исследования мы решили использовать опцию StateServer. Мы все еще ищем, как преодолеть единственную точку отказа на StateServer, и мы открыли еще два пути расследования.

Наш первый вариант - использовать стороннюю программу для обработки сессий. Тот, на который мы сейчас смотрим, называется nCache : я думаю, что есть еще один, называемый ScaleOut, на который мы также можем взглянуть.

Вариант номер два - использовать разделение состояния сеанса, и в данный момент мы также рассматриваем этот параметр: http://msdn.microsoft.com/en-gb/magazine/cc163730.aspx

1 голос
/ 08 апреля 2009

Я думаю, что вы переходите на другую архитектуру: более одного Front IIS.

Собираетесь ли вы использовать NLB?

  • Если это так, то лучше всего использовать сервер состояний, который в принципе будет играть роль сервера приложений.

Здесь, в моей компании, мы переносим приложение .NET на два IIS с балансировкой сетевой нагрузки, и приложения используют для управления сеансом в proc.

Мы исследовали, что была другая альтернатива:

  • с использованием привязки клиента в конфигурации NLB, позволяющей обратной передаче вернуться к IIS, где был создан процесс, цена должна была потерять весь NLB ...

После консультации с Microsoft лучшим вариантом был State Server:)

Надеюсь, это поможет!

С наилучшими пожеланиями!

1 голос
/ 07 апреля 2009

Насколько мне известно, невозможно создать резервную копию или реплицировать вашу службу StateServer. Другая проблема при использовании StateServer в веб-ферме состоит в том, что если ваш кластер позволяет одному и тому же браузеру обращаться к разным машинам по разным запросам, они могут иметь разные данные сеанса для каждого запроса! (править: Мартин указал ниже, что вы можете исправить это, поделившись одним экземпляром StateServer между несколькими веб-серверами). Для ваших целей вариант 2 или 3 будет более отказоустойчивым, и я добавлю другую идею: для небольших фрагментов данных попробуйте использовать файлы cookie для хранения сеансов.

0 голосов
/ 08 апреля 2009

Также убедитесь, что вы не используете SQL Server для хранения состояния сеанса, которое все равно приходит из базы данных. Если это так, вы можете просто вызывать базу данных каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...