LINUX.ORG.RU

Увольняюсь из systemd хейтеров

 


1

2

Привет, ЛОР!
Решил тут уволиться из systemd-хейтеров.

Предыстория.

Поднимали мы тут инстанс btcpay, соответственно, нужно было позаботиться о том, чтобы демоны btcpayserver с его прислужниками, а так же bitcoind, litecoind постоянно были запущены, не падали и перезапускались если вдруг что.

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

Ну, и поехали, минута в гугле и был написан следущий юнитскрипт:

[Unit]
Description=btcpay
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=3
User=btcpay
Group=btcpay
WorkingDirectory=/var/btcpay/btcpayserver-1.0.3.36
ExecStart=/var/btcpay/btcpayserver-1.0.3.36/run.sh --chains btc,ltc --externalurl https://btcpay.ourdomain.name

[Install]
WantedBy=multi-user.target


И ещё один --

[Unit]
Description=bitcoind
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=3
User=btcpay
Group=btcpay
ExecStart=/var/btcpay/bitcoin/bitcoin-0.17.0/bin/bitcoind

[Install]
WantedBy=multi-user.target


 # systemctl enable bitcoind && systemctl enable btcpay && reboot


Выкуриваем сигаретку, пинаем сервер — опа!
Всё поднялось и работает. Если что упадёт — перезапускает.
Логи показывает по $ journalctl -u bitcoind.
Ну что ещё нужно для счастья на сервере?

#вся_суть_systemd_хейтеров

_____________________________________________________________

А вот за то, что его прибивают гвоздями к десктопному линуксу и без него, например, не работает networkmanager — это всё ещё крайне и крайне печально.

Выкуриваем сигаретку, пинаем сервер — опа! Всё поднялось и работает. Если что упадёт — перезапускает. Логи показывает по $ journalctl -u bitcoind. Ну что ещё нужно для счастья на сервере?

То есть man initd ты не читал…

dikiy ★★☆☆☆ ()

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

#вся_суть_systemd_хейтеров

То есть systemd это хорошо потому что на нем можно сделать то же самое, что и на supervisord (ну или в инитскриптах), так?

micronekodesu ★★ ()
Ответ на: комментарий от dikiy

И тут ты такой с инитскриптом с такой же функциональностью, что и юнит для bitcoind.

annerleen ★★ ()
Ответ на: комментарий от annerleen

И тут ты такой с инитскриптом с такой же функциональностью, что и юнит для bitcoind.

в initd это все одной строчкой в initd.conf делалось

dikiy ★★☆☆☆ ()
Ответ на: комментарий от micronekodesu

systemd это хорошо потому что на нём можно сделать то же самое, но гораздо быстрее и надёжнее (хотелось бы верить, что init тестируют получше, чем питоноподелку supervisord, которая таки один раз упала, потянув за собой всех демонов-потомков)

На инитскриптах тоже, можно, конечно, но почему-то везде советуют прибегнуть к внешним утилитам, типа supervisord, daemontools, supervise, nagios или вообще пушка — cron.

annerleen ★★ ()

Увольняюсь из systemd хейтеров
Ну, и поехали, минута в гугле и был написан следущий юнитскрипт:

Ну это то да, может и ничего, но вот как ты будешь выть когда обратно в хейтеры наймёшся, потому что если будет повод обратно наниматься то проблема твоя скорее всего будет очень не удобной.

torvn77 ★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Самая моя неудобная проблема от systemd была после апдейта Debian 8 на Debian 9 на сервере, и, соответственно, автоматической заменой sysvinit на systemd.

Дело в том, что в fstab был прописан шифрованный контейнер, в crypttab его не было.
Сервер удалённый и монтировалось всё хозяйство вручную по ssh, после включения.
Да, noauto прописать забыли/лень/whatever else.
Sysvinit на это внимания не обращал и просто пропускал эту строчку, systemd же впал в панику и вальнулся в rescue shell.


1 января. 3 часа ночи. (тут надо отметить, что обновляемся мы по праздникам, чтобы минимизировать количество пользователей, которые нарвутся на даунтайм)
Удалённый сервер. IP KVM поднимается инженеграми поддержки, которые, естественно, в запое числа до 4го.
Сеть не поднялась. Rescue shell где-то там.
Занавес.

annerleen ★★ ()
Последнее исправление: annerleen (всего исправлений: 3)
Ответ на: комментарий от annerleen

гораздо быстрее

Ерунда, если знаете как писать конфиги для супервизора и как для systemd - примерно одинаково по времени. Иначе все упирается в способность понимать документацию, никакого рокетсайнса тут нет.

и надёжнее

Хотелось бы увидеть тесты

init тестируют получше

Да, тестируют, и говорят notabug, мы в курсе

чем питоноподелку supervisord

Питоноподелка занимается одной вещью - запускает приложения и следит за их работой. Это как бы уже преимущество над комбайном.

которая таки один раз упала, потянув за собой всех демонов-потомков

Я бы посмотрел как у вас PID 1 падает и все остальное продолжает работать.

типа supervisord, daemontools, supervise, nagios или вообще пушка — cron

Добавьте в этот список еще такие слова как vim, IMAP, VPN и Google, чтоб прям вообще знатная каша получилась (при этом немного по теме).

micronekodesu ★★ ()
Ответ на: комментарий от micronekodesu

типа supervisord, daemontools, supervise, nagios или вообще пушка — cron

Добавьте в этот список еще такие слова как vim, IMAP, VPN и Google, чтоб прям вообще знатная каша получилась (при этом немного по теме).

я же не из головы это взял

Я бы посмотрел как у вас PID 1 падает и все остальное продолжает работать.

PID 1 написан не на питоне и (хочется надеется) тщательно тестируется.

Иными словами, supervisord это userspace софт и может позволить себе упасть, systemd — нет.

и надёжнее

Хотелось бы увидеть тесты

Как тактично проигнорирован

которая таки один раз упала, потянув за собой всех демонов-потомков)

annerleen ★★ ()
Последнее исправление: annerleen (всего исправлений: 1)

А я считаю, что на десктопном линуксе ему самое место. В комментариях на Опеннете недавно обсуждали параллельную загрузку upstart и systemd - в этом плане, systemd по отзывам людей оказался проще в написании скриптов инициализации. На сервере время загрузки не важно, поэтому можно в один поток, а создавать и редактировать bash-скрипты, по мнению многих людей, проще. Плюс я что-то слышал, что Debian 7 умеет какие-то LSB-вставки в скрипт, позволяющие всё-таки параллелить загрузку

Собственно вот треды:

https://www.opennet.ru/openforum/vsluhforumID3/113965.html#149
https://www.opennet.ru/openforum/vsluhforumID3/115827.html#38
https://www.opennet.ru/openforum/vsluhforumID3/115827.html#155

Тут и тут было продолжение дискуссии, но сейчас его нет. Удалили, похоже. Реквестирую сравнения Systemd и OpenRC.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 3)
Ответ на: комментарий от annerleen

Как тактично проигнорирован

которая таки один раз упала, потянув за собой всех демонов-потомков)

Не проигнорирован - я говорю о том, что если у вас упадет systemd (или другая система инициализации - это как раз то, что имеет PID 1), то у вас упадет все то, что он запустил, то есть вся система по сути. Так что никакой разницы между systemd и supervisord тут нет.

PID 1 написан не на питоне

С каких пор это плюс (или минус)?

и (хочется надеется) тщательно тестируется.

Надейтесь. Более-менее рассчитывать вы на это можете только если у вас RHEL на серверах. И сидеть вы тогда будите на каком-нибудь релизе трехлетней давности.

А говорить "надежнее - не надежнее" это легко, вы покажите тесты что systemd круче supervisord (именно в кейсе "запустить приложение и смотреть чтоб оно работало, при необходимости перезапуская"). Если у вас таких тестов нет, то говорите что вам кажется что systemd надежнее, что у вас он никогда не падал, ну и вот это все.

micronekodesu ★★ ()
Последнее исправление: micronekodesu (всего исправлений: 1)

его прибивают гвоздями к десктопному линуксу и без него, например, не работает networkmanager

Не пользуйся networkmanager'ом, это же тоже хипстерская поделка для школоты.

alexferman ()
Ответ на: комментарий от alexferman

Давай ещё название менеджера сети, которое умеет WiFi / 4G / Bluetooth PAN

annerleen ★★ ()

без него, например, не работает networkmanager

Это очень похоже на неправду.
Ну, или на полуправду.

В Void Linux без systemd networkmanager замечательно работает. С вариантом от gentoo eudev.

-------------
Будучи новичком в мире Linux тут дошло наконец, что dracut и mkinitcpio - запросто могут стоять одновременно в одной ОС оба. Хошь эдак, хошь так делай. Презабавно.
Так вот единственное, наверное, за что можно недолюбливать агрессивно навязываемые технологии - это за искусственные ограничения разнообразия. Но точно не за детали реализации.

Toxo1 ()

Жду появления жопуподтериd и пописатьd. Думаю многим ещё понадобится вазелинонамазинd.

Promusik ★★★★ ()

Решил тут уволиться из systemd-хейтеров.

а выбора то нет, остальное всё мёртвое же.

eR ★★★★★ ()

без него, например, не работает networkmanager

В слаквари все прекрасно работает.

Thetan ★★ ()

Увольняюсь

Тебе за это ещё и платили? Сколько платят на новом месте?

grem ★★★★★ ()

Офигеть, systemd умеет то, что умеет supervisord.

без него, например, не работает networkmanager

NetworkManager вообще кривое поделие, написанное дебилами.

tailgunner ★★★★★ ()

нужно было позаботиться о том, чтобы демоны btcpayserver с его прислужниками, а так же bitcoind, litecoind постоянно были запущены

товарищ, позаботиться нужно было о том, чтобы они не были запущены на одной машине - это не безопасно. А потом уже о высоком - системД или не. Хипстеры, из-за вас биткойн упал. Это вы его дискредитировали своими подделками.

lenin386 ★★★ ()
Последнее исправление: lenin386 (всего исправлений: 2)

Сейчас тебе напишут, что ты был должен для написания сервиса изучить Bash-лапшу или ещё какую-нибудь дрянь.

EXL ★★★★★ ()

Ты начал медленный путь на винфакдовз

burato ()
Ответ на: комментарий от Jetty

Ты тоже из этих, которые из консоли к мобильным сетям (пере)подключаются?

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

Ну и WiFi, пришёл такой к кому-то в гости, хочешь подцепиться к их сети и начинаешь пердолить wpa_supplicant, вотж удовольствие -то!

annerleen ★★ ()
Ответ на: комментарий от lenin386

, чтобы они не были запущены на одной машине - это не безопасно.

Это почему ещё?
Они всё равно общаются по JSONRPC, и если порутают виртуалку с btcpayserver, без проблем найдут rpcuser/rpcpassword и sendtransaction()

annerleen ★★ ()
Ответ на: комментарий от annerleen

Потому щто если отломают тут машину, которая принимают платежи, то ты ничего особо не теряешь, а если у тебя там кошельки, то поимеют кошельки. История с nicehash никого ничему не научила. Всем плевать, биткоен только растёт.

lenin386 ★★★ ()
Последнее исправление: lenin386 (всего исправлений: 2)

Лудшее, что случилось с линпесом. Каждый хейтер это просто неосилятор в гриме.

asw ()
Ответ на: комментарий от annerleen

Это никак не противоречит моим словам. А подключаться к wifi, при условии того, что в машине только один wifi-интерфейс - это единственное, что NetworkManager умеет хорошо.

tailgunner ★★★★★ ()
Ответ на: комментарий от lenin386

из-за вас биткойн упал. Это вы его дискредитировали

Всем плевать, биткоен только растёт.

Шизофрения на марше.

tailgunner ★★★★★ ()
Ответ на: комментарий от sparks

Честно говоря, не знаю, что там под капотом. Если старый добрый wpa_supplicant, то сам NetworkManager совсем беспомощное говно.

tailgunner ★★★★★ ()
Ответ на: комментарий от alexferman

Ога. Долой устаревший NM, даешь systemd-networkd на все хосты!

robus ★★★ ()
Ответ на: комментарий от Toxo1

Будучи новичком в мире Linux тут дошло наконец, что dracut и mkinitcpio - запросто могут стоять одновременно в одной ОС оба. Хошь эдак, хошь так делай. Презабавно.

В принципе ты прав, но в данном случае нет, mkinitcpio средство создания initrd.img, dracut это средство настройки OS и использует(возможно) mkinitcpio как инструмент для соответствующей задачи.

torvn77 ★★★★ ()
Ответ на: комментарий от annerleen

Ну и WiFi, пришёл такой к кому-то в гости, хочешь подцепиться к их сети и начинаешь пердолить wpa_supplicant, вотж удовольствие -то!

А чего там делать то, добавить только две строки с именем сети и ключём и закоментировать две старые.
(Или просто перекоментировать если вводил раньше)

torvn77 ★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от torvn77

Если ты ходишь в гости часто, подключаешься к разным сетям постоянно, но допустим из списка из 30, то что, держать длинный закоментированый файл и каждый раз туда бегать и менять что-то?

vertexua ★★★☆☆ ()

куищще то зачем было делать?

systemd умеет запускать сервисы и без перезагрузки системы

nihirash ★★★ ()
Ответ на: комментарий от vertexua

Если ты ходишь в гости часто, подключаешься к разным сетям постоянно,

То пишешь скрипт на баше моняторящий доступность интернета и при его пропаже ищющего имеющуюся из настроенных wifi сетей.

Для тех кто умеет работать с grep это не должно быть сложным.

torvn77 ★★★★ ()
Ответ на: комментарий от torvn77

То пишешь скрипт на баше

Как быстро он перерастет в недоделаный NetworkManager/systemd-networkd? NIH тут разве что будет душу греть. Но не факт что даже будет легковеснее. Сабжи написаны на С под конкретную задачу и могут жрать меньше ресурсов чем интерпретатор баша - он то все таки интерпретатор языка программирования и значительно сложнее

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Как быстро он перерастет в недоделаный NetworkManager?

Если учесть что это просто скрипт поиска имеющегося подключения wifi из заранее в скрипте указанных то этого не будет.
NetworkManager это здоровенный комбайн, который умеет всё и для всех видов сетей плюс средства связи с его гуем под пользователем.
В общем дорасти даже до его 1/100 части довольно трудно.

systemd-networkd

Это без systemd нормально работать будет, или он за собой смену init притащит?
Не жирно для простой переключалки преднастроенных сетей?

torvn77 ★★★★ ()

без него, например, не работает networkmanager

4.2

А вот за то, что его прибивают гвоздями к десктопному линуксу

Десктопному линуксу нужен предсказуемый набор API для стандартных задач. Ненавидеть systemd в связи с этим имеет не больше смысла, чем, например, X11 или само ядро Linux.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от torvn77

но в данном случае нет

В Void по-умолчанию dracut. Что-то у меня там с хуками запуталось при генерации initrd. Оказывается у него в репо есть ещё и mkinitcpio. Поставил и им собрал рабочий initrd. Всего-то в этом и откровение себе нашёл )

Плюс всё надеюсь разобраться, как Fedora так ловко себя в efi-loader дописывает через kernel-install. А этого сценария в репо Void совсем нет (это часть systemd) - вот и экспериментирую с образами; пока могу только вручную )

Toxo1 ()
Ответ на: комментарий от annerleen

systemd это хорошо потому что на нём можно сделать то же самое, но гораздо быстрее и надёжнее

Попёрся от слова «надёжнее». ИМХО, у тебя просто опыта маловато. И сервак небось рядом ;) А был бы он далеко, да заперт...

Deleted ()
Ответ на: комментарий от Toxo1

как Fedora так ловко себя в efi-loader дописывает через kernel-install

Как как, однострочным скриптом ;)

Deleted ()
Ответ на: комментарий от intelfx

Ненавидеть systemd в связи с этим имеет не больше смысла, чем, например, X11 или само ядро Linux.

А кто сказал, что мы их любим?

Deleted ()
Ответ на: комментарий от torvn77

Или просто перекоментировать если вводил раньше

Отэта уже не нада. Оно само ишшет. У миня на Crux список из 7 сетей, сделанных волшебной коммандой. Так ничё не комментирую, да. Пришёл, включил модуль wifi (у миня на гарячих клавишах, батарея, температура, то, сё) и сеть через 2-3 секунды...

Deleted ()
Ответ на: комментарий от robus

Ога. Долой устаревший NM, даешь systemd-networkd на все хосты!

ГОДНО!

Deleted ()
Ответ на: комментарий от annerleen

Да, noauto прописать забыли/лень/whatever else.

обновляемся мы по праздникам, чтобы минимизировать количество пользователей, которые нарвутся на даунтайм

Удалённый сервер. IP KVM поднимается инженеграми поддержки, которые, естественно, в запое числа до 4го.

я даже не знаю что из этого лучше. Как можно обновлять прод без kvm под рукой? :)

mrdeath ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)