Создание веб-приложения .NET MVC с зеркальной базой данных для HA - PullRequest
1 голос
/ 15 марта 2011

Я пишу свое первое приложение .NET MVC и использую подход Code-First. Недавно я узнал, как настроить две установки SQL Server для высокой доступности, используя Зеркальная база данных и Свидетель (не путать с Отказоустойчивые кластеры ) для выполнения процесса отработки отказа. Я думаю, что сейчас самое время попрактиковаться в обеих вещах, подключив мое веб-приложение к высокодоступной БД.

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

Как лучше всего использовать оба адреса в файле Web.config (или где-то еще) и выбирать правильную строку подключения?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

У меня нулевой опыт подключения к зеркальным базам данных, так что это все ересь!:)

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

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

Если нет, то он там с Создание начального соединения , где они вводят атрибут FailoverPartner ConnectionString атрибуты свойства.

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

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

Если атрибут FailoverPartner доступен,этот процесс должен быть относительно прозрачным для клиента.

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

Существует также сообщение ServerFault о зеркальном отображении базы данных с Sql Server, которое может представлять интерес с операционной точки зрения и имеет дополнительную справочную информацию.

Надеюсь, кто-то имеет реальный опытсоздам резервную копию всего этого!

0 голосов
/ 15 марта 2011

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

Балансировщик нагрузки будет иметь обе базы данных в своем пуле,используя базовые методы проверки работоспособности (например, ping и т. д.).

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

Этодля чего эти сетевые устройства хороши.Принятие решений о работоспособности серверов не является задачей структуры программирования (ASP.NET).

...