Der udvikles en ny systemadministrator rcd til FreeBSD

Baptiste Daroussin, medlem af FreeBSD Core Team og skaber af pakkestyringssystemet pkg, udvikler en ny systemmanager til FreeBSD — rcd. Systemmanageren rcd kaldes af init-processen i stedet for /etc/rc, læser konfigurationsfiler for tjenester (/etc/rcd.d/*.ucl), opbygger et afhængighedstræ og starter tjenesterne så vidt muligt parallelt med hinanden, hvorefter den overvåger tjenesternes drift og genstarter dem om nødvendigt.

Håndtering af baggrundsprocesser og operationer med tjenester kan udføres gennem direkte kommandooverførsler til UNIX-socketen eller ved hjælp af kommandolinjeværktøjet rctl. Unit-filer med tjenesternes parametre er formateret i UCL, som ligner konfigurationsfilformatet for nginx og bind med elementer til at forenkle automatiseret behandling, lånt fra JSON. Det er muligt at oprette skabeloner til standard-unit-filer og skrive indbyggede håndteringsfunktioner i Lua. Eksempel på en unit-fil til at starte 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»; }; }

I stedet for at arbejde med PID-filer overvåges aktiviteten af kørende processer ved hjælp af dektorer, der returneres af systemopkaldet pdfork(). Der er støtte til aktivering af tjenester kun ved adgang til netværkssocketen og mulighed for at beskytte vigtige tjenester mod tvungen nedlukning i tilfælde af mangel på systemhukommelse. Det er muligt at opdatere versionen af baggrundsprocessen rcd i realtid uden at miste tilstanden.

For at begrænse de tilgængelige ressourcer til en tjeneste anvendes rctl, og for fuldstændig isolation af tjenester understøttes deres opstart i jail-miljøer. Mulighed for at indstille adgang til den styrende UNIX-socket knyttet til specifikke tjenester. Overgang til dvaletilstand understøttes.

Systemadministratoren er helt bagudkompatibel med det eksisterende system til sekventiel opstart af tjenester rc.d og kan fungere uden ændringer i de nuværende rc.d-scripts og konfigurationsfiler. Det er tilstrækkeligt at installere rcd på det kørende system, og efter en genstart vil alt fortsætte med at fungere som før, bortset fra at opstartsventetiden reduceres gennem parallelisering af opstarten af tjenester. Denne komptabilitet vil lette migrationen af systemer til rcd og give mulighed for gradvist at konvertere eksisterende rc.d-scripts til unit-filer.

For kompatibilitet med rc.d understøttes en speciel type enheder kaldet "legacy". Rcd scanner indholdet af /etc/rc.d/ og /usr/local/etc/rc.d/, analyserer overskrifterne PROVIDE/REQUIRE/BEFORE/KEYWORD i scripts, læser indstillingerne i rc.conf og bestemmer tilstanden af scripts opstart, hvorefter hver script behandles som en virtuel legacy enhed. Når man bruger kommandoen rcctl til at styre sådanne virtuelle enheder, oversættes operationer til det gamle format, for eksempel vil udførelsen af "rcctl reload sshd" føre til, at "\/etc\/rc.d\/sshd reload" køres.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster