Назад | Перейти на главную страницу

Балансировка сетевой нагрузки - один и тот же сервер, два сайта

На работе нам пришлось разработать решение, позволяющее выпускать дневные выпуски нашего интрасетевого приложения, сохраняя при этом 100% работоспособность. Это потому, что мы делаем сборки в течение дня с исправлениями высокоприоритетных ошибок, которые должны выйти в тот же день.

Мне предложили вариант использовал балансировку сетевой нагрузки с двумя сайтами на одном сервере, что действительно является отличным решением для наших нужд (мы не можем позволить себе другой сервер с таким же оборудованием, они стоят 5 тысяч фунтов стерлингов + для нашей установки).

Итак, я взглянул на Эта статья где говорится следующее:

Чтобы состояние сеанса поддерживалось на разных веб-серверах веб-фермы, путь приложения веб-сайта (например. \ LM \ W3SVC \ 2) в метабазе IIS должен быть идентичным на всех веб-серверах веб-фермы.

Это проблема, поскольку пути приложений будут иметь быть разным, если один и тот же веб-сайт использует NLB на одном сервере. Мы необходимость чтобы поддерживать состояние сеанса на двух сайтах (в отличие от веб-серверов), в противном случае мы будем завалены звонками от разгневанных пользователей.

Итак, можем ли мы настроить два сайта на одном сервере, который использует NLB и может поддерживать все состояние? Между прочим, сайты идентичны, только один будет более свежей сборкой для исправлений ошибок.

РЕДАКТИРОВАТЬ (Решено)

Итак, после этого я начал охоту, чтобы найти Эта статья. В нем описаны проблемы, связанные с использованием SQLServer вариант в sessionState в вашем web.config. Работает отлично, за исключением одного; данные сеанса больше не хранятся, что нарушает для нас всю безопасность. В Session_Start моего файла Global.asax у меня есть код вызова БД, который устанавливает данные сеанса, которые используются на всем сайте интрасети для быстрого доступа к сведениям о пользователях.

<sessionState mode="SQLServer" sqlConnectionString="Data Source=localhost;Integrated Security=True" />

Это из-за проблем с доступом к БД или из-за sessionState?

ИЗМЕНИТЬ РЕДАКТИРОВАТЬ

Хорошо, я подумал, что не перезапускал веб-службу после того, как поигрался с аутентификацией, из-за которой она сломалась. Поэтому последнее, что мне нужно знать, это переключаться между веб-сайтами, указывая на одно и то же место. Скажем, у нас есть URL http: // mycompanyintranet / это указывало на "CompanyIntranet1", и у нас также был сайт "CompanyIntranet2" в IIS, как бы мы получили http: // mycompanyintranet / указать на "CompanyIntranet2"?

Балансировка нагрузки, вероятно, не лучшее решение. С состоянием сеанса на SQL Server с эта модификация вы можете разделить сеанс между приложениями. Затем вы можете создать веб-сайт на IIS с двумя папками приложений. С помощью простого HttpModule вы можете переключаться между ними по своему усмотрению.

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