Проектирование структуры копии базы данных

 

Применимо к: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Последнее изменение раздела: 2010-11-11

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

  • Службы инфраструктуры, такие как Служба каталогов Active Directory и DNS

  • Рядовые серверы группы обеспечения доступности баз данных

  • Отдельные компоненты хранилища, такие как диски, контроллеры хранения и полки хранения

  • Отдельные сетевые компоненты, такие как маршрутизаторы, коммутаторы и агрегаторы

  • Серверные стойки и стойки хранения

  • Шины питания

  • Центры данных

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

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

При планировании архитектуры почтовых ящиков следует учитывать приведенные ниже дополнительные факторы.

  • Будут ли разворачиваться копии базы данных?

  • Сколько копий базы данных будет развернуто?

  • Будет ли задействована архитектура отказоустойчивости на уровне сайта?

  • Какая модель отказоустойчивости сервера почтовых ящиков будет задействована?

  • Сколько серверов почтовых ящиков будет развернуто?

  • Какая модель резервного копирования будет использоваться?

  • Какая архитектура хранения будет использоваться?

Дополнительные сведения о планировании и решении этих вопросов см. в разделе Общие сведения о факторах высокой доступности.

Содержание

Несбалансированные структуры копий баз данных

Разработка сбалансированной структуры копий баз данных

Распределение активных баз данных в примерном сценарии во время отказа серверов

Сценарии разработки

Необходимы сведения о задачах, связанных с высоким уровнем доступности и устойчивостью сайтов к сбоям? См. раздел Управление высокой доступностью и устойчивостью сайтов.

Несбалансированные структуры копий баз данных

Чтобы лучше понять распределение копий баз данных в группе обеспечения доступности баз данных, рассмотрим структуру группы обеспечения доступности баз данных, которую компания Contoso, Ltd is планирует внедрить для своего высокодоступного решения сервера почтовых ящиков. Contoso создает группу обеспечения доступности баз данных, состоящую из перечисленных ниже компонентов.

  • 4 сервера почтовых ящиков

  • 20 баз данных почтовых ящиков

  • 2 копии каждой базы данных почтовых ящиков

Все серверы развернуты в едином центре данных, каждый сервер имеет выделенное хранилище, каждый сервер расположен в собственной стойке.

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

На основе этих требований принята структура копий баз данных, приведенная на следующем рисунке.

Исходная структура копий баз данных

Структура копии базы данных (таблица 1)

Эта структура кажется надежной, так как активные копии каждой базы данных распределены по четырем членам группы обеспечения доступности баз данных. Однако существует ряд сомнений. Структура не является оптимальной с точки зрения ресурсов серверов. Например, отказ одного сервера приведет к неравномерному распределению баз данных, как показано на следующем рисунке.

Структура копий баз данных после отказа одного из серверов

Структура копии базы данных после единичного сбоя сервера

Отказ сервера Server4 приведет к активации баз данных DB16 – DB20 включительно на сервере Server1 вместо их равномерного распределения по ставшимся трем серверам. Результатом станет неравномерное распределение активных баз данных почтовых ящиков и неравномерное использование ресурсов серверов. В сравнении с двумя оставшимися серверами (Server2 и Server3) использование ресурсов Server1 выросло вдвое.

Кроме того, очередная проблема заключается в том, что группа обеспечения доступности баз данных не содержит достаточно копий, чтобы выдержать отказ двух серверов одновременно. Сбой еще одного сервера может привести к недоступности 50 процентов баз данных. Если серверы Server1 и Server4 станут недоступны практически одновременно, 10 баз данных станет недоступными, как показано на следующем рисунке.

Структура копий баз данных после отказа двух серверов

Структура копии базы данных после двойного сбоя сервера

Эта структура не соответствует основному требованию по выдерживанию одновременного отказа двух серверов. Чтобы выдержать одновременный отказ двух серверов и обеспечить наличие всех активных баз данных, необходимо развернуть третью копию и разработать новую структуру.

В начало

Разработка сбалансированной структуры копий баз данных

Разработка сбалансированной структуры копий баз данных может привести к рассмотрению нескольких решений для определения оптимальной структуры. Руководствуйтесь следующими принципами разработки при планировании структуры копий баз данных.

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

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

Стандартные блоки

Чтобы соблюдать предыдущие принципы разработки, рекомендуется размещать копии баз данных в определенной последовательности, которая обеспечит симметричное распределение всех активных копий по всем доступным серверам. Распределение копий баз данных основывается на концепции стандартных блоков.

Первый стандартный блок (называется стандартным блоком 1 уровня) основан на количестве серверов почтовых ящиков, которые будут содержать копии активных баз данных. Предположим, что это количество равно N. N определяет не только количество серверов почтовых ящиков, но и количество баз данных в пределах стандартного блока. Одна активная копия базы данных размещена на каждом сервере, что создает диагональную последовательность.diagonal pattern. Как и в предыдущем примере, имеется 4 сервера почтовых ящиков и 20 баз данных почтовых ящиков. Размер первого стандартного блока 1 уровня равен 4, как показано на следующем рисунке.

Стандартный блок 1 уровня

Стандартный блок уровня 1

Та же последовательность повторяется для каждого оставшегося набора стандартных блоков 1 уровня. Так как существует 20 баз данных, создается пять наборов стандартных блоков 1 уровня, как показано на следующем рисунке.

Пять стандартных блоков 1 уровня для 20 баз данных

Пять стандартных блоков уровня 1 для двадцати баз данных

При добавлении второй копии базы данных она будет размещаться по-другому в каждом наборе стандартных блоков. Так как один сервер уже содержит активную копию, для размещения второй копии базы данных доступно N – 1 серверов. При использовании каждого из этих N – 1 серверов один раз возникает полное симметричное распределение, которое формирует новый, более большой стандартный блок. Поэтому размер нового стандартного блока (стандартного блока 2 уровня) становится равным N × (N – 1) баз данных. Это означает, что вторая копия первой базы данных размещается на втором сервере, а каждая последующая вторая копия размещается в диагональной последовательности в рамках стандартного блока. После завершения последовательности на первом наборе стандартных блоков 1 уровня начальная позиция второй копии для следующего блока будет смещена на одну позицию, так что вторая копия будет создаваться на третьем сервере.

В этом примере размер стандартного блока становится равным 4× (4 – 1) = 4× 3 = 12. Это означает, что каждый набор стандартных блоков 2 уровня будет состоять из 12 баз данных. Для первого набора стандартных блоков 1 уровня (DB1 – DB4) вторая копия DB1 помещается на Server2, в то время как для второго набора стандартных блоков 1 уровня (DB5 – DB8) вторая копия DB5 размещается на Server3. Сервер начального размещения для каждого набора стандартных блоков 1 уровня смещается по отношению к предыдущему набору стандартных блоков 1 уровня на один сервер. В соответствии с этой структурой вторая копия DB9 размещается на сервере Server4. Это гарантирует, что в случае сбоя сервера Server1 вторые копии будут активированы на всех трех оставшихся серверах вместо активации нескольких баз данных на одном сервере.

Стандартный блок 2 уровня с тремя стандартными блоками 1 уровня

Один стандартный блок уровня 2 с тремя блоками уровня 1

Эта последовательность повторяется для каждого оставшегося второго набора стандартных блоков. Так как используется 20 баз данных, в этом примере используется два набора стандартных блоков 2 уровня. Обратите внимание, что вторая копия DB13 размещена на сервере Server2.

Стандартный блок 2 уровня с оставшимися двумя стандартными блоками 1 уровня

Стандартный блок уровня 2 с оставшимися двумя блоками

Чтобы лучше понять эту логику, сравните размещение копий баз данных DB1, DB5 и DB9. Каждая из этих баз данных имеет активную копию на сервере Server1. Если произойдет сбой сервера Server1, хотелось бы, чтобы вторые копии баз данных активировались на оставшихся серверах, что обеспечило бы равномерное распределение нагрузки. Этого можно достичь, разместив вторую копию базы данных DB1 на сервере Server2, вторую копию базы данных DB5 на сервере Server3 и вторую копию базы данных DB9 на сервере Server4. Начиная с базы данных DB13, это последовательность начинает повторяться. Остальные копии баз данных добавляются в диагональной последовательности, как показано на следующем рисунке.

Равномерное распределение копий баз данных

Размещение копий базы данных для равномерного распределения

Обратите внимание, что второй стандартный блок (DB13 – DB20) содержит только 8 баз данных, а не 12. В результате эта структура не будет полностью симметричной при возникновении сбоя. Чтобы обеспечить полностью симметричное распределение, спланируйте архитектуру таким образом, чтобы количество баз данных было кратным самому большому размеру стандартного блока. (В этом примере оптимальным количеством станет 24, 36, 48 или 60 баз данных и т. д.)

При добавлении третьей копии базы данных необходимо размещать ее по-другому для каждой группы, которая теперь состоит из N × (N – 1) баз данных. Так как теперь доступно N – 2 серверов для выбора размещения третьей копии базы данных, это оставляет N – 2 вариантов. Размер нового стандартного блока (стандартного блока 3 уровня) становится равным N × (N – 1) × (N – 2) баз данных. Поэтому третья копия первой базы данных размещается на третьем сервере, а каждая последующая третья копия размещается в диагональной последовательности от начальной позиции в этом новом стандартном блоке. После завершения последовательности в первом наборе стандартных блоков 1 уровня начальное положение смещается на одну позицию, так что третья копия размещается в четвертой позиции.

В этом примере размер стандартного блока становится равным 4 × (4 – 1) × (4 – 2) = 4 × 3 × 2 = 24. Это означает, что каждый набор стандартных блоков 3 уровня будет состоять из 24 баз данных. Чтобы обеспечить симметричную последовательность размещения баз данных, поместите третью копию базы данных DB1 на сервер Server3 (это первый доступный сервер, так как Server1 содержит первую копию, а Server2 – вторую), затем сдвигайте каждую дополнительную копию на одну позицию, пока не будет достигнут конец первого набора стандартных блоков 1 уровня. Для следующего набора стандартных блоков снова разместите третью копию базы данных на следующем доступном сервере (Server4) и продолжайте размещение подобным образом до базы данных DB12, то есть до конца первого набора стандартных блоков 2 уровня. Для баз данных с DB13 по DB20 следуйте той же последовательности со смещением размещения третьей копии базы данных на одну позицию, чтобы эти базы данных не оказались на тех же серверах, что базы данных с DB1 по DB12.

Сбалансированная структура с тремя копиями баз данных и четырьмя серверами

Сбалансированная структура с тремя копиями и четырьмя серверами

Чтобы лучше понять эту логику, сравним размещение копий баз данных DB1 – DB13. Эти базы данных имеют активную копию на сервере Server1, вторая копия баз данных размещена на сервере Server2. Если произойдет сбой этих серверов, хотелось бы, чтобы третьи копии баз данных активировались на оставшихся серверах, что обеспечило бы равномерное распределение нагрузки. Этого можно достичь, поместив третью копию базы данных DB1 на сервере Server3 и третью копию базы данных DB13 на сервере Server4. Аналогичные пары формируют базы данных DB2 и DB14, DB3 и DB15 и так далее. Начиная с базы данных DB25, эта последовательность начинает повторяться (в этом примере не рассматривается такое большое количество баз данных).

Обратите внимание, что третий стандартный блок (базы данных DB1 – DB20) содержит только 20, а не 24 базы данных. В результате эта структура не будет полностью симметричной, если из строя выйдут два сервера. Напомним: чтобы обеспечить полностью симметричное распределение, спланируйте архитектуру таким образом, чтобы количество баз данных было кратным самому большому размеру стандартного блока. (В этом примере оптимальным количеством станет 24, 48 или 72 базы данных и т. д.)

