Un nou manager de sistem rcd pentru FreeBSD

Baptiste Daroussin, membru al echipei de bază FreeBSD și autor al managerului de pachete pkg, dezvoltă un nou manager de sistem pentru FreeBSD - rcd. Managerul de sistem rcd este apelat de procesul init în loc de /etc/rc, citește fișierele de configurare ale serviciilor (/etc/rcd.d/*.ucl), construiește un arbore al dependențelor și pornește serviciile cât mai mult posibil în paralel, după care monitorizează funcționarea serviciilor și le repornește, dacă este necesar.

Gestionarea proceselor în fundal și operațiunile cu serviciile pot fi realizate prin transmiterea directă de comenzi la un UNIX-socket sau prin intermediul utilitarului de linie de comandă rctl. Fișierele unitate cu parametrii serviciilor sunt formate în format UCL, care seamănă cu formatul fișierelor de configurare nginx și bind, cu elemente pentru facilitarea procesării automatizate, împrumutate din JSON. Se oferă posibilitatea de a crea șabloane de fișiere unitate tipice și de a scrie gestionari încorporați în limbajul Lua. Exemplu de fișier unitate pentru lansarea 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»; }; }

În locul lucrului cu fișiere PID, activitatea proceselor lansate este monitorizată folosind descriptorii returnați de apelul de sistem pdfork(). Există suport pentru activarea serviciilor doar la solicitarea unui socket de rețea și posibilitatea de a proteja serviciile importante de oprirea forțată în cazul lipsei de memorie în sistem. Este posibilă actualizarea versiunii procesului în fundal rcd în timp real fără pierderea stării.

Pentru a limita resursele disponibile serviciului, se utilizează rctl, iar pentru izolarea totală a serviciilor, acestea pot fi lansate în medii jail. Este posibilă configurarea accesului la socket-ul UNIX de gestionare în legătură cu serviciile individuale. Se suportă trecerea în modul de repaus.

Managerul sistemului este complet compatibil înapoi cu sistemul existent de lansare secvențială a serviciilor rc.d și poate funcționa fără a modifica scripturile rc.d și fișierele de configurare existente. Este suficient să instalați rcd pe un sistem funcțional, iar după repornire, totul va continua să funcționeze ca înainte, cu excepția scurtării timpului de boot datorită paralelizării lansării serviciilor. Această compatibilitate va simplifica migrarea sistemelor la rcd și va permite trecerea treptată la formatul fișierelor unit pentru scripturile rc.d existente.

Pentru compatibilitatea cu rc.d, este suportat un tip special de unități denumit „legacy”. Rcd scanează conținutul /etc/rc.d/ și /usr/local/etc/rc.d/, analizează anteturile PROVIDE/REQUIRE/BEFORE/KEYWORD din scripturi, citește setările din rc.conf și determină starea de lansare a scripturilor, după care procesează fiecare script ca un unit virtual legacy. În cazul utilizării comenzii rcctl pentru gestionarea acestor unități virtuale, operațiile sunt translatate în vechiul format, de exemplu, executarea „rcctl reload sshd” va duce la rularea „/etc/rc.d/sshd reload”.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster