Для FreeBSD развіваюць новы сістэмны мэнэджар rcd

Батыст Даруссен (Baptiste Daroussin), член FreeBSD Core Team і аўтар пакетнага мэнэджара pkg, развівае новы сістэмны менеджэр для FreeBSD – rcd. Сістэмны мэнэджар rcd выклікаецца init-працэсам замест /etc/rc, чытае файлы канфігурацыі сэрвісаў (/etc/rcd.d/*.ucl), будуе дрэва залежнасцяў і запускае сэрвісы па магчымасці раўналежна сябар з сябрам, пасля чаго адсочвае працу сэрвісаў і пры неабходнасці іх перазапускае.

Кіраванне фонавым працэсам і аперацыі з сэрвісамі можа ажыццяўляцца праз прамую перадачу каманд у UNIX-сокет або пры дапамозе ўтыліты каманднага радка rctl. Unit-файлы з параметрамі сэрвісаў афармляюцца ў фармаце UCL, які нагадвае фармат файлаў канфігурацыі nginx і bind з элементамі для спрашчэння аўтаматызаванай апрацоўкі, запазычанымі з JSON. Прадастаўляецца магчымасць стварэння шаблонаў тыпавых unit-файлаў і напісання ўбудаваных апрацоўшчыкаў на мове Lua. Прыклад unit-файла для запуску nginx: name = "nginx"; description = "Nginx HTTP Server"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NETWORKING", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { memoryuse = { action = "deny"; amount = "2g"; }; pcpu = {action = "throttle"; amount = "80"; }; }

Замест працы з PID-файламі адсочванне актыўнасці запушчаных працэсаў ажыццяўляецца з выкарыстаннем дэскрыптараў, якія вяртаюцца сістэмным выклікам pdfork(). Маецца падтрымка актывацыі сэрвісаў толькі пры звароце да сеткавага сокету і магчымасць абароны важных сэрвісаў ад прымусовага завяршэння ў выпадку недахопу памяці ў сістэме. Магчыма абнаўленне версіі фонавага працэсу rcd на лета без страты стану.

Для абмежавання даступных сэрвісу рэсурсаў прымяняецца rctl, а для поўнай ізаляцыі сэрвісаў падтрымліваецца іх запуск у jail-акружэннях. Магчымая налада доступу да кіраўніка UNIX-сокету ў прывязцы да асобных сэрвісаў. Падтрымліваецца пераход у спячы рэжым.

Сістэмны мэнэджар цалкам зваротна сумяшчальны з існай сістэмай паслядоўнага запуску сэрвісаў rc.d і можа працаваць без змены наяўных rc.d-скрыптоў і файлаў канфігурацыі. Дастаткова ўсталяваць rcd на працуючую сістэму і пасля перазапуску ўсё працягне функцыянаваць як раней, за выключэннем скарачэння часу загрузкі за кошт распаралельвання запуску сэрвісаў. Падобная сумяшчальнасць спросціць міграцыю сістэм на rcd і дасць магчымасць паступова пераводзіць у фармат unit-файлаў наяўныя rc.d-скрыпты.

Для сумяшчальнасці з rc.d падтрымліваецца спецыяльны тып unit-аў "legacy". Rcd скануе змесціва /etc/rc.d/ і /usr/local/etc/rc.d/, разбірае загалоўкі PROVIDE/REQUIRE/BEFORE/KEYWORD у скрыптах, чытае налады rc.conf і вызначае стан запуску скрыптоў, пасля чаго апрацоўвае кожны скрыпт як віртуальны. У выпадку выкарыстання каманды rcctl для кіравання падобнымі віртуальнымі unit-амі, аперацыі транслююцца ў стары фармат, напрыклад, выкананне "rcctl reload sshd" прывядзе да запуску "/etc/rc.d/sshd reload".

Крыніца: opennet.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster