Внешней программой, очевидно. monit'ом, если это автономная инсталляция чего-то супермаленького из одного сервера. Полноценным мониторингом, если это более-менее масштабный сервис. И, кстати, да, вот это конкретно вещь, которую я сильно не люблю в systemd.
В общем случаи методом "CRITICAL - Service blah is DOWN" по SMS :) (т.к. предполагается что "лежит" это не штатное состояние сервиса и если уж сервис упал, то вмешательство админа или разработки строго обязательно).
В частных случаях может быть совершенно по-разному. Различных тулзов для перезапуска или вочдога хватает.
То есть с помощью отдельных инструментов каждый раз для каждого сервиса, или monkeyadmin'а, который бегает по серверам и чинит упавшие сервисы?
Вмешательство админа по случаю падения софтинки выглядит куда разумнее, когда софтинка упала и поднялась, а админ выясняет почему, чем когда с момента CRITICAL пошёл тикать даунтайм.
Почему разных? Выбрал что-то что тебе нравится (или устраивает) и везде пользуешься.
И в моей практике чаще встречался софт для которого "падать" не являлось штатным поведением и если софтина упала, она требует сначала разобраться почему, а уже потом вернуть на место (иначе упадет повторно на том же месте с шансом 100%).
> Вмешательство админа по случаю падения софтинки выглядит куда разумнее, когда софтинка упала и поднялась, а админ выясняет почему, чем когда с момента CRITICAL пошёл тикать даунтайм.
Да почти никогда это не выглядит разумнее, если только это не какой-то специфичный софт, про который известно, что он регулярно падает по непонятным причинам и чинить это нецелесообразно. И то, я бы такое скорее от греха подальше засовывал в отдельный контейнер и рестартовал контейнер целиком - мало ли чего.
Просто так поднимать упавший, скажем, из-за сегфолта софта - с большой вероятностью либо провоцировать дальнейший data corruption, либо продолжение атаки (какого-нибудь брутфорса смещения в стеке), либо, в самом безобидном случае, да, падение в том же месте повторно и бесконечный цикл "упал-подняли-упал-подняли", жрущий ресурсы. (Да, я в курсе про "looping too fast")
По большэй части -- nagiosом. Упавшый демон поднимает админа, тот выясняет, что там блин за хукеры пролезли.
Но есть, конечно, исключения. mysql, например. Для него есть скриптик mysqld_safe, который его перезапускает. Или xl2tpd, его вообще в кроне и service start каждые три минуты если нет стоп-файла.
Ну и да, банальное: mysqld_safe ужэ вроде как нинужэн, но я всё равно предпочитаю не связываться лишний раз с mysql. Вот именно поэтому -- что нехер падать.
Comments 91
Reply
А 'respawn' в /etc/init/* на что?
Но вообще - верните мне мой няшный иниттаб, да
Reply
Reply
PS systemd такой альтернативой не является.
Reply
В частных случаях может быть совершенно по-разному. Различных тулзов для перезапуска или вочдога хватает.
Reply
Вмешательство админа по случаю падения софтинки выглядит куда разумнее, когда софтинка упала и поднялась, а админ выясняет почему, чем когда с момента CRITICAL пошёл тикать даунтайм.
Reply
И в моей практике чаще встречался софт для которого "падать" не являлось штатным поведением и если софтина упала, она требует сначала разобраться почему, а уже потом вернуть на место (иначе упадет повторно на том же месте с шансом 100%).
Reply
Да почти никогда это не выглядит разумнее, если только это не какой-то специфичный софт, про который известно, что он регулярно падает по непонятным причинам и чинить это нецелесообразно. И то, я бы такое скорее от греха подальше засовывал в отдельный контейнер и рестартовал контейнер целиком - мало ли чего.
Просто так поднимать упавший, скажем, из-за сегфолта софта - с большой вероятностью либо провоцировать дальнейший data corruption, либо продолжение атаки (какого-нибудь брутфорса смещения в стеке), либо, в самом безобидном случае, да, падение в том же месте повторно и бесконечный цикл "упал-подняли-упал-подняли", жрущий ресурсы. (Да, я в курсе про "looping too fast")
Reply
Но есть, конечно, исключения. mysql, например. Для него есть скриптик mysqld_safe, который его перезапускает. Или xl2tpd, его вообще в кроне и service start каждые три минуты если нет стоп-файла.
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment