ОПАСНОСТЬ!
Не запускайте эту команду для «тестирования», если вы не готовы к сбою и / или принудительной перезагрузке системы.
Я сделал следующие шаги:
Я ожидал Проверка статуса экземпляра потерпеть неудачу. Однако обе проверки статуса продолжают проходить более чем через 20 минут. Экземпляр не отвечает на SSH и ping, хотя Nmap сообщает, что порт 22 открыт.
Я надеялся использовать проверку состояния, чтобы определить, реагирует ли экземпляр, и чтобы его группа автомасштабирования прекратила работу и заменила ее, но не похоже, что я смогу это сделать.
У меня два вопроса:
Моя сессия 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