Быстрая и простая настройка веб-фермы

Я использую asp.net 3.5 и SQL Server 2008 и хочу настроить очень простую веб-ферму.

Я приобрел 2 виртуальных сервера, я не использую viewstate или сеансы на своих веб-страницах, только файлы cookie, поэтому все, что мне нужно, это иметь 2 версии одной и той же базы данных на каждом виртуальном сервере (я полагаю) и 2 версии двоичных файлов / веб-страницы на каждом сервере (я предполагаю). Мне нужно какое-то руководство, чтобы настроить их так, чтобы, когда пользователь делает запрос:

a) Серверы сбалансированы по нагрузке, и запрос отправляется на наименее загруженный сервер. b) Всякий раз, когда выполняется изменение базы данных SQL, оно отражается и в другой базе данных.

Это звучит возможно?

3 ответа

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

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

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

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

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

То, что вы описываете там, с точки зрения базы данных, является схемой репликации "мастер-мастер" ( см. Здесь некоторые примечания о том, что, вероятно, означает, что вам нужна SQL Enterprise Edition (одна лицензия на каждый сервер), что недешево - вы не сможете сделать это с Express Edition и, вероятно, не со Standard. Вы можете попробовать реализовать это в логике вашего приложения, но это будет сложная банка червей. Если два сервера находятся в одном VLAN в В этом случае вы могли бы иметь оба сервера, которые обращаются к одной и той же главной БД в запросах, когда им нужно что-то записать, но затем читать их отдельные БД для запросов только для чтения - это можно сделать с репликацией "ведущий-ведомый", которая проще (и потенциально дешевле).) по существу: создание базы данных SQL на многих машинах гораздо сложнее, чем использование веб-серверов, обращающихся к базе данных.

Самый простой способ передать запросы двум разным веб-серверам (если, как в ситуации, описать, где все запросы HTTP(S) переносят все необходимое состояние, а не те, которые содержатся в "сеансе" на стороне сервера), вам не нужно не нужно ничего вроде "липких сессий"), чтобы использовать циклический DNS, имея несколько записей A для соответствующего имени. Смотрите здесь Это не учитывает отключение одного из серверов, хотя и не является решением для высокой доступности, и вы не можете контролировать баланс (вы не можете решить, какая машина получает попадания, поэтому вы можете уменьшить попадания на один сервер, когда он уже занят). Для обеспечения высокой доступности и контролируемой балансировки вам понадобится дополнительная машина, через которую проходят все запросы, и она решает, какой реальный веб-сервер получает удар.

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

Зачем вам нужно 2 копии базы данных? Какое приложение вы размещаете? Достаточно ли хороша синхронизация в реальном времени для баз данных?

почему бы не указать два веб-сервера на один сервер базы данных? масштабирование сервера sql, как вы описали, не является чем-то легким, и это определенно не будет считаться быстрой и простой настройкой!

Другие вопросы по тегам