Дункану Эппингу задали вопрос, основанный на материале, который он написал несколько лет назад для углублённого разбора механизма кластеризации VMware vSphere («Clustering Deepdive»).
В этой статье описывается последовательность действий, которые HA выполняет при возникновении отказа. Например, при выходе из строя вторичного (slave/secondary) узла последовательность выглядит так:
- T – сбой вторичного узла.
- T+3 сек – основной узел начинает мониторинг heartbeat-хранилищ в течение следующих 15 секунд.
- T+10 сек – узел помечается как недоступный, и основной узел начинает пинговать управляющую сеть (management network) отказавшего узла. Пинг непрерывно продолжается в течение 5 секунд.
- T+15 сек – если heartbeat-хранилища не настроены, узел объявляется «мёртвым».
- T+18 сек – если heartbeat-хранилища настроены, узел объявляется «мёртвым».
Таким образом, в зависимости от того, есть ли настроенные heartbeat-хранилища, процедура занимает либо 15, либо 18 секунд. Значит ли это, что виртуальные машины сразу же перезапускаются, и если да, то сколько это займёт времени? На самом деле нет, они не перезапускаются моментально, потому что по завершении этой последовательности отказавший вторичный узел только объявляется недоступным. Затем необходимо проверить статус виртуальных машин, которые могли быть затронуты отказом, составить список ВМ для перезапуска и определить их размещение.
Запрос на размещение отправляется либо в DRS, либо обрабатывается самим HA, в зависимости от того, включён ли DRS и доступен ли сервер vCenter. После определения размещения основной (master) узел отправит на хосты команду перезапустить указанные виртуальные машины. После получения списка ВМ хосты начинают их перезапускать партиями по 32 штуки, при этом применяется установленный приоритет и порядок перезапуска. Этот процесс легко может занять 10–15 секунд (и даже больше), что означает, что в идеальных условиях перезапуск ВМ начнётся примерно через 30 секунд после сбоя. Но это лишь момент запуска виртуальной машины — сама ВМ и размещённые на ней сервисы, конечно же, не будут доступны через эти 30 секунд. Процесс включения машины может занять от нескольких секунд до нескольких минут, в зависимости от размера ВМ, гостевой ОС и сервисов, которые должны быть запущены.
Таким образом, хотя для определения и объявления отказа vSphere HA требуется всего 15–18 секунд, на самом деле процесс гораздо более сложный.


