Pull to refresh

Microsoft и Canonical добавят поддержку systemd в подсистему Windows для Linux

Reading time 2 min
Views 3.1K
Configuring Linux *System administration *Software

Microsoft и Canonical объединились, чтобы добавить поддержку systemd в подсистему Windows для Linux, что позволяет устанавливать большее количество совместимых приложений.

Читать далее
Total votes 9: ↑9 and ↓0 +9
Comments 3

Набор заметок. Производительность и защита, от сайта до системы

Reading time 15 min
Views 4.1K
Website development *
Sandbox
Краткий анонс

Собирался добавить пару предположений на счет авторизации и регистрации на сайте, но то ли от недосыпания, то ли от многочисленных выпитых сегодня чашек кофе меня потянуло в дебри. Набросал некоторые заметки. Возможно кто-то из Вас найдет что-то новое для себя, возможно кто-то подскажет новое правило для кого-то, возможно кто-то поправит меня тем самым дав и мне урок, и другим. Ниже идут некоторые заметки работы с БД, еще ниже уже несколько заметок про работу самого сервера и т.д.
Читать дальше →
Total votes 44: ↑31 and ↓13 +18
Comments 33

Запуск worker'ов сервиса с помощью systemd

Reading time 4 min
Views 22K
Development for Linux *
Tutorial
После выхода Ubuntu 16.04 (новый LTS релиз), systemd стал реальностью всех основных дистрибутивов Linux, использующихся на серверах. Это означает, что можно закладываться на расширенные возможности systemd, не рискуя оставить часть пользователей приложения «за бортом».

Этот пост о том, как реализовать многоворкерное приложение средствами systemd.

Abstract: Использование шаблонов сервисов и target'ов для запуска нескольких инстансов сервиса (реализация «воркеров»). Зависимость PartOf. Немного про [install] секцию у unit'ов.

Вступление


Многие языки программирования с плохой или никакой многопоточностью (Python, Ruby, PHP, довольно часто C/C++) используют концепцию «воркера». Вместо того, чтобы городить сложные отношения между тредами внутри приложения, они запускают несколько однопоточных копий приложения, каждое из которых берёт на себя кусок нагрузки. Благодаря опции SO_REUSEPORT есть даже возможность «вместе» слушать на одном и том же порту, что покрывает большинство задач, в которых возникает потребность в воркерах (собственно, обычные серверные приложения, реализующие API или обслуживающие веб-сайт).

Но такой подход требует наличия «супервизора», который отвечает за запуск копий, следит за их состоянием, обрабатывает ошибки, завершает при всякого рода stop/reload и т.д. При кажущейся тривиальности — это совершенно не тривиальная задача, полная нюансов (например, если один из воркеров попал в TASK_UNINTERRUPTIBLE или получил SIGSTOP, то могут возникнуть проблемы при restart у не очень хорошо написанного родителя).

Есть вариант запуска без супервизора, но в этом случае задача reload/restart перекладывается на администратора. При модели «один процесс на ядро» перезапуск сервиса на 24-ядерном сервере становится кандидатом в автоматизацию, которая в свою очередь требует обработки всех тех же самых SIGSTOP и прочих сложных нюансов.

Одним из вариантов решения проблемы является использование шаблонов сервисов systemd вместе с зависимостью от общего target'а.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 20

Автозапуск Яндекс.Диска как службы systemd в Fedora 19

Reading time 4 min
Views 13K
Configuring Linux *System administration *
Sandbox
Захотелось тут делать на Яндекс.Диск резервные копии. Операционная система у меня Russian Fedora 19 x64. Запуск через rc.local был удален еще из предыдущих выпусков Fedora как устаревший, и я решил делать все по уму — запускать Яндекс.Диск как системную службу. Стандартный запуск служб в Fedora 19 это systemd, начинаем двигаться в этом направлении. Использую официальный консольный клиент Яндекс.Диска ( да код закрытый, но работает намного шустрее чем webdav, и не надо ломать голову с синхронизацией).
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 6

Systemd — стандартная система инициализации в Debian GNU/Linux

Reading time 1 min
Views 16K
Open source *
В третьем голосовании по выбору системы инициализации по умолчанию проект Debian GNU/Linux выбрал Systemd. Таким образом, Systemd теперь будет поставляться в большинстве наиболее популярных дистрибутивов GNU/Linux.

Решение может быть пересмотрено путем проведения референдума среди всех разработчиков Debian. В резолюции указано, что в случае, если большинство разработчиков Debian отдадут предпочтение системе инициализации, отличной от systemd, то такое решение будет иметь более высокий приоритет и будет автоматически утверждено техническим комитетом. С учётом большого числа разногласий в сообществе разработчиков, вероятность проведения общего референдума очень высока. (opennet).

Systemd — демон инициализации и системного управления для Linux, разработанный в качестве замены устаревшим sysvinit и bsdinit. Демон использует возможности современного аппаратного обеспечения, выполняя параллельную загрузку сервисов и расходуя меньше ресурсов благодаря отсутствию прослойки командной оболочки.
Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Comments 39

Ubuntu переходит на systemd

Reading time 1 min
Views 17K
Configuring Linux *
После известного голосования, Майкл Шаттлворт согласился с тем, чтобы в убунту был systemd вместо upstart. (В 14.04 будет upstart, а дальше произойдёт переход на systemd).

Источник: www.markshuttleworth.com/archives/1316
Total votes 102: ↑43 and ↓59 -16
Comments 22

И объял меня systemd до глубин дистрибутива моего

Reading time 1 min
Views 35K
Configuring Linux *System administration *
Оно случилось: Debian начал переход на systemd.

Для системных администраторов это выглядит вот так:
localhost# apt-get update;apt-get upgrade
...
The following packages have unmet dependencies:
 systemd-sysv : Breaks: sysvinit-core but 2.88dsf-53 is installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     sysvinit-core               

Accept this solution? [Y/n/q/?]


Что это означает? Это означает прохождение рубежа в постепенной миграции на systemd, решение о котором было принято чуть ранее, замена sysv-init на systemd. Пакет sysvinit-core содержит в себе /sbin/init, и его заменяют на другой /sbin/init из состава systemd.

Кто-то видит в происходящем шаг в светлое будущее, где все будут счастливы и почти не надо будет умирать, кто-то видит акт трагичного и смиренного принятия роковой судьбы, тёмной длани Рэдхэта, простирающейся на все дистрибутивы вокруг и устраняющий Фатальный Недостаток других систем запуска, кто-то просто со стоическим отчаянием ждёт ещё больше и больше Поттеринга (Л. Поттеринг — автор systemd, он же автор pulseaudio, он же автор неповторимого стиля изложения новых идей, при которых для старого образа жизни и мышления не остаётся места).

Читать дальше →
Total votes 60: ↑49 and ↓11 +38
Comments 176

Git и Microsoft SQL Server

Reading time 8 min
Views 21K
Git *Microsoft SQL Server *
Tutorial
Привет всем!

В предыдущем посте было рассказано о трудностях, которые испытывают разработчики при написании SQL-кода (причём актуальны эти проблемы не только для MS SQL Server). Здесь же рассказ о том, как использовать Git для версионного контроля кода SQL Server с помощью SQLFuse. Принцип тот же, что и с обычными файлами, но есть некоторые особенности.



Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 17

Страсти вокруг systemd и его использования по умолчанию в Debian

Reading time 2 min
Views 66K
Open source *
Группа «давних Unix-админов» открыла сайт debianfork.org. Они призывают сообщество рассмотреть альтернативу форка Debian, потому что этот дистрибутив собирается переходить на демон systemd.

Systemd — демон инициализации других демонов в Linux, который используется вместо SystemV Init (sysvinit). Его особенность — интенсивное распараллеливание запуска служб в процессе загрузки, что позволяет существенно ускорить старт операционной системы. Вероятно, скоро его начнут использовать по умолчанию в Debian.

Это очередной этап давней дискуссии вокруг systemd. Некоторые считают, что он нарушает философию Unix. Более месяца назад (та же?) группа активистов запустила проект BoycottSystemd.org, призывая бойкотировать systemd и дистрибутивы Linux, которые используют этот демон.
Читать дальше →
Total votes 88: ↑62 and ↓26 +36
Comments 171

Шпаргалка по управлению сервисами CentOS 7 с systemd

Reading time 7 min
Views 322K
Infobox corporate blog
Systemd – менеджер системы и сервисов в операционной системе Linux. При разработке eго стремились спроектировать обратно совместимым со скриптами инициализации SysV init и предоставить полезные функции, такие, как параллельный запуск системных сервисов во время загрузки, активацию демонов по требованию, поддержку снепшотов состояния системы и логику управления сервисами, основанную на зависимостях. В CentOS 7 systemd заменяет Upstart как систему инициализации по умолчанию.

В этой статье мы рассмотрим процесс управления сервисами в systemd для пользователя CentOS 7. Эти знания будут полезны и в других дистрибутивах, ведь systemd уже давно используется в Fedora и планируется в Ubuntu 14.10 и Debian 8. Хорошо это или нет — оставим за кадром.

CentOS 7 Systemd Infobox

В процессе чтения статьи вы можете попробовать systemd на классических VPS и облачных VPS от Infobox. Мы стремимся своевременно добавлять поддержку современных ОС, чтобы вы могли использовать последние технологии для более эффективной работы. Сама идея написания статьи родилась после очередного вопроса пользователей об использовании сервисов в CentOS 7.
Читать дальше →
Total votes 66: ↑61 and ↓5 +56
Comments 10

Первый отчет от проекта Devuan

Reading time 7 min
Views 7.6K
FirstVDS corporate blog
Translation
Все мы следили и следим за развитием событий вокруг внедрения systemd в различные дистрибутивы. Не стал исключением и дистрибутив Linux — Debian, вокруг которого разгорелись нешуточные страсти.

Часть сообщества недовольного внедрением systemd в Debian, гордо называющие себя Veteran Unix Admins, откололись от Debian. Они основали свой форк Devuan, целью которого обозначили создание дистрибутива с возможностью выбора системы инициализации и защиты интересов сторонников классической организации работы Debian.


И вот, 22 декабря, практически через месяц после первого анонсирования, появился первый отчет о проделанной работе над проектом. Ниже я опубликую перевод:
Читать дальше →
Total votes 3: ↑2 and ↓1 +1
Comments 3

Игра про автора systemd — Леннарта Поттеринга

Reading time 2 min
Views 21K
FirstVDS corporate blog Open source *
Пока вокруг внедрения systemd в различные дистрибутивы разгораются нешуточные страсти, вплоть до покидания постов в совете, как это было с Debian, некоторые разработчики вместо бесплодных и жарких баталий по переписке занимаются полезным делом.

Кто-то внедряет systemd, кто-то несогласный делает форки, а кто-то — игры.


Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 49

Разбираемся с установкой и загрузкой Linux на примере ArchLinux

Reading time 17 min
Views 121K
Configuring Linux *System administration *
Sandbox
Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

Никакие закладки в жестких дисках будут вам не страшны, потому что дисков у нас не будет. Никакие очумелые ручки пользователей ничего не сломают, т. к. после перезагрузки система вернется в первозданное лично вами состояние. Конечно же, вы научитесь и сможете самостоятельно изменять загружаемую систему таким образом, чтобы в ней содержался только нужный вам функционал и ничего лишнего. Между делом мы выясним, как и в каком порядке загружается Linux, а также из чего он состоит. Знания, как известно, — бесценны, поэтому я делюсь ими даром.

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение;
окончание.

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.
Читать дальше →
Total votes 11: ↑6 and ↓5 +1
Comments 6

Systemd за пять минут

Reading time 4 min
Views 547K
Southbridge corporate blog
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Total votes 70: ↑66 and ↓4 +62
Comments 58

Управление логгированием в systemd

Reading time 12 min
Views 111K
Selectel corporate blog
Tutorial
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →
Total votes 44: ↑41 and ↓3 +38
Comments 15

Supervisord и forever больше не нужны. Systemd

Reading time 2 min
Views 48K
Configuring Linux *System administration *
В статье речь будет идти о systemd, который вошел в Debian 8 jessie. Я пишу о Debian, потому что пользуюсь именно им. Пишу о systemd не потому что его фанат, но некоторые вещи меня действительно радуют.

Так почему же больше не нужны supervisord и forever?
Читать дальше →
Total votes 35: ↑25 and ↓10 +15
Comments 67

Параллельное выполнение зависимых задач и синхронизация с условными переменными в shell

Reading time 20 min
Views 12K
TrueVDS corporate blog Programming *System Programming *
Как синхронизировать параллельные шелл-процессы, используя named pipes (FIFO-файлы) в качестве условных переменных. Как выполнить параллельно зависимые задач в топологическом порядке с минимумом средств: POSIX shell, mkfifo, POSIX kernel. Как параллельный запуск ускоряет загрузку встраиваемых систем и *BSD (rc-этап FreeBSD с 27 до 7 секунд) или старт приложений в пользовательских контейнерах Docker, LXC и jail. Как это повышает аптайм в отказоустойчивых кластерах Jet9.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 10

Изолируем демоны с systemd или «вам не нужен Docker для этого!»

Reading time 9 min
Views 47K
Information Security *
В последнее время я вижу, как довольно большое количество людей применяет контейнерную виртуализацию только для того, чтобы запереть потенциально небезопасное приложение внутри контейнера. Как правило, используют для этого Docker из-за его распространенности, и не знают ничего лучше. Действительно, многие демоны первоначально запускаются от имени root, а далее либо понижают свои привилегии, либо master-процесс порождает обрабатывающие процессы с пониженными привилегиями. А есть и такие, которые работают исключительно от root. Если в демоне обнаружат уязвимость, которая позволяет получить доступ с максимальными привилегиями, будет не очень приятно обнаружить злоумышленников, уже успевших скачать все данные и оставить вирусов.
Контейнеризация, предоставляемая Docker и другим подобным ПО, действительно спасает от этой проблемы, но также и привносит новые: необходимо создавать контейнер для каждого демона, заботиться о сохранности измененных файлов, обновлять базовый образ, да и сами контейнеры часто основаны на разных ОС, которые необходимо хранить на диске, хотя они вам, в общем-то, и не особо нужны. Что делать, если вам не нужны контейнеры как таковые, в Docker Hub приложение собрано не так, как нужно вам, да и версия устарела, SELinux и AppArmor кажутся вам слишком сложными, а вам бы хотелось запускать его в вашем окружении, но используя такую же изоляцию, которую использует Docker?

Capabilities

В чем отличие обычного пользователя от root? Почему root может управлять сетью, загружать модули ядра, монтировать файловые системы, убивать процессы любых пользователей, а обычный пользователь лишен таких возможностей? Все дело в capabilities — средстве для управления привилегиями. Все эти привилегии даются пользователю с UID 0 (т.е. root) по умолчанию, а у обычного пользователя нет ни одного из них. Привилегии можно как дать, так и отобрать. Так, например, привычная команда ping требует создания RAW-сокета, что невозможно сделать от имени обычного пользователя. Исторически, на ping ставили SUID-флаг, который просто запускал программу от имени суперпользователя, но сейчас все современные дистрибутивы выставляют CAP_NET_RAW capability, которая позволяет запускать ping из-под любого аккаунта.
Получить список установленных capabilities файла можно командой getcap из состава libcap.
% getcap $(which ping)
/usr/bin/ping = cap_net_raw+ep

Флаг p здесь означает permitted, т.е. у приложения есть возможность использовать заданную capability, e значит effective — приложение будет ее использовать, и есть еще флаг iinheritable, что дает возможность сохранять список capabilities при вызове функции execve().
Capabilities можно задать как на уровне ФС, так и просто у отдельного потока программы. Получить capability, которая не была доступна с момента запуска, нельзя, т.е. привилегии можно только понижать, но не повышать.
Также существуют биты безопасности (Secure Bits), их три: KEEP_CAPS позволяет сохранить capability при вызове setuid, NO_SETUID_FIXUP отключает перенастройку capability при вызове setuid, и NOROOT запрещает выдачу дополнительных привилегий при запуске suid-программ.
Читать дальше →
Total votes 72: ↑70 and ↓2 +68
Comments 34

Заставляем сервис php-fpm 5.6, запущенный через systemd, читать глобальные переменные окружения

Reading time 6 min
Views 13K
PHP *
Это короткий how-to для реализации конфигурации php-сервиса, зависимого от окружения, в котором он запущен. Я буду рад, если кто-то подскажет более изящное решение или поправит в мелочах.

Основная идея


Запускать сервис, микросервисы и зависимые приложения в рамках одной экосистемы, конфигурируемой с помощью переменных окружения.

Проблема

В этой статье слишком много раз повторяется «переменные окружения».
Из коробки php-fpm игнорирует глобальные переменные окружения (getenv function), в то время как php cli их может получать.
Читать дальше →
Total votes 17: ↑12 and ↓5 +7
Comments 2

Node.js в бою (создание кластера)

Reading time 9 min
Views 69K
Website development *Node.JS *
Tutorial
Translation
Когда вы используете приложения на node.js в продакшене, вам приходится задумываться о стабильности, производительности, безопасности и удобстве поддержки. Данная статья описывает мои мысли о лучших практиках использования node.js в бою.

К окончанию данного руководства вы получите систему из 3 серверов: балансировщик (lb) и 2 сервера приложений (app1 и app2). Балансировщик будет следить за доступностью серверов и распределять между ними траффик. Серверы приложений будут использовать комбинацию systemd и кластеризации node.js для балансировки траффика между несколькими процессами ноды на сервере. Вы сможете выкатывать код с помощью одной команды со своей машины, и при этом не будет перерывов в обслуживании или необработанных запросов.
Все это можно представить в виде схемы:


Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Comments 17