Доступ к кластеру SQL Server из ASP.Net - PullRequest
0 голосов
/ 13 мая 2010

Я абсолютный юноша, но теперь наша компания создает новое приложение под кластерную платформу ASP.NET + SQL Server.

Так что я знаю лучшие и наиболее эффективные принципы и способы масштабирования нагрузки, но я хочу знать фон MS горизонтального масштабирования.

Вопрос довольно прост - есть ли в ASP.Net встроенные возможности для доступа к наименее загруженному серверу SQL из кластера SQL Server?

Любые слова, библиотеки, ссылки высоко ценятся.

Я также был бы рад услышать лучшие практики SQL Server или истории успеха по этой теме.

Спасибо. Павел

Ответы [ 2 ]

0 голосов
/ 13 мая 2010

Если вы используете кластеризацию SQL Server, кластер является активным / пассивным, так как только один сервер в кластере владеет экземпляром SQL, поэтому вы не можете распределить нагрузку между ними.

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

Альтернативой (все еще не балансировкой нагрузки, но настроить IMO проще, чем кластеризация) является зеркалирование базы данных: http://msdn.microsoft.com/en-us/library/ms189852.aspx. Для зеркалирования вы указываете имя сервера партнера в строке соединения: Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;Failover Partner=myBackupServerAddress; ADO.Net автоматически переключится на отказоустойчивого партнера в случае сбоя основного.

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

0 голосов
/ 13 мая 2010

Кластеризация SQL Server не является балансировкой нагрузки, она предназначена для обеспечения высокой доступности (например, один сервер умирает, кластер все еще жив).

...