Рекомендация архитектуры для сбалансированного с загрузки сайта ASP.NET

Я думаю, что это избыточно.

В исходном коде Junit:

public class TestFailure extends Object {}

Я не знаю, почему этот класс расширяет Object.

13
задан frankadelic 21 May 2009 в 19:31
поделиться

13 ответов

Я совместно использовал бы загрузку между этими 4 серверами. Дело не в этом многие.

Вы не хотите того единственного предмета спора также при развертывании, ни той единой точки отказа в производстве.

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

Мы использовали эту стратегию в 200 + ферма веб-сервера, и она работала приятно на развертывание без прерывания сервиса.

22
ответ дан 1 December 2019 в 19:15
поделиться

Мы - довольно счастливое использование 4 веб-серверов каждый с локальной копией страниц и SQL Server со сбоем по кластеру.

0
ответ дан 1 December 2019 в 19:15
поделиться

Чтобы дать Вам некоторую пищу для размышления, Вы могли посмотреть на что-то как Живая Сетка Microsoft. Я не говорю, что это - ответ для Вас, но модели хранения, которую это использует, может быть.

С Сеткой Вы загружаете небольшую службу Windows на каждую машину Windows, которую Вы хотите в своей Сетке и затем назначаете папки в своей системе, которые являются частью сетки. При копировании файла в папку Live Mesh - который является той же самой операцией как копирование к любому другому foler в системе - сервис заботится о синхронизации того файла ко всем другим участвующим устройствам.

Как пример я сохраняю все свои исходные файлы кода в папке Mesh и синхронизировал их между работой и домой. Я не должен делать ничего вообще для хранения их в синхронизации, действие того, чтобы сохранить файл в VS.Net, блокноте или любом другом приложении инициирует обновление.

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

0
ответ дан 1 December 2019 в 19:15
поделиться

Принятие Ваших серверов IIS выполняет Windows Server 2003 R2 или лучше, определенно изучает Репликацию DFS. Каждый сервер имеет свою собственную копию файлов, которая устраняет узкое место общей сети как многие другие, предостерегли от. Развертывание так же просто как копирование Ваших изменений в любом из серверов в группе репликации (принимающий полную ячеистую топологию). Репликация заботится об остальных автоматически включая использование удаленного дифференциального сжатия, чтобы только отправить дельты файлов, которые изменились.

0
ответ дан 1 December 2019 в 19:15
поделиться

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

Предпочтительно у Вас был бы маленький сервер подготовки для тестирования, и затем Вы будете 'robocopy' ко всем серверам развертывания (вместо того, чтобы использовать сетевой ресурс).

robocopy включен в ResourceKit MS - используют его с / переключателем MIR.

0
ответ дан 1 December 2019 в 19:15
поделиться

Что Вы получаете на NLB с 4IIS, Вы освобождаете его с BottleNeck с сервером приложений.

Для масштабируемости я рекомендую приложения на веб-серверах фронтэнда.

Здесь в моей компании мы реализуем то решение. Приложение.NET во фронтэндах и Сервере приложений для Sharepoint + Кластер SQL 2008.

Надежда это помогает!

с уважением!

0
ответ дан 1 December 2019 в 19:15
поделиться

В идеальной высоконадежной ситуации не должно быть никакой единой точки отказа.

Это означает, что единственное поле с веб-страницами на нем нет - нет. Делание HA работает на крупнейшую Телекоммуникационную компанию, я первоначально предложил бы следующее:

  • Каждый из этих четырех серверов имеет свою собственную копию данных.
  • В спокойное время принесите два из серверов офлайн (т.е. измените стабилизатор HA для удаления их).
  • Обновите два офлайновых сервера.
  • Измените стабилизатор HA, чтобы начать использовать два новых сервера а не два старых сервера.
  • Тест это для обеспечения правильности.
  • Обновите два других сервера, затем приносят им онлайн.

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

  • У нас было бы восемь серверов (в то время, когда, у нас было больше денег, чем Вы могли ввести палку по абсолютному адресу в). Когда время настало для перехода, четыре офлайновых сервера будут настроены с новыми данными.
  • Затем стабилизатор HA был бы изменен, чтобы использовать четыре новых сервера и прекратить использовать старые серверы. Это сделанное переключение (и, что еще более важно, петля, если мы наполнили), очень быстрый и безболезненный процесс.
  • Только, когда новые серверы работали, некоторое время будет мы рассматривать следующее переключение. Вплоть до той точки четыре старых сервера были сохранены в режиме офлайн, но готовыми на всякий случай.
  • Для получения того же эффекта с меньшим количеством финансовых издержек у Вас могли быть дополнительные диски, а не целые дополнительные серверы. Восстановление не было бы вполне как быстрое, так как необходимо будет выключить сервер для откладывания старого диска в, но это все еще было бы быстрее, чем операция восстановления.
2
ответ дан 1 December 2019 в 19:15
поделиться

С IIS6 и 7, явно поддерживается сценарий использования сетевой единственной доли через присоединенные машины сети/сервера приложений N. MS сделал тонну тестирования перфекта, чтобы удостовериться, что этот сценарий работает хорошо. Да, кэширование используется. С сервером двойного NIC, один для общедоступного Интернета и один для частной сети, Вы получите действительно хорошую производительность. Развертывание является пуленепробиваемым.

Это стоит занять время для сравнительного тестирования его.

Можно также оценить Поставщика Виртуального тракта ASP.NET, который позволил бы Вам развертывать единственный zip-файл для целого приложения. Или с CMS Вы могли служить праву на контент из базы данных содержания, а не файловой системе. Это представляет некоторые действительно хорошие опции для управления версиями.

VPP Для ZIP через #ZipLib.

VPP для ZIP через DotNetZip.

2
ответ дан 1 December 2019 в 19:15
поделиться

У нас есть аналогичная ситуация Вам, и наше решение состоит в том, чтобы использовать модель издателя/подписчика. Наше приложение для CMS хранит фактические файлы в базе данных и уведомляет сервис публикации, когда файл был создан или обновлен. Этот издатель затем уведомляет все подписывающиеся веб-приложения, и они затем идут и получают файл от базы данных и помещают его в свои файловые системы.

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

Вы могли использовать UNC для устройства хранения данных, мы выбрали DB для удобства и мобильности между или продуктивных и тестовых сред (мы просто копируем DB назад, и у нас есть все живые файлы сайта, а также данные).

0
ответ дан 1 December 2019 в 19:15
поделиться

Одна причина центральная доля плоха, состоит в том, потому что она делает NIC на сервере доли узким местом для целой фермы и создает единую точку отказа.

3
ответ дан 1 December 2019 в 19:15
поделиться

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

Развертывание Ваших веб-активов автоматизированы так или иначе (право?) настолько делающий это в кратных числах не действительно большая часть неудобства.

, Если бы это более сложно, чем, Вы делаете вид, тогда возможно, что-то как DeltaCopy было бы полезно сохранить те диски в синхронизации.

6
ответ дан 1 December 2019 в 19:15
поделиться

Я ответил за разработку для игрового веб-сайта, который имел 60 миллионов хитов в месяц. Путем мы сделали это была опция № 1. У пользователя действительно была способность загрузить изображения и такой, и они были помещены на NAS, который был совместно использован серверами. Это удалось вполне прилично. Я предполагаю, что Вы также делаете страницу, кэширующуюся и так далее на стороне приложения дома. Я также развернулся бы по требованию, новые страницы ко всем серверам одновременно.

1
ответ дан 1 December 2019 в 19:15
поделиться

Используйте инструмент развертывания с процессом, который развертывается по одному, и остальная часть системы продолжает работать (как Mufaka заявил). Это - испытанный процесс, который будет работать и с файлами содержания и с любой скомпилированной частью приложения (которые развертываются, вызывает перерабатывание процесса asp.net).

Относительно уровня обновлений это - что-то, чем можно управлять. Имейте обновления, проходят очередь и имеют единственный процесс развертывания, который управляет, когда развернуть каждый объект. Заметьте, что это не означает обработку каждого обновления отдельно поскольку можно захватить текущие обновления в очереди и развернуть их вместе. Дальнейшие обновления прибудут в очередь и будут взяты, после того как текущий набор обновлений закончен.

Обновление: О вопросах в комментарии. Это - настраиваемое решение на основе моего опыта с тяжелыми/длинными процессами, которому нужен их уровень обновлений, которыми управляют. У меня не было потребности использовать этот подход для сценариев развертывания, что касается такого динамического контента, я обычно иду с комбинацией DB и кэша на разных уровнях.

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

Изменения DB были бы сделаны во время процесса публикации, снова просто необходимо знать, где информация для необходимых изменений, и позвольте процессу/инструменту публикации обработать его. Относительно то, что использовать для очереди, основные, которые я использовал, является msmq и пользовательской реализацией с информацией в SQL-сервере. Очередь должна просто там управлять уровнем обновлений, таким образом, Вам не нужно ничто особенно предназначенное при развертывании.

Обновление 2: удостоверьтесь, что Ваши изменения DB назад совместимы. Это действительно важно при продвижении изменений, живых к различным серверам.

1
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: