Сведения об алгоритме переполнения кластера в 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
для каждого набора неудачных узлов, кластер не переопределен.
- Если значение sum(
Подтверждение простого
Алгоритмы в простом подходе к проверке:
LargestClusterVM
= крупнейшая виртуальная машина с высоким уровнем доступности в кластере.- Вычислите
AdditionalMemory
,HAVMs
для всех узлов. TotalAdditionalSpace
= сумма наименьших значений H значенияAdditionalMemory
.TotalOrphanedVMs
= (сумма наибольших значений R )HAVMs
—LargestClusterVM
.- Сравните значения:
- Если
TotalOrphanedVMs
<=TotalAdditionalSpace
, кластер не переопределен. - Если
TotalOrphanedVMs
имеет значение 0,LargestClusterVM
>0 иTotalAdditionalSpace
= 0, кластер может быть переопределен.
- Если
Подтверждение полного
Итерация по каждому набору узлов R , в которых произошел сбой. Алгоритмы в подходе proof-full следующие:
LargestClusterVM
= самая большая виртуальная машина с высоким уровнем доступности на узлах R , в котором происходит сбой.- Вычислите
AdditionalMemory
,HAVMs
для всех узлов. TotalAdditionalSpace
= суммаAdditionalMemory
на неисправных узлах.TotalOrphanedVMs
= (сумма на узлахHAVMsMB
R , завершившиеся сбоем) —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) = 4TotalUsedSlots
= 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
, подход выполнен успешно, и весь кластер можно пометить как ОК.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по