Последнее изменение раздела: 2010-11-11
При разработке высокодоступного решения для серверов почтовых ящиков необходимо обеспечить высокую доступность целому ряду компонентов инфраструктуры, в том числе перечисленным ниже.
- Службы инфраструктуры, такие как Служба каталогов Active
Directory и DNS
- Рядовые серверы группы обеспечения доступности баз данных
- Отдельные компоненты хранилища, такие как диски, контроллеры
хранения и полки хранения
- Отдельные сетевые компоненты, такие как маршрутизаторы,
коммутаторы и агрегаторы
- Серверные стойки и стойки хранения
- Шины питания
- Центры данных
Каждая из этих областей компонентов представляет возможные точки отказа, которые иногда называются доменами отказов. В результате уровень доступности группы обеспечения доступности баз данных, в конечном счете, зависит от разработки решения по изоляции и снижению отрицательного воздействия отказа в одном из этих доменов на всю среду группы обеспечения доступности баз данных. Чтобы домены отказов были по-настоящему независимы друг от друга, каждый домен отказа должен содержать одну копию базы данных. Кроме того, так как отказ приведет к недоступности нескольких копий, в домене отказа должно содержаться не более одной копии.
Рассмотрим сценарий, в котором имеются две копии базы данных. Каждая копия хранится на отдельном наборе дисков, однако обе копии размещены в одном массиве хранения. Если происходит отказ массива хранения или он становится недоступным по какой-либо причине, обе копии становятся недоступными. В этом примере доменом отказа будет массив хранения. В этом массиве должна храниться одна копия каждой базы данных. В противном случае, если происходит отказ домена, несколько (возможно даже все) копии базы данных станут недоступными.
При планировании архитектуры почтовых ящиков следует учитывать приведенные ниже дополнительные факторы.
- Будут ли разворачиваться копии базы данных?
- Сколько копий базы данных будет развернуто?
- Будет ли задействована архитектура отказоустойчивости на уровне
сайта?
- Какая модель отказоустойчивости сервера почтовых ящиков будет
задействована?
- Сколько серверов почтовых ящиков будет развернуто?
- Какая модель резервного копирования будет использоваться?
- Какая архитектура хранения будет использоваться?
Дополнительные сведения о планировании и решении этих вопросов см. в разделе Общие сведения о факторах высокой доступности.
Содержание
Несбалансированные структуры копий баз данных
Разработка сбалансированной структуры копий баз данных
Распределение активных баз данных в примерном сценарии во время отказа серверов
Необходимы сведения о задачах, связанных с высоким уровнем доступности и устойчивостью сайтов к сбоям? См. раздел Управление высокой доступностью и устойчивостью сайтов.
Несбалансированные структуры копий баз данных
Чтобы лучше понять распределение копий баз данных в группе обеспечения доступности баз данных, рассмотрим структуру группы обеспечения доступности баз данных, которую компания Contoso, Ltd is планирует внедрить для своего высокодоступного решения сервера почтовых ящиков. Contoso создает группу обеспечения доступности баз данных, состоящую из перечисленных ниже компонентов.
- 4 сервера почтовых ящиков
- 20 баз данных почтовых ящиков
- 2 копии каждой базы данных почтовых ящиков
Все серверы развернуты в едином центре данных, каждый сервер имеет выделенное хранилище, каждый сервер расположен в собственной стойке.
Contoso требует, чтобы всегда были доступны две высокодоступные копии баз данных (например, неизолированные копии) и чтобы это решение могло выдержать одновременный отказ двух членов группы обеспечения доступности баз данных без отрицательного воздействия на доступность баз данных.
На основе этих требований принята структура копий баз данных, приведенная на следующем рисунке.
Эта структура кажется надежной, так как активные копии каждой базы данных распределены по четырем членам группы обеспечения доступности баз данных. Однако существует ряд сомнений. Структура не является оптимальной с точки зрения ресурсов серверов. Например, отказ одного сервера приведет к неравномерному распределению баз данных, как показано на следующем рисунке.
Отказ сервера Server4 приведет к активации баз данных DB16 – DB20 включительно на сервере Server1 вместо их равномерного распределения по ставшимся трем серверам. Результатом станет неравномерное распределение активных баз данных почтовых ящиков и неравномерное использование ресурсов серверов. В сравнении с двумя оставшимися серверами (Server2 и Server3) использование ресурсов Server1 выросло вдвое.
Кроме того, очередная проблема заключается в том, что группа обеспечения доступности баз данных не содержит достаточно копий, чтобы выдержать отказ двух серверов одновременно. Сбой еще одного сервера может привести к недоступности 50 процентов баз данных. Если серверы Server1 и Server4 станут недоступны практически одновременно, 10 баз данных станет недоступными, как показано на следующем рисунке.
Эта структура не соответствует основному требованию по выдерживанию одновременного отказа двух серверов. Чтобы выдержать одновременный отказ двух серверов и обеспечить наличие всех активных баз данных, необходимо развернуть третью копию и разработать новую структуру.
Разработка сбалансированной структуры копий баз данных
Разработка сбалансированной структуры копий баз данных может привести к рассмотрению нескольких решений для определения оптимальной структуры. Руководствуйтесь следующими принципами разработки при планировании структуры копий баз данных.
- Обеспечьте максимальное снижение отказов нескольких копий баз
данных почтовых ящиков путем изоляции каждой копии и размещении их
в разных доменах отказов. Например, не размещайте несколько копий
определенной базы данных почтовых ящиков в одной серверной стойке
или в одном массиве хранения.
- Равномерно распределите копии баз данных, чтобы активные базы
данных почтовых ящиков были так же равномерно распределены после
отказа одного из компонентов. Суммы факторов, необходимых для
активации каждой копии базы данных на любом сервере, должны быть
равными или практически равными. Это приведет к приблизительно
равномерному распределению баз данных после отказа, если, конечно,
репликация правильно настроена и функционирует надлежащим
образом.
Стандартные блоки
Чтобы соблюдать предыдущие принципы разработки, рекомендуется размещать копии баз данных в определенной последовательности, которая обеспечит симметричное распределение всех активных копий по всем доступным серверам. Распределение копий баз данных основывается на концепции стандартных блоков.
Первый стандартный блок (называется стандартным блоком 1 уровня) основан на количестве серверов почтовых ящиков, которые будут содержать копии активных баз данных. Предположим, что это количество равно N. N определяет не только количество серверов почтовых ящиков, но и количество баз данных в пределах стандартного блока. Одна активная копия базы данных размещена на каждом сервере, что создает диагональную последовательность.diagonal pattern. Как и в предыдущем примере, имеется 4 сервера почтовых ящиков и 20 баз данных почтовых ящиков. Размер первого стандартного блока 1 уровня равен 4, как показано на следующем рисунке.
Та же последовательность повторяется для каждого оставшегося набора стандартных блоков 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 вторые копии будут активированы на всех трех оставшихся серверах вместо активации нескольких баз данных на одном сервере.
Эта последовательность повторяется для каждого оставшегося второго набора стандартных блоков. Так как используется 20 баз данных, в этом примере используется два набора стандартных блоков 2 уровня. Обратите внимание, что вторая копия DB13 размещена на сервере Server2.
Чтобы лучше понять эту логику, сравните размещение копий баз данных 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) … (N – M + 1) = N!/(N – M)! = 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, активные копии распределены по шести серверам в одном стандартном блоке.
Для каждого сервера, на котором размещены активные копии, вторые копии баз данных распределены как можно равномерно по оставшимся рядовым серверам. При этом в одной серверной стойке не размещаются две копии одной и той же базы данных. В этом примере вместо формулы стандартного блока второго уровня 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 активных баз данных.
При одновременном отказе двух серверов (разные стойки) оставшиеся четыре сервера будут содержать приблизительно одинаковое количество активных баз данных почтовых ящиков.
При одновременном отказе двух серверов (одна стойка) оставшиеся четыре сервера будут содержать одинаковое количество активных баз данных почтовых ящиков.