Skip to content

SFS-021 Liveness probes over commands

Мотивация

Некоторые worker-ы написанные на golang настолько загружены что им некогда отвечать на liveness пробы по HTTP/TCP.

Решение - делать пробы через команду

Данное решение подходит только для work/job и не применяется для webserver-ов.

Решение

В образе приложения появляется команда (скрипт, программа или тп) /is_live которая возвращает статус 0 если приложение живо, и статус 1 если приложение мертво.

Реализация со стороны приложения

Вариант 1

  1. Приложение регулярно (регулярность определятся разработчиком и отмечается в документации по эксплуатации) создает файл, а если файл есть, то обновляет ему modification time.
  2. В образ добавляется команда (программи/скрипт) /is_live которая проверяет наличие файла, удаляет его если он есть и возвращает exit-статус 0, если файла нет, возвращает exit-статус 1

Вариант 2

  1. Приложение регулярно (регулярность определятся разработчиком и отмечается в документации по эксплуатации) создает файл, а если файл есть, то обновляет ему modification time.
  2. В образ добавляется команда (программи/скрипт) /is_live которая проверяет наличие файла и возвращает exit-статус 0 если время модификации файла не старше ${LIVENESS_TIMEOUT} (по-умолчанию 30) секунд, в образом возвращает exit-статус 1