Für FreeBSD wird der neue Systemmanager rcd entwickelt

Baptiste Daroussin, Mitglied des FreeBSD Core Teams und Autor des Paketmanagers pkg, entwickelt mit rcd einen neuen Systemmanager für FreeBSD. Der Systemmanager rcd wird vom init-Prozess anstelle von /etc/rc aufgerufen, liest die Konfigurationsdateien der Dienste (/etc/rcd.d/*.ucl), erstellt einen Abhängigkeitsbaum und startet die Dienste, wenn möglich, parallel zueinander. Anschließend überwacht er deren Betrieb und startet sie bei Bedarf neu.

Die Verwaltung des Hintergrundprozesses und Service-Operationen können durch die direkte Übergabe von Befehlen an einen UNIX-Socket oder mithilfe des Kommandozeilenwerkzeugs rctl erfolgen. Unit-Dateien mit Service-Parametern werden im UCL-Format definiert, das an die Konfigurationsdateien von nginx und bind erinnert und Elemente aus JSON für eine vereinfachte automatisierte Verarbeitung übernimmt. Es besteht die Möglichkeit, Vorlagen für typische Unit-Dateien zu erstellen und integrierte Handler in Lua zu schreiben. Beispiel einer Unit-Datei zum Starten von 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»; }; }

Anstelle der Arbeit mit PID-Dateien wird die Aktivität laufender Prozesse mithilfe von Deskriptoren überwacht, die vom Systemaufruf pdfork() zurückgegeben werden. Unterstützt wird außerdem die Aktivierung von Diensten nur bei Zugriff auf einen Netzwerk-Socket sowie der Schutz wichtiger Dienste vor einem erzwungenen Beenden bei Speichermangel im System. Darüber hinaus kann die Version des Hintergrundprozesses rcd im laufenden Betrieb aktualisiert werden, ohne dass dabei der Status verloren geht.

Zur Begrenzung der einem Dienst verfügbaren Ressourcen wird rctl eingesetzt, und für eine vollständige Isolation der Dienste wird deren Ausführung in jail-Umgebungen unterstützt. Zudem lässt sich der Zugriff auf den steuernden UNIX-Socket einzelnen Diensten gezielt zuweisen. Der Wechsel in den Ruhemodus wird ebenfalls unterstützt.

Der Systemmanager ist vollständig abwärtskompatibel zum bestehenden rc.d-System für den sequentiellen Start von Diensten und kann ohne Änderungen an vorhandenen rc.d-Skripten und Konfigurationsdateien eingesetzt werden. Es genügt, rcd auf einem laufenden System zu installieren, und nach dem Neustart funktioniert weiterhin alles wie bisher – mit dem Unterschied, dass sich die Bootzeit durch den parallelisierten Start der Dienste verkürzt. Diese Kompatibilität erleichtert die Migration von Systemen auf rcd und ermöglicht es, vorhandene rc.d-Skripte schrittweise in das Format von Unit-Dateien zu überführen.

Zur Kompatibilität mit rc.d wird ein spezieller Unit-Typ namens „legacy“ unterstützt. Rcd scannt den Inhalt von /etc/rc.d/ und /usr/local/etc/rc.d/, analysiert die Header PROVIDE/REQUIRE/BEFORE/KEYWORD in den Skripten, liest die Einstellungen aus rc.conf und ermittelt den Startstatus der Skripte. Anschließend wird jedes Skript als virtuelle Legacy-Unit verarbeitet. Wird der Befehl rcctl zur Verwaltung solcher virtuellen Units verwendet, werden die Operationen in das alte Format übersetzt. So führt beispielsweise „rcctl reload sshd“ zur Ausführung von „/etc/rc.d/sshd reload“.

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster