Сведения об алгоритме переполнения кластера в System Center 2012 R2 Virtual Machine Manager

В этой статье описаны четыре подхода к алгоритму превышения связи кластера в Microsoft System Center 2012 R2 Virtual Machine Manager (VMM 2012 R2). Здесь можно найти пример , который поможет вам понять алгоритм.

Исходная версия продукта: Microsoft System Center 2012 R2 Virtual Machine Manager
Исходный номер базы знаний: 3023928

Обзор подходов в алгоритме

Цель проверка переполнения кластера VMM 2012 R2 — определить, не будут ли виртуальные машины перезапущены в случае одновременного сбоя узлов резервирования кластера (R). Предполагается, что кластер будет перефиксирован до тех пор, пока не будет доказано обратное. Используются четыре подхода, и если какой-либо из них показывает, что кластер не переопределен, состояние кластера устанавливается на ОК. В противном случае для состояния кластера задано значение Overcommitted.

Четыре подхода можно визуализировать в таблице следующим образом:

Методы проверки Метод Proof Метод Slot
Простая проверка Подтверждение простого Простой слот
Проверка полной сложности Подтверждение полного Слот-полный

Четыре метода проверка

Метод Proof

Метод проверки работает, определяя, достаточно ли виртуальных машин для заполнения всех узлов до точки, когда самая большая виртуальная машина не может запуститься ни на одном из узлов. Он рассматривает наихудший случай, когда последняя выполняется отработка отказа самой крупной виртуальной машины, а также худший случай, когда каждый узел имеет 1 байт недостаточно памяти для запуска виртуальной машины.

Метод Slot

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

Простая проверка

В простом проверка не учитывается конкретный набор узлов, не завершив ошибку. Вместо этого он делает наихудшие предположения на уровне кластера. Самый большой размер виртуальной машины используется в качестве самой большой виртуальной машины во всем кластере. Размеры виртуальных машин при отработке отказа не определяются из определенного набора узлов. Вместо этого подход использует теоретическую самую высокую сумму, которую можно достичь из узлов R , завершающихся сбоем. Аналогичным образом, количество памяти или слотов, доступных на других узлах, — это сумма для наименьших узлов N-R (где N представляет размер кластера).

Проверка полной сложности

Полный проверка сложности выполняет итерацию по каждому возможному набору узлов R, которые завершаются сбоем. Он пересчитывает размер слота, наибольший размер виртуальной машины, размер памяти целевого узла и количество слотов. Он делает это на основе каждой возможной комбинации неудачных узлов. Количество наборов, которое необходимо учитывать, — Choose(N,R). Это число может стать непомерно низким для больших значений N и R. Так как это число приблизительно пропорционально N^R, это проверка выполняется только в том случае, если N^R меньше 5000. Поэтому на практике проверка полной сложности выполняется только в ситуациях, указанных в следующей таблице:

Резерв кластера (R) Максимальный размер кластера (N)
1 4,999
2 70
3 17
4 8

Примечание.

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

Вычисления и алгоритмы

Определения значений и предварительные вычисления в алгоритме

Важно!

Значения AdditionalMemory и AvailableSlots нельзя вычислить с помощью значений из одного узла. Значение или SlotSize из исходного LargestClusterVM узла, в котором произошел сбой, должно быть известно. В простом проверка они равны крупнейшей виртуальной машине в кластере. В полной сложности проверка они равны крупнейшей виртуальной машине с высоким уровнем доступности (HA) в наборе неудачных узлов. Некоторые узлы завершатся сбоем, а другие узлы получат такую рабочую нагрузку. Вычисления свободного места неверны, если они не были завершены для неисправных узлов, а не для принимающего узла.

Значения кластера

В следующей таблице показаны определения значений кластера:

Value name Определение
N Общее количество узлов в кластере
R Значение резерва кластера (то есть максимальное число одновременных сбоев модели)
H Оставшиеся работоспособные узлы, которые будут использоваться в качестве целевых объектов для отработки отказа (H = N - R)

Значения узла

Для каждого узла предварительно вычисляются следующие значения. При вычислении значения для LargestClusterVMMB или SlotSizeMBоно пересчитывается в каждой итерации полной проверки сложности.

