Почему мой экземпляр ec2 иногда не прерывается, когда я использую 'shutdown now'?

Я запускаю скрипт пользовательских данных при запуске компьютера ec2, который выключает компьютер после проверки состояния выхода последней выполненной команды. Я подтвердил, что последняя выполненная команда была выполнена успешно, поэтому я не уверен, почему машина не завершает работу. Это происходит не каждый раз, а только тогда, когда скрипт пользовательских данных быстро завершается.

Вот конец моего bash-скрипта (после выполнения нескольких команд):

python myscript.py
ret=$?
echo $ret
if [[ $ret -eq 0 ]]; then
    shutdown now
fi

Это приводит к следующему выводу, но не завершает экземпляр:

0
Cloud-init v. 0.7.9 running 'init-local' at Wed, 28 Nov 2018 20:15:38 +0000. Up 11.12 seconds.
Cloud-init v. 0.7.9 running 'init' at Wed, 28 Nov 2018 20:15:41 +0000. Up 14.67 seconds.
ci-info: ++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++
ci-info:  Device   Up     Address         Mask      Scope      Hw-Address
ci-info:   lo:    True   127.0.0.1     255.0.0.0      .            .
ci-info:   lo:    True       .             .          d            .
ci-info:  eth0:   True  10.90.1.222  255.255.255.0    .    0e:c9:6e:60:5d:e8
ci-info:  eth0:   True       .             .          d    0e:c9:6e:60:5d:e8
ci-info: +++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++
ci-info:  Route    Destination     Gateway       Genmask      Interface  Flags
ci-info:    0        0.0.0.0      10.90.1.1      0.0.0.0         eth0      UG
ci-info:    1       10.90.1.0      0.0.0.0    255.255.255.0      eth0      U
ci-info:    2    169.254.169.254   0.0.0.0   255.255.255.255     eth0      UH
Cloud-init v. 0.7.9 running 'modules:config' at Wed, 28 Nov 2018 20:15:44 +0000. Up 17.35 seconds.
Cloud-init v. 0.7.9 running 'modules:final' at Wed, 28 Nov 2018 20:15:45 +0000. Up 18.45 seconds.
Connection to 10.90.1.222 closed by remote host. 20:15:46 +0000. Datasource DataSourceEc2.  Up 19.56 seconds

Я пытаюсь определить, если Cloud-init как-то мешает завершению экземпляра. Это потому, что сценарий завершен, в то время как другие фоновые процессы еще инициализируются?

1 ответ

У меня недавно была эта проблема, и решением, которое работало для меня, было изменение команды выключения для явного запроса выключения питания вместо остановки:

shutdown -P now

Документы AWS по адресу https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html гласят:

По умолчанию, когда вы инициируете отключение из экземпляра, поддерживаемого Amazon EBS (с помощью такой команды, как shutdown или poweroff), экземпляр останавливается (обратите внимание, что halt не выдает команду poweroff и, если используется, экземпляр не завершается; вместо этого он поместит процессор в HLT, и экземпляр останется запущенным).

Другие вопросы по тегам