2009-12-07 3 views
1

Какие проблемы мне необходимо знать, когда я развертываю приложение ASP.NET в качестве веб-фермы?ASP.NET В веб-ферме

+0

См. Также: http://serverfault.com/questions/91161/what-are-the-best-practices-in-web-farms –

ответ

8

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

Любой доступ к диску, такой как динамические файлы, хранящиеся пользователями, должен находиться в зоне, доступной для всех серверов. Например, используя некоторую форму хранилища Network Attached. Файлы сценариев, изображения и html и т. Д. Будут только реплицироваться на каждом сервере.

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

Ключи машин на каждом сервере очень большие, как предполагали другие люди. У вас могут также возникнуть проблемы, если вы используете ssl для ip-адреса, а не для домена.

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

+1

Рассмотрите возможность завершения SSL на балансировщике нагрузки, а затем простые HTTP-запросы к отдельным веб-серверам. Балансиры, такие как BigIP F5 или аналогичные, поддерживают это. – devstuff

6

Сеансы являются большими, убедитесь, что вы используете SQL Server для управления сеансами и что все серверы указывают на один и тот же экземпляр SQL Server.

+4

+1, но я бы сказал: 'Государственная информация', чтобы быть более общий; эта область включает в себя данные 'Cache' и' Application' –

+0

+1 и хороший комментарий от Rubens тоже – LorenVS

+0

Это правда да. – Lloyd

5

Один из больших, с которыми я столкнулся, это проблемы с разными машинами, распространяемыми на разных серверах. ASP.NET использует machineKey для различных операций шифрования, таких как ViewState и FormsAuthentication. Если у вас есть разные машинные ключи, вы можете столкнуться с серверами, не понимающими почту с других серверов. Посмотрите здесь, если вы хотите получить дополнительную информацию: http://msdn.microsoft.com/en-us/library/ms998288.aspx

+0

Вот ссылка на инструмент, который будет генерировать ключи для вас. Http://aspnetresources.com/tools/keycreator.aspx – David

3
  1. Не используйте сеансы, а используйте профили. Вы можете настроить кластер SQL для их обслуживания. Сеансы слишком часто запрашивают вашу базу данных сеанса, а профили просто загружают себя, и все.
  2. Использование распределенного хранилища кэширования, как memached для кэширования данных и кэш ASP.Net для вещей вам нужно много
  3. Используйте SAN или EMC служить статический контент
  4. Использование S3 или что-то подобное, чтобы иметь запасной вариант на 3
  5. Есть некоторые достойные loadbalancer, так что вы можете легко обновлять на сервере, без необходимости остановки закрыть сайт
1

HOW TO: Set Up Multi-Server ASP.NET Web Applications and Web Services

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