Value name Определение
AvailableMemory Это общий объем используемой памяти узла для виртуальных машин с отработки отказа.
AvailableMemory = общий объем памяти узла — существующие виртуальные машины — резерв узла
AdditionalMemory Это строка заполнения, после которой узел больше не сможет запустить самую большую виртуальную машину, на которой выполняется отработка отказа.
AdditionalMemory = Max(AvailableMemory - LargestClusterVM,0)
HAVMs Это общее количество виртуальных машин с высоким уровнем доступности (HA) на этом узле.
AvailableSlots Это количество виртуальных машин с отработки отказа, которые этот узел гарантированно сможет запустить.
AvailableSlots = AvailableMemory / SlotSize, округлено вниз
UsedSlots Это количество виртуальных машин с высоким уровнем доступности на этом узле.
TotalSlots Общее количество слотов на узле.
TotalSlots = AvailableSlots + UsedSlots

Примечание.

  • Буфер размером 64 мегабайта (МБ) добавляется в память каждой виртуальной машины, чтобы учесть нагрузку на гипервизор.
  • Количество остановленных, сохраненных, приостановленных и работающих виртуальных машин учитывается. Пользователь клиента, запускающий остановленную виртуальную машину, должен учитываться при вычислении алгоритмом превышения.
  • Если в кластере присутствуют виртуальные машины с динамической памятью, используется их текущая потребность в памяти.

Алгоритмы в четырех подходах

Простой слот

Алгоритмы в простом подходе слота следующие:

  • SlotSize = крупнейшая виртуальная машина с высоким уровнем доступности в кластере.
  • Вычислите AvailableSlotsзначения , UsedSlotsи TotalSlots для каждого узла.
  • TotalSlotsRemaining = сумма наименьших значений H для TotalSlots.
  • Если Sum(UsedSlots) <= TotalSlotsRemaining, кластер не переопределен.

Слот-полный

Итерация по каждому набору узлов R , в которых произошел сбой. Алгоритмы в подходе с полным слотом:

  • SlotSize = крупнейшие виртуальные машины с высоким уровнем доступности на узлах R , завершающихся сбоем.
  • Вычислите AvailableSlotsзначения , UsedSlotsи TotalSlots для каждого узла.
  • TotalSlotsRemaining = сумма TotalSlots на всех неисправных узлах.
  • Сравните значения Sum(UsedSlots) и TotalSlotsRemaining :
    • Если значение sum(UsedSlots) >TotalSlotsRemaining, кластер может быть переопределен.
    • Если Sum(UsedSlots) <= TotalSlotsRemaining для каждого набора неудачных узлов, кластер не переопределен.

Подтверждение простого

Алгоритмы в простом подходе к проверке:

  • LargestClusterVM = крупнейшая виртуальная машина с высоким уровнем доступности в кластере.
  • Вычислите AdditionalMemory, HAVMs для всех узлов.
  • TotalAdditionalSpace = сумма наименьших значений H значения AdditionalMemory.
  • TotalOrphanedVMs = (сумма наибольших значений R ) HAVMsLargestClusterVM.
  • Сравните значения:
    • Если TotalOrphanedVMs<= TotalAdditionalSpace, кластер не переопределен.
    • Если TotalOrphanedVMs имеет значение 0, LargestClusterVM>0 и TotalAdditionalSpace = 0, кластер может быть переопределен.

Подтверждение полного

Итерация по каждому набору узлов R , в которых произошел сбой. Алгоритмы в подходе proof-full следующие:

  • LargestClusterVM = самая большая виртуальная машина с высоким уровнем доступности на узлах R , в котором происходит сбой.
  • Вычислите AdditionalMemory, HAVMs для всех узлов.
  • TotalAdditionalSpace = сумма AdditionalMemory на неисправных узлах.
  • TotalOrphanedVMs = (сумма на узлах HAVMsMBR , завершившиеся сбоем) — LargestClusterVM.
  • Сравните значения:
    • Если TotalOrphanedVMs>TotalAdditionalSpaceзадано значение , кластер может быть переопределен.
    • Если TotalOrphanedVMs = 0, LargestClusterVM>0 и TotalAdditionalSpaceMB = 0, кластер может быть превышен.
    • Если TotalOrphanedVMs<TotalAdditionalSpace для каждого набора неудачных узлов кластер не переопределен.

Объединение подходов и примеров

Ни один из методов не показывает, что кластер переопределен. Они могут показывать только, что кластер не переопределен. Если ни один из используемых методов не может показать, что кластер не переусервирован, кластер помечается как перефиксированный. Если даже один метод показывает, что кластер не переопределен, кластер помечается как ОК, а вычисление немедленно останавливается.

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

Пример для этих подходов