При добавлении четвертой копии базы данных необходимо размещать ее по-другому для каждой группы, которая теперь состоит из N × (N – 1) × (N – 2) баз данных. Размер нового стандартного блока становится равным N × (N – 1) × (N – 2) × (N – 3) базам данных. Здесь применяется тот же логических подход, который обеспечивает равномерное распределение баз данных в новом стандартном блоке в случае отказа трех серверов.

В примере с использованием четырех серверов есть только один вариант размещения четвертой копии базы данных (доступен только последний оставшийся сервер). Поэтому размер стандартного блока фактически остается равным 24. Это становится очевидным при расчете размера стандартного блока по следующей формуле: 4 × 3 × 2 × (4 – 3) = 4 × 3 × 2 × 1 = 24.

При добавлении новых копий баз данных стандартный блок продолжает увеличиваться, так как общая формула размера стандартного блока равна перестановки(N,M) = N × (N – 1) … (NM + 1) = N!/(NM)! = CNMM!, где N = число серверов, а M = число копий баз данных. Это станет очевидным, как только будет понятно, что полное симметричное распределение копий баз данных достигается путем выбора всех возможных перестановок M копий баз данных по N количеству доступных серверов.

Существует несколько ограничений по использованию этой методологии.

  • Развертывание числа базы данных, не являющегося кратным самому большому размеру стандартного блока, приведет к несимметричному распределению активных баз данных во время отказов.

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

  • Развертывание отказоустойчивых решений на уровне сайта, которые приводят к событиям размещения базы данных за пределами сайта, может привести к несимметричному распределению баз данных, активированных во втором центре данных при отказе серверов в основном центре данных.

В начало

Распределение активных баз данных в примерном сценарии во время отказа серверов

Обращаясь к предыдущему примеру, если произойдет отказ одного сервера (например, отказ Server4), активные базы данных почтовых ящиков будут распределены, как показано на следующем рисунке. Активируется вторая копия баз DB4, DB8, DB12, DB16 и DB20, что обозначается оранжевой подписью Active.

Распределение активных копий баз данных после отказа одного из серверов

Распространение активной копии базы данных после сбоя

При отказе двух серверов (для некоторых баз данных активируется третья копия, которая обозначена зеленой подписью Active) оставшиеся два сервера Server1 и Server3 будут содержать одинаковое число активных баз данных почтовых ящиков.

Распределение активных копий баз данных после отказа двух серверов

Распространение активной копии после двойного сбоя

Однако, так как количество баз данных в этом примере не является кратным размеру самого большого стандартного блока (24 базы данных), не все одновременные отказы двух серверов приведут к симметричному распределению баз данных.

Распределение активных копий баз данных после другого отказа двух серверов

Распространение активной копии после другого сбоя

В начало

Сценарии разработки

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

Сценарий разработки: решение по обеспечению отказоустойчивости на уровне сайта путем распределения активных и пассивных пользователей

В этом сценарии компания Contoso решает развернуть следующую архитектуру:

  • Группа доступности баз данных охватывает два центра данных с использованием модели распределения активных и пассивных пользователей.

  • Каждый сервер размещен в отдельной серверной стойке.

  • Хранилище каждого сервера изолировано от хранилищ других серверов в центре данных.

  • В центре данных задействовано четыре сервера почтовых ящиков.

  • Всего используется 24 базы данных почтовых ящиков.

  • Необходимо обеспечить наличие 4 высокодоступных копии баз данных и выдерживать отказ двух серверов или одного центра данных.

В этом примере размер стандартного блока 1 уровня равен 4, базы данных сгруппированы по 4, активные копии распределены по четырем серверам в одном стандартном блоке.

Равномерное распределение первой копии в одном стандартном блоке

Равномерное распределение баз данных в стандартном блоке

Для каждого сервера, содержащего активные копии, вторая копия баз данных распределяется как можно равномерно по оставшимся рядовым серверам, следуя диагональной последовательности, так как каждая копия является изолированной. В этом примере размер стандартного блока 2 уровня становится равным 12, то есть 12 баз данных становятся повторяющимся набором.

