Я узнал, что состояние экземпляра не изменяется во время перезагрузки. Итак, есть ли способ проверить, только что экземпляр завершил перезагрузку?Как программно проверить, завершил ли экземпляр EC2 перезагрузку?
ответ
Перезагрузка - это событие уровня ОС, поэтому гипервизор не будет знать о перезагрузке ОС. Во время перезагрузки на уровне API/CLI нет изменений, которые вы можете обнаружить из инструментов командной строки, как вы отметили.
Однако, если у вас включен ICMP Echo Request в группе Inbound Security, вы можете использовать PING для сообщения о возможности доступа к сети для экземпляра. Это похоже на то, что делает проверка состояния EC2, когда он сообщает о состоянии здоровья.
Во время перезагрузки вы увидите PING пакеты упал на мгновение:
Reply from 10.0.0.1: bytes=32 time=97ms TTL=101
Reply from 10.0.0.1: bytes=32 time=80ms TTL=101
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 10.0.0.1: bytes=32 time=82ms TTL=101
Reply from 10.0.0.1: bytes=32 time=77ms TTL=101
Reply from 10.0.0.1: bytes=32 time=106ms TTL=101
, а затем ответы пакет возврата, после того, как экземпляр завершил его перезагрузки.
Я часто использовал PING таким образом, чтобы определить, когда завершена перезагрузка. Вы можете сделать то же самое программно.
Используя Node SDK, вы можете использовать instanceStatusOk
для проверки после того, как rebootInstances
instanceStatusOk
> Ожидание состояния instanceStatusOk путем периодического вызова подстилающей EC2.describeInstanceStatus() операцию каждые 15 секунд (при наиболее 40 раз).
Пример: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#instanceStatusOk-waiter
После вызова Перезагрузка статус экземпляра может быть ОК (30 секунд) => Иниц (3 секунды) => OK. Если этот переход произошел в течение 5 секунд, то опрос каждые 15 секунд мог пропустить его. – wz366