SFS-021 Liveness probes over commands¶
Мотивация¶
Некоторые worker-ы написанные на golang настолько загружены что им некогда отвечать на liveness пробы по HTTP/TCP.
Решение - делать пробы через команду
Данное решение подходит только для work/job и не применяется для webserver-ов.
Решение¶
В образе приложения появляется команда (скрипт, программа или тп) /is_live которая возвращает статус 0 если приложение живо, и статус 1 если приложение мертво.
Реализация со стороны приложения¶
Вариант 1¶
- Приложение регулярно (регулярность определятся разработчиком и отмечается в документации по эксплуатации) создает файл, а если файл есть, то обновляет ему modification time.
- В образ добавляется команда (программи/скрипт)
/is_liveкоторая проверяет наличие файла, удаляет его если он есть и возвращает exit-статус0, если файла нет, возвращает exit-статус1
Вариант 2¶
- Приложение регулярно (регулярность определятся разработчиком и отмечается в документации по эксплуатации) создает файл, а если файл есть, то обновляет ему modification time.
- В образ добавляется команда (программи/скрипт)
/is_liveкоторая проверяет наличие файла и возвращает exit-статус0если время модификации файла не старше ${LIVENESS_TIMEOUT} (по-умолчанию 30) секунд, в образом возвращает exit-статус1