Un nouveau gestionnaire de systèmes rcd est en développement pour FreeBSD

Baptiste Daroussin, membre de la FreeBSD Core Team et auteur du gestionnaire de paquets pkg, développe un nouveau gestionnaire de système pour FreeBSD — rcd. Le gestionnaire de système rcd est appelé par le processus init au lieu de /etc/rc, lit les fichiers de configuration des services (/etc/rcd.d/*.ucl), construit un arbre de dépendances et lance les services autant que possible en parallèle, puis surveille le fonctionnement des services et les redémarre si nécessaire.

La gestion des processus en arrière-plan et les opérations sur les services peuvent être effectuées par la transmission directe de commandes au socket UNIX ou à l'aide de l'outil en ligne de commande rctl. Les fichiers unit avec les paramètres des services sont formatés en UCL, qui ressemble au format des fichiers de configuration de nginx et bind, avec des éléments pour simplifier le traitement automatisé, empruntés à JSON. Il est possible de créer des modèles de fichiers unit types et d'écrire des gestionnaires intégrés en langage Lua. Exemple de fichier unit pour le lancement de nginx : name = «nginx»; description = «Serveur HTTP Nginx»; 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»; }; }

Au lieu de travailler avec des fichiers PID, la surveillance de l'activité des processus en cours est effectuée à l'aide des descripteurs retournés par l'appel système pdfork(). Il y a un support pour activer les services uniquement lors de l'accès au socket réseau et la possibilité de protéger les services importants contre une terminaison forcée en cas de manque de mémoire dans le système. Il est possible de mettre à jour la version du processus en arrière-plan rcd à la volée sans perte d'état.

Pour limiter les ressources disponibles pour le service, rctl est utilisé, et pour une isolation complète des services, leur exécution peut se faire dans des environnements jail. La configuration de l'accès au socket UNIX de contrôle est possible en liaison avec des services individuels. Le passage en mode veille est également supporté.

Le gestionnaire de système est entièrement compatible avec le système existant de démarrage séquentiel des services rc.d et peut fonctionner sans modification des scripts rc.d et des fichiers de configuration existants. Il suffit d'installer rcd sur un système en fonctionnement et après le redémarrage, tout continuera à fonctionner comme auparavant, à l'exception de la réduction du temps de démarrage grâce à la parallélisation du démarrage des services. Une telle compatibilité facilitera la migration des systèmes vers rcd et permettra de transformer progressivement les scripts rc.d existants en fichiers unit.

Pour la compatibilité avec rc.d, un type spécial d'unit appelé « legacy » est pris en charge. Rcd analyse le contenu de /etc/rc.d/ et /usr/local/etc/rc.d/, examine les en-têtes PROVIDE/REQUIRE/BEFORE/KEYWORD dans les scripts, lit les paramètres rc.conf et détermine l'état de démarrage des scripts, puis traite chaque script comme une unité legacy virtuelle. En cas d'utilisation de la commande rcctl pour gérer de telles unités virtuelles, les opérations sont traduites dans l'ancien format, par exemple, l'exécution de « rcctl reload sshd » entraînera l'exécution de « /etc/rc.d/sshd reload ».

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster