Назад | Перейти на главную страницу

Почему проверка статуса Amazon EC2 не отвечает на запросы?

ОПАСНОСТЬ!

Не запускайте эту команду для «тестирования», если вы не готовы к сбою и / или принудительной перезагрузке системы.

Я сделал следующие шаги:

Я ожидал Проверка статуса экземпляра потерпеть неудачу. Однако обе проверки статуса продолжают проходить более чем через 20 минут. Экземпляр не отвечает на SSH и ping, хотя Nmap сообщает, что порт 22 открыт.

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

У меня два вопроса:

  1. Почему экземпляр проходит обе проверки статуса?
  2. Есть ли другое решение (кроме оплаты 18 долларов в месяц за балансировщик нагрузки, который не используется для балансировки нагрузки) для завершения инстансов, которые перестают отвечать на запросы? Могу ли я что-нибудь сделать с будильником облачного режима?
    • В идеале я бы хотел, чтобы экземпляр периодически сообщал о своем состоянии, и если он не может сделать это в течение определенного времени, прекратить его (и пусть моя группа автомасштабирования позаботится обо всем остальном).

Моя сессия SSH:

Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-57-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Thu Jul  9 18:50:39 UTC 2015

  System load: 0.0               Memory usage: 7%   Processes:       47
  Usage of /:  16.8% of 7.75GB   Swap usage:   0%   Users logged in: 0

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud


Last login: [[redacted]]
ubuntu@ip-172-31-18-225:~$ :(){ :|: & };:
[1] 1218
ubuntu@ip-172-31-18-225:~$ -bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
Connection to 52.2.62.141 closed.

Изменить: Итак, моя настоящая цель - сократить разрыв между тем, что проверяет статус, и проверкой того, что мое приложение работает. Если проверки состояния действительно проверяют, правильно ли работает ядро, мне кажется, что я мог бы использовать сторожевой таймер программного обеспечения ядра (например, модуль ядра softdog), чтобы закрыть этот пробел.

Не отвечает! = Нет сердцебиения. Ядро все еще работает. AWS не может узнать, что вы использовали всю свою память.

Мониторинг AWS Cloudwatch - это тот минимум, который вам следует делать. Если вам нужен более подробный мониторинг, вам нужно будет свернуть свой собственный.

Поскольку проверки состояния уже заботятся о том, чтобы ядро ​​было запущено, достаточно использовать мягкая собака модуль ядра. Хотя это программный сторожевой таймер, тот факт, что это модуль ядра, означает, что любой случай, когда сам сторожевой таймер перестает отвечать, также будет обнаружен Проверка статуса экземпляра выполняется AWS, что, в свою очередь, завершит работу экземпляра EC2.

Вот что я сделал в своем сценарии установки (это был Ubuntu AMI):

cat >>/etc/modules <<EOF
softdog
EOF

apt-get install watchdog

cat >>/etc/watchdog.conf <<EOF
interval = 10
logtick = 60
max-load-1 = 24
max-load-5 = 18
max-load-15 = 12
min-memory = 65536
watchdog-device = /dev/watchdog0
ping = 8.8.8.8
interface = eth0
test-binary = /path/to/my/health/check/script.sh
test-timeout = 30
realtime = yes
priority = 1
EOF

...other setup stuff...

reboot

# If you don't want to reboot, you can instead do:
modprobe softdog
service watchdog restart