Загружать сбалансированные сайты на IIS 7 - PullRequest
3 голосов
/ 22 апреля 2009

Рассматривая реализацию балансировки нагрузки для веб-сайтов под управлением Windows в IIS, но хочу знать о проблемах, связанных с этим. Веб-сайт ASP.NET - со смесью пользовательской аутентификации и ASP.NET Authentication. Например:

  • Файлы: хранить на сетевом ресурсе очевидный выбор, но я ожидаю, что это вызовет большую нагрузку на файловый сервер, замедляя работу веб-сайтов и, возможно, приводя к проблеме «достигнут лимит команды BIOS в сети» или замедляется другой трафик данных
  • Состояние сеанса: лучше всего хранить в базе данных SQL, чтобы избежать проблем, когда ответы приходят с другого сервера? Как это сделать? Я полагаю, настройки web.config?
  • Время простоя сервера: когда сервер выходит из строя (сбой, сбой оборудования и т. Д.) Или обновляется, будут ли работать веб-сайты?
  • DNS: поскольку он сбалансирован по нагрузке, я предполагаю, что сайтам понадобятся два IP-адреса? Использование Microsoft DNS

Что касается файлов, могут ли они быть легко синхронизированы между серверами? Там может быть до 8 МБ файлов (иногда больше). DFS - это вариант, который может быть рассмотрен в будущем, но есть ли другие технологии (кроме robocopy), которые можно использовать?

1 Ответ

2 голосов
/ 23 апреля 2009
  • Файлы: указание на общий сетевой ресурс решает некоторые проблемы и вводит другие, например, единую точку отказа. Кластеризация файлового ресурса немного смягчает это, но у вас все еще есть одна копия данных. Я предпочитаю подход с общим доступом, при котором контент является локальным для каждого веб-сервера, исключая SPOF и удаляя сеть из уравнения при обслуживании контента. В настоящее время я использую для этого robocopy, а не DFS - не нравится привязка AD, ограничения на размещение серверов в инфраструктуре зонированной сети. Робокопия тоже не идеальна.

  • Состояние сеанса - согласен, база данных ASPState SQL. Убедитесь, что вы установили общий webkey в своем файле web.config для всех ваших серверов, хотя я об этом и думаю.

Капля <sessionState allowCustomSqlDatabase="true" cookieName="yourcookiname" mode="SQLServer" cookieless="false" sqlConnectionString="connnstringname" sqlCommandTimeout="10" timeout="30"/>

и <connectionStrings> <add name="connstringname" connectionString="Data Source=sqlservername;Initial Catalog=DTLAspState;Persist Security Info=True;User ID=userid;Password=password" providerName="System.Data.SqlClient"/> </connectionStrings>

в web.config. наконец, беги C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regsql.exe -S sqlservername -E -ssadd -sstype p

  • Время простоя сервера - веб-сайт все еще будет функционировать, когда отдельный сервер выйдет из строя. Конечно, это зависит от вашего веб-сервера - убедитесь, что он не использует «ping» в качестве единственного показателя, чтобы определить, следует ли отправлять запросы на этот веб-сервер.
  • DNS - одиночная запись. Жаль, что HTTP не знает о записи SRV.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...