Равномерное распределение второй копии в одном стандартном блоке

Равномерное распределение второй копии в блоке

Так как это отказоустойчивое решение на уровне сайта предназначено для модели распределения активных и пассивных пользователей с одинаковым количеством серверов и копий баз данных в обоих центрах данных, третья копия баз данных помещается в диагональной последовательности на серверах Server5 и Server6 с использованием размера стандартного блока 1 уровня, равного 4. Это обеспечит зеркалирование серверами Server5 и Server6 размещения первой копии базы данных на серверах с Server1 по Server4.

Равномерное распределение третьей копии во втором стандартном блоке

Равномерное распределение третьей копии в блоке

Так как это отказоустойчивое решение на уровне сайта предназначено для модели распределения активных и пассивных пользователей с одинаковым количеством серверов и копий баз данных в обоих центрах данных, четвертая копия баз данных помещается в диагональной последовательности на серверах Server5 и Server6 с использованием размера стандартного блока 2 уровня, равного 12. Это обеспечит зеркалирование серверами Server5 и Server6 размещения первой копии базы данных на серверах с Server1 по Server4.

Равномерное распределение четвертой копии во втором стандартном блоке

Равномерное распределение четвертой копии в блоке

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

Распределение активных копий баз данных после отказа одного из серверов

Распространение активных копий после сбоя сервера

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

Распределение активных копий баз данных после отказа двух серверов

Распространение активных копий после двойного сбоя

Сценарий разработки: несколько доменов отказов

В этом примере компания Wingtip Toys решает развернуть следующую архитектуру:

  • Все серверы размещены в одном центре данных.

  • Серверы сгруппированы в наборы по три.

  • Каждый из трех серверов размещен в одной стойке со своим хранилищем.

  • Имеется 3 стойки и 9 серверов.

  • Всего используется 18 базы данных почтовых ящиков.

  • Необходимо обеспечить наличие трех высокодоступных копий баз данных и выдерживать отказ двух рядовых серверов или одной стойки.

В этом примере размер стандартного блока 1 уровня равен 6, базы данных сгруппированы по 6, активные копии распределены по шести серверам в одном стандартном блоке.

Структура копий баз данных для стандартного блока 1 уровня

Структура копии базы данных для стандартного блока уровня 1

Для каждого сервера, на котором размещены активные копии, вторые копии баз данных распределены как можно равномерно по оставшимся рядовым серверам. При этом в одной серверной стойке не размещаются две копии одной и той же базы данных. В этом примере вместо формулы стандартного блока второго уровня N × (N – 1) используется формула N × (N – 2), соблюдение которой предотвращает размещение двух копий одной базы данных в одной стойке. Это означает, что размер стандартного блока 2 уровня равен 6 × 4 = 24.

Структура копий баз данных для первых и вторых копий

Структура копии базы данных для первой и второй копий

Третья копия базы данных размещается на серверах в диагональной последовательности, что, опять же, предотвращает размещение нескольких копий одной базы данных в одной стойке. В этом примере вместо формулы стандартного блока третьего уровня N × (N – 2) используется формула N × (N – 2) × (N – 4), соблюдение которой предотвращает размещение двух копий одной базы данных в одной стойке. Это означает, что размер стандартного блока 3 уровня равен 6 × 4 × 2 = 48.

Структура копий баз данных для первых, вторых и третьих копий

Структура копии базы данных для трех копий

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

Число активных баз данных и их структура после отказа одного сервера

Количество и структура активных баз данных после сбоя

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

Число активных баз данных и их структура после отказа двух серверов (разные стойки)

Количество и структура активных баз данных после двойного сбоя

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

Число активных баз данных и их структура после отказа двух серверов (одна стойка)

Количество и структура активных баз данных после двойного сбоя

В начало

 © Корпорация Майкрософт (Microsoft Corporation), 2010. Все права защищены.