2009-05-20 1 views
4

В настоящее время у нас есть веб-приложение ASP.NET, работающее на одном сервере. Этот сервер собирается попасть в опасную зону, касающуюся использования ЦП, и мы хотим развернуть второй сервер.Резервное копирование состояния сеанса связи

Что было бы лучшим способом обработки состояния сеанса?

В настоящее время мы запускаем InProc. Но это не вариант с серверами 2+, так как мы иногда хотим исключить один сервер из WLB, чтобы выполнять работу по техническому обслуживанию. Несмотря на то, что мы используем липкую балансировку нагрузки, нам придется ждать выхода всех пользователей, прежде чем мы сможем исключить сервер из вращения WLB.

Так что я смотрел на этой странице MSDN: http://msdn.microsoft.com/en-us/library/ms178586(VS.80).aspx

Я предполагаю, что мой главный вопрос заключается в: Если мы будем использовать режим состояния сервера. Можем ли мы обеспечить rendudancy, развернув государственный сервер на двух серверах? Чтобы избежать возникновения одной точки отказа.

ответ

1

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

+0

Опишите memcached? – MartinHN

+0

Мартин сожалеет, что я имел в виду memcachedDB, хотя вы можете получить memcached для репликации, это непросто - читайте об этом здесь: http://memcachedb.org. Вам нужно будет проверить, работает ли с ним сервер memcached (он должен) - http://www.codeplex.com/memcachedproviders. – RichardOD

+0

Ох. Это выглядит «используемым на вашей собственной ответственности - мы не предоставляем поддержки и не гарантируем ничего». – MartinHN

0

Используйте сервер Scale Out State (быстрее) или SQL State (медленнее проще). Но будьте осторожны, если вы не сохраните никаких сериализуемых объектов в состояние сеанса, потому что после миграции вы получите исключения.

+2

Также имейте в виду, что Session_End в Global.asax не запускается на государственном сервере, что приведет к нарушению функциональности, если вы подключились к этому событию при использовании inProc. – RichardOD

0

Sql State server будет лучшим вариантом: эта ссылка может помочь Sql State Server . Я не верю, что вы можете запускать государственный сервер на нескольких компьютерах.

0

Возможно, вы захотите изучить скорость проекта (http://msdn.microsoft.com/en-us/data/cc655792.aspx). Теперь он имеет ограниченную поддержку, потому что он находится на CTP3, но в конце этого года он будет RTM. Я настоятельно рекомендую вам посмотреть сессию MIX09 об этом here

0

Я хотел бы предложить, глядя в p2p состояние сеанса сервера - ссылка здесь: http://www.codeproject.com/KB/aspnet/p2pstateserver.aspx

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