Этот пример разработан специально для того, чтобы быть пограничным вариантом. Только один метод (proof-full) позволяет показать, что кластер не перегружен.

Предположим, что кластер имеет четыре узла по 32 гигабайта (ГБ). Для резервирования памяти узла задано значение 9 ГБ. Буфер размером 64 МБ не добавляется к размерам виртуальных машин в этом примере только для упрощения чисел. Резерв кластера (R) имеет значение 2.

Узел Параметры виртуальной машины AvailableMemory HAVM Крупнейшая виртуальная машина
Узел A 4 ГБ HA, 4 ГБ HA 15 ГБ 8 ГБ 4 ГБ
Узел B 4 ГБ HA, 4 ГБ HA 15 ГБ 8 ГБ 4 ГБ
Узел C 8 ГБ с высоким уровнем доступности, 8 ГБ без высокой доступности 7 ГБ 8 ГБ 8 ГБ
Узел D 6 ГБ без высокой доступности, 2 ГБ HA, 2 ГБ HA 13 ГБ 4 ГБ 2 ГБ

Простой пример слота

Размер слота = 8 ГБ

Узел AvailableSlots UsedSlots TotalSlots
Узел A 1 2 3
Узел B 1 2 3
Узел C 0 1 1
Узел D 1 2 3

Из таблицы мы знаем следующие значения:

  • TotalSlotsRemaining = два наименьших TotalSlots значения = (1+3) = 4
  • TotalUsedSlots = 2+2+2+1 = 7

Так как TotalUsedSlots больше, чем TotalSlotsRemaining, подход завершился ошибкой.

Пример с полным слотом

TotalUsedSlots = 7, независимо от того, какие узлы завершаются сбоем

Сбой узлов Размер слота AvailableSlots на оставшихся узлах TotalSlots на оставшихся узлах
A, B 4 ГБ C: 1, D: 3 C: 2, D: 5. Всего: 7 - Хорошо
A, C 8 ГБ B: 1, D: 1 Б: 3, Г: 3. Всего: 6 — сбой
A, D 4 ГБ B: 3, C: 1 B: 5, C: 2. Всего: 7 - Хорошо
B, C 8 ГБ A: 1, D: 1 A: 3, D: 3. Всего: 6 — сбой
B, D 4 ГБ A: 3, C: 1 A: 5, C: 2. Всего: 7 - Хорошо
C, D 8 ГБ A: 1, B: 1 A: 3, B: 3. Всего: 6 — сбой

Так как некоторые наборы неудачных узлов привели к TotalUsedSlots>TotalSlotsRemaining, подход завершился ошибкой.

Простой пример проверки

LargestClusterVM = 8 ГБ

Узел AdditionalMemory
Узел A 7 ГБ
Узел B 7 ГБ
Узел C 0 ГБ
Узел D 5 ГБ

Из таблицы мы знаем следующие значения:

  • TotalAdditionalSpace = два наименьших AdditionalMemory значения = 0 ГБ + 5 ГБ = 5 ГБ.
  • TotalOrphanedVMs = (8 ГБ + 8 ГБ) - 8 ГБ = 8 ГБ.

Так как TotalOrpanedVMsMB>TotalAdditionalSpaceподход завершился ошибкой.

Пример с полным подтверждением

Сбой узлов КрупнейшийHAVM AdditionalMemory Потерянные виртуальные машины OrphanedVMs — LargestHAVM <= AdditionalMemory
A, B 4 ГБ C: 3, D: 9. Всего 12. A: 8, B: 8, Всего 16. 16-4<=12 - хорошо
A, C 8 ГБ B: 7, D: 5. Всего 12. A: 8, C: 8, Всего 16. 16-8<=12 - хорошо
A, D 4 ГБ B: 11, C: 3. Всего 14. A: 8, D: 4, Всего 12. 12-4<=14 - хорошо
B, C 8 ГБ A: 7, D: 5. Всего 12. B: 8, C: 8, Всего 16. 16-8<=12 - хорошо
B, D 4 ГБ A: 11, C: 3. Всего 14. B: 8, D: 4, Всего 12. 12-4<=14 - хорошо
C, D 8 ГБ A: 7, B: 7. Всего 14. C: 8, D: 4, Всего 12. 12-8<=14 - хорошо

Так как каждый набор узлов, завершшихся сбоем, приводил к OrphanedVMs - <LargestHAVM= AdditionalMemory, подход выполнен успешно, и весь кластер можно пометить как ОК.