Автоматическое восстановление
Instance Groups регулярно проверяет, что ВМ в вашей группе работают корректно. Если ВМ остановилась или приложение слишком долго отвечает, Instance Groups попробует восстановить эту ВМ — перезапустит ее или создаст новую, в зависимости от политики развертывания.
Типы проверок
Для автоматического восстановления Instance Groups выполняет проверки двух типов:
Не путайте эти проверки с проверкой состояния в сетевом балансировщике, которая не приводит к автоматическому восстановлению ВМ. Она влияет только на процесс развертывания: когда во время запуска ВМ перейдет в статус OPENING_TRAFFIC
, Instance Groups будет ждать, пока в балансировщике состояние ВМ станет HEALTHY
, после этого Instance Groups прекратит следить за состоянием ВМ в балансировщике.
Проверка, что ВМ работает
Instance Groups раз в несколько секунд автоматически проверяет статус ВМ в Compute Cloud. Если ВМ остановилась или произошла ошибка (статусы STOPPED
, ERROR
, CRASHED
), Instance Groups попробует перезапустить ее, а также создаст новую ВМ, если это позволяет политика развертывания.
Проверка состояния приложения на ВМ
Эта проверка позволит обнаружить, что приложение на вашей ВМ зависло, завершило работу или слишком долго отвечает. Вы можете включить проверку состояния приложения при создании или изменении ВМ.
Если вы включили эту проверку, Instance Groups будет с заданной периодичностью опрашивать статус приложения на ВМ все время, пока группа ВМ находится в статусе ACTIVE
.
Рекомендации для групп с сетевым балансировщиком
Если вы создали группу с сетевым балансировщиком, то для проверки в Instance Groups выставляйте более мягкие настройки, чем для проверки состояния в балансировщике. Балансировщик распределяет нагрузку на приложение, а Instance Groups только следит за работоспособностью приложения.
Например, если в сетевом балансировщике вы задали время ожидания ответа — 1 секунда, то в Instance Groups выставьте 30 секунд. Если приложение не отвечает 3-5 секунд, возможно оно не справляется с текущим потоком трафика. А если приложение не отвечает более 30 секунд, скорее всего оно совсем не работает и ВМ необходимо восстановить.
Особенности автоматического восстановления
Восстановление и политики развертывания
Для восстановления ВМ Instance Groups может пересоздавать или перезапускать ВМ. Какой метод восстановления использовать, определено настройками политики развертывания.
-
Создание новых ВМ
Instance Groups будет создавать новые ВМ вместо тех, которые не прошли проверку, если в настройках политики развертывания разрешено превышение целевого размера группы. Задать максимальное количество ВМ, на которое разрешено превысить целевой размер группы, можно с помощью параметраmax_expansion
. Допустимые значения: от0
до100
. Тогда Instance Groups сначала создаст новую ВМ, дождется, пока она пройдет все проверки, а затем удалит ВМ, которая не прошла проверку. -
Перезагрузка ВМ
Instance Groups будет перезагружать ВМ, которые не прошли проверку, если в настройках политики развертывания разрешено уменьшение целевого размера группы. Задать максимальное количество ВМ, которые разрешается сделать недоступными одновременно, можно с помощью параметраmax_unavailable
. Допустимые значения: от0
до100
. Instance Groups будет стремиться не превышать этого значения при автоматическом восстановлении.Это ограничение не действует на ВМ в статусах
CRASHED
,ERROR
иSTOPPED
, так как в этих случаях ВМ уже считается недоступной и должна быть перезагружена немедленно.
Если одновременно задать значения max_expansion
и max_unavailable
, Instance Groups будет использовать оба метода восстановления.
Например, вы указали
max_expansion = 1
иmax_unavailable = 1
. Когда одна из ВМ не пройдет проверку, Instance Groups начнет одновременно перезапускать эту ВМ и создавать новую. ВМ, которая первая успешно пройдет все проверки, будет работать, а вторая будет удалена.
Чтобы ограничить скорость восстановления и развертывания, вы также можете задать:
-
Максимальное количество ВМ, которые вводятся в эксплуатацию одновременно, в значении параметра
max_creating
. Учитываются создаваемые и запускаемые ВМ в статусахCREATING
иSTARTING
.Допустимые значения: от
0
до100
. Значение0
— любое количество ВМ в рамках допустимых значений. -
Максимальное количество ВМ, которые выводятся из эксплуатации одновременно, в значении параметра
max_deleting
. Учитываются останавливаемые ВМ в статусеSTOPPING
, так как при удалении ВМ Instance Groups сначала останавливает ее.Допустимые значения: от
0
до100
. Значение0
— любое количество ВМ в рамках допустимых значений.
Изменение статуса ВМ при восстановлении
Instance Groups не будет восстанавливать ВМ, если это уже не требуется.
Например, если в группе из 10 ВМ все 10 стали недоступны, то при
max_unavailable = 3
Instance Groups перезапустит первые три ВМ. Если в это время остальные семь ВМ снова станут работоспособны, то Instance Groups не будет перезапускать их.При
max_expansion = 3
Instance Groups запустит создание трех новых ВМ. Старые ВМ не удаляются до тех пор, пока не будут созданы новые. Если в процессе создания все ВМ в группе снова станут работоспособны, то Instance Groups отменит создание новых ВМ.
Восстановление при обновлении конфигураций ВМ
Восстановление ВМ имеет более высокий приоритет, чем обновление конфигурации ВМ.
Допустим, у вас группа из 100 ВМ, а значение
max_unavailable = 1
. Когда вы обновите конфигурацию ВМ в группе, Instance Groups будет по очереди перезапускать машины, обновляя конфигурацию на них.Если в этот момент одна из ВМ не пройдет проверку состояния приложения, то Instance Groups поставит ее первой в очереди на перезапуск.
Восстановление при изменении размера группы
При уменьшении целевого размера группы в первую очередь удаляются те ВМ, которые не прошли проверку (если такие есть).
При увеличении целевого размера группы новые ВМ будут создаваться параллельно с восстановлением ВМ, не прошедших проверку, если это позволяют параметры max_creating
и max_expansion
:
Допустим, в группе 2 из 4 ВМ не прошли проверку состояния приложения. В этот момент целевой размер группы увеличился до 6 ВМ. Две ВМ необходимо создать, еще две восстановить.
Если
max_expansion = 1
, аmax_creating
не задано, то Instance Groups начнет создавать сразу три ВМ: две в рамках увеличения группы, одну в рамках восстановления.
Восстановление прерываемых ВМ
Автоматическое восстановление прерываемых ВМ будет происходить только, если в зоне доступности для этого достаточно вычислительных ресурсов. Если ресурсов недостаточно, Instance Groups продолжит автоматическое восстановление, когда появятся свободные ресурсы, но этот процесс может занять продолжительное время.
Прерываемые ВМ должны быть принудительно остановлены через 24 часа с момента запуска. Однако в таком случае есть риск, что вся группа ВМ перезапустится одновременно и перестанет обслуживать нагрузку запущенных приложений. Чтобы избежать этого, Instance Groups останавливает прерываемые ВМ в группе не ровно через 24 часа, а через случайный момент времени — от 22 до 24 часов.