Автоматическое восстановление

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 — максимальное количество ВМ, на которое можно превысить целевой размер группы.

    Тогда Instance Groups сначала создаст новую ВМ, дождется пока она пройдет все проверки, а затем удалит ВМ, которая не прошла проверку.

  • Чтобы Instance Groups перезагружал ВМ, которые не прошли проверку, задайте max_unavailable — максимальное количество ВМ, которые можно сделать недоступными одновременно. Instance Groups будет стремиться не превышать этого значения при автоматическом восстановлении.

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

  • Чтобы Instance Groups одновременно использовал все способы восстановления, задайте и max_expansion, и max_unavailable.

    Допустим, вы указали max_unavailable = 1 и max_expansion = 1. Когда одна из ВМ не пройдет проверку, Instance Groups начнет одновременно перезапускать эту ВМ и создавать новую. Какая из этих ВМ первой пройдет все проверки успешно, та и будет работать, а вторая будет удалена.

  • Чтобы ограничить скорость восстановления и развертывания, вы также можете использовать параметры:

    • max_creating — ограничивает количество ВМ, которые вводятся в эксплуатацию одновременно. Это создаваемые и запускаемые ВМ в статусах CREATING и STARTING).
    • max_deleting — ограничивает количество ВМ, которые выводятся из эксплуатации одновременно. Это останавливаемые ВМ в статусе STOPPING. При удалении ВМ, Instance Groups всегда сначала останавливает ее, поэтому для ограничения используется именно этот статус.

Изменение статуса ВМ при восстановлении

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 начнет создавать сразу три ВМ: две в рамках увеличения группы, одну в рамках восстановления.

См. также