Я хочу запустить свои 2 (два) SQL Server 2008 R2 Enterprise Edition как один сервер. Если один сервер слишком занят, система должна направить запросы на другой сервер. Как я могу это сделать? Спасибо..
SQL Server не поддерживает функции горизонтального масштабирования из коробки. На самом деле это довольно сложно и обычно требует значительного изменения дизайна приложения, чтобы все было сделано правильно.
Вы уверены, что база данных настроена должным образом, чтобы все в ней работало с максимальной эффективностью? Правильная настройка базы данных (если это еще не сделано) будет НАМНОГО дешевле, чем масштабирование рабочей нагрузки приложений на нескольких физических серверах. У меня был клиент, который думал, что его приложение вырастет из сервера базы данных, на котором оно работало, поскольку компания в возрасте 3 лет уже использовала 24-ядерный SQL Server на 60% + в течение рабочего дня. С некоторыми изменениями схемы и небольшим изменением кода мы смогли снизить нагрузку на ЦП примерно до 5% на том же самом оборудовании.
Существует несколько различных способов масштабирования приложения на несколько серверов.
Настройте один сервер для обработки записи, а затем используйте репликацию SQL Server для передачи данных на другие серверы для чтения. Затем вы помещаете серверы только для чтения за балансировщиком нагрузки, чтобы запросы только для чтения направлялись всем серверам только для чтения. Это потребует большого количества проверок приложения и изменений дизайна.
Используйте одноранговую репликацию, чтобы сделать несколько серверов доступными для записи. Затем вы помещаете балансировщик нагрузки перед SQL-серверами, чтобы распределить рабочую нагрузку по серверам. Это может потребовать значительного пересмотра и изменения дизайна приложения в зависимости от текущих макетов таблиц и того, как используются идентификационные значения и как данные вставляются в базу данных.
Настройка представлений на нескольких серверах, которые указывают на локальную копию таблицы, а также на удаленную копию таблицы на одном или нескольких серверах. На физические таблицы накладываются ограничения, которые определяют, какие части данных будут существовать на каком сервере. Каждый сервер содержит только часть базы данных. Представления размещаются на каждом сервере, так что любой пользователь может подключиться к любому серверу. Это требует БОЛЬШОГО перемещения данных и очень тщательного планирования, чтобы схема редко изменялась, поскольку изменения схемы должны выполняться очень осторожно.
Независимо от того, по какому маршруту вы идете, необходимо провести БОЛЬШОЕ планирование, чтобы убедиться, что выбран правильный вариант. Я настоятельно рекомендую работать с консультантом, имеющим опыт работы с подобными конфигурациями. Положительным моментом является то, что есть несколько человек, которые имели дело с подобными вещами раньше, недостатком является то, что их не так много, и они будут очень дорогими. Если вы все же решите пойти по этому пути, зайдите на мой веб-сайт, и я свяжу вас с несколькими консультантами (включая меня), чтобы вы могли быть уверены, что получаете подходящего человека для работы.
Для вариантов 1 и 3 высокая доступность с помощью чего-то вроде кластеризации Windows очень быстро становится очень важной. Если записываемый сервер в первом варианте отключается, то все приложение отключается. Если какой-либо сервер в варианте 3 отключается, то все приложение отключается. С вариантом 2 он немного больше способен обрабатывать отказ сервера, но если приложение создает такую большую нагрузку, вам необходимо запланировать N + 1 узлов для варианта 2.
Выбирая вариант, вам также необходимо заранее спланировать, что будет делать рабочая нагрузка в будущем, поскольку она продолжает расти, поскольку вам нужно убедиться, что вы выбрали вариант, который будет работать в долгосрочной перспективе. .