All streams
Search
Write a publication
Pull to refresh

Comments 25

"Systemd - комплексная, глубоко интегрированная система инициализации и управления, которая..." превращает управление сервером в общение с "черным ящиком".
Для домохозяек с десктопом - самое то. Но сервер... Я на 100% должен контролировать его состояние, а не кланятся systrmd с просьбой сказать мне, зачем он 100 раз перегрузил упавший демон, а потом "ой, всё". Бездумно перегружать, надеясь, что все чудесным образом исправится - это подход Microsoft... ИМХО.
Мой выбор - Devuan

Бездумно перегружать, надеясь, что все чудесным образом исправится - это подход Microsoft... ИМХО.

1) У MS это настраивается, один, два или более раз рестартануть нужно/можно. )

MS way

2) Если бы только их..., как работают контейнеры в K8S вы наверняка знаете?

А что в контейнерах-то особо сложного? Сами контейнеры - это сахар над cgroups, namespaces и capabilities (и ещё парой плюшек безопасности в Linux). Машинерия сложная, но в целом мне понятная. А ведь даже не админ)

Т.е. там Вас подход "навернулось - пересоздай" не смущает?

Почти)

Навернулось -> залогировал -> отправил уведомление -> пересоздал.

Вот так прям хорошо.

Мой опыт работы в HFT говорит, что можно торговать миллиардами с таким подходом :)

Навернулось -> залогировал -> отправил уведомление -> пересоздал.

Вот так прям хорошо

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

Так их и не надо читать) События надо классифицировать, группировать, и выводить статусы на дашборды.

 и выводить статусы на дашборды.

Ага, типичный дашборд современного приложения:

Если бы все хардкорные программисты (да-да, плюсовики-линуксоиды) всегда нормально делали обработку ошибок, то и не было бы ситуаций "не работает, почему - неизвестно, перезагрузил - заработало". Так что не в ту сторону воюете.

Попробуйте эту же мысль высказать фанатикам микросервисов )

Холивар будет обеспечен ))

Адекватные промолчат, вайб-кодеры засыпят фразами про stateless и "а чо такова?"

Почему бы не пойти дальше и сразу код без багов уже начать писать)

Так код без багов не спасёт. Представьте: две какие-то утилиты несовместимые стоят и пытаются сделать одно и то же разными способами. Бага ни в одной из них нет и каждая по отдельности работает правильно, но вот только вместе их нельзя использовать.

Но ведь это самый обычный race condition и в каждой утилите есть баг. Изменяемый ресурс надо блокировать на запись или использовать транзакции.

Муж и жена хотят отвезти ребёнка в школу, каждый думает, что поедут на его/её машине. Жена первая берёт за руку ребёнка, выводит и садит в свою машину. Муж ждёт. Жена отпускает ребёнка, муж его берёт за руку и начинает вытаскивать из машины жены, чтобы посадить в свою. Вроде с общим ресурсом правильно обращаются (не тянут одновременно за руки в разные стороны), но всё равно что-то не то...

  1. Аналогии ничего не доказывают

  2. Аналогии в данном случае и не нужны. Тот же пример можно построить на любых объектах в ОС/БД и на каждый такой объект найдется своя лочка

и на каждый такой объект найдется своя лочка

Вы в этом уверены? Что каждый объект всегда можно без негативных последствий заблокировать на любое нужное для правильной работы время?

Конечно уверен) При отсутствии конкуренции за ресурсы - все эти лочки почти ничего не стоят.

При наличии конкуренции за ресурсы - все эти лочки - необходимое зло и работает оно только в том случае, если корректно обеспечена синхронизация.

Без синхронизации система в принципе не работает, а значит добавление лочек не создаёт никакого влияния на работающую систему.

если корректно обеспечена синхронизация.

Без синхронизации система в принципе не работает

Ну началооось : )

 Бездумно перегружать, надеясь, что все чудесным образом исправится

Поставьте вместо Restart=on-failuer - Restart=no и все проблемы с "бесконтрольной" перезагрузкой уйдут)

А вот как раз на серверах Systemd работает отлично за счёт точного управления зависимостями, изоляции через cgroup и тд.

Я на 100% должен контролировать его состояние

Иными словами, если демон упал - поднимать его вы будете строго вручную? Это полностью противоположно современным требованиям к серверам (да и не только современным).

а что вы понимаете под «поднимать строго вручную»? сказать systemctl start xxx?

Любые действия, которые не могут произойти без вмешательства сисадмина.

Disable лишь убирает симлинки, но сервис все еще можно запустить вручную через start.

Запуск вручную не так страшен, в конце концов можно просто не запускать вручную. Гораздо важнее что mask не даёт юниту запускаться даже если он напрямую указан в зависимостях другого юнита.

Есть ещё полезная опция ConditionFileIsExecutable= - на случай, если пакет с выполняемым файлом был удалён, но конфиги systemd остались.

Sign up to leave a comment.

Articles