Gotchas: Обновление с отдельных серверов до веб-ферм - PullRequest
4 голосов
/ 22 ноября 2008

В настоящее время наша компания использует два сервера Windows 2003 (веб-сервер и сервер базы данных MSSQL 8). Мы планируем добавить еще пару серверов для обеспечения избыточности / доступности в настройке веб-фермы. Наши веб-сайты в основном ASP.NET, у нас есть несколько PHP-сайтов, но они в основном статические без БД.

Есть ли у кого-нибудь, кто прошел через этот процесс, какие-то ошибки или другие моменты, о которых я должен знать? И даст ли использование Windows Server 2008 какие-либо дополнительные преимущества в этой ситуации (чтобы я мог убедить своего босса выполнить обновление :)?

Спасибо.

Ответы [ 6 ]

4 голосов
/ 23 ноября 2008

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

Например, предположим, у вас есть четыре узла в вашей ферме. Вы вытаскиваете два из кластера и обновляете и тестируете, затем меняете два других, чтобы повторить? Определите, соответствует ли ваш текущий процесс развертывания ответу, который вы предоставляете. Тот факт, что количество серверов в X раз больше, не означает, что вы хотите или должны выполнять X раз больше работы.

Просто на секунду вернемся к кеширующей части разговора. Вы обязательно должны взглянуть на решение распределенного кэширования. Если вы предварительно кешируете данные и используете обратные вызовы с удалением кеша, вы можете по-настоящему поставить стук в базу данных, если не будете осторожны. Кроме того, многие решения распределенного кэширования также предлагают некоторый уровень управления состоянием сеанса. Мне очень понравился проект Microsoft Velocity, хотя это всего лишь вторая версия CTP, которая еще не готова к производству.

4 голосов
/ 22 ноября 2008

Как говорит Майкл, вам нужно позаботиться о вашей сессии. Идеально сделать его стройным и хранить вне процесса. У вас будут похожие проблемы с кешем в зависимости от того, как вы его используете, и вам может быть интересно взглянуть на более надежную технологию кэширования, если вы используете только кэширование asp.

Не забывайте такие вещи, как машинные ключи и проверки в вашем web.config. Ключи машины должны быть согласованными на всех ваших серверах.

Ознакомьтесь с IIS7, и вы сможете выбрать несколько хороших примеров, чтобы похвастаться своему боссу.

Веб-ферма может предоставить вам возможности и проблемы с развертыванием, которые не следует упускать из виду.

Без специального опыта для настройки выше, но для общих шагов такого рода. Я бы порекомендовал поэтапный подход. То есть сначала перейдите на Windows 2008, а затем на ферму.

4 голосов
/ 22 ноября 2008

Если у вас динамическая балансировка нагрузки (т. Е. Мой первый запрос направляется на сервер X, но мой следующий запрос может быть направлен на сервер Y или Z), вы обнаружите, что сеансы In-Proc не работают. Таким образом, вам понадобятся либо липкие сеансы (ваш балансировщик нагрузки ВСЕГДА будет отправлять мне (= мой сеанс) на сервер X), либо сеансы вне процесса (т.е. хранятся на сервере SQL).

1 голос
/ 30 ноября 2008

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

1 голос
/ 30 ноября 2008

Мы используем ASP.NET State Server для обработки сеансов. Это бесплатно для Windows Server 2003/2008.

Затем мы должны убедиться, что ключи машины совпадают (настройка в файлах web.config).

Затем я вручную отключаю каждый сайт (используя app.offline или как называется магический файл). В качестве альтернативы вы можете использовать IIS и просто выключить сайт, а автономный сайт «включен».

Вот и все. Вы можете беспокоиться о распределенном кешировании, но это довольно сложная вещь. Вы можете получить много хорошего из стандартного кэширования вывода с ASP.NET. Я бы начал с этого, прежде чем углубляться в сложность (и стоимость некоторых продуктов), если вы собираетесь заниматься распределенным кэшированием.

О, мы используем балансировщик нагрузки F5, который НЕ выполняет липкие сессии, поэтому нам нужно поддерживать наши сессии ... именно поэтому мы используем сервер состояний ASP.NET.

1 голос
/ 22 ноября 2008

В дополнение к тому, что сказали другие, вы, возможно, захотите рассмотреть продукт Ричарда Кэмпбелла (.NET Rocks!):

http://www.strangeloopnetworks.com/

...