GNU/Linux >> Tutoriels Linux >  >> Linux

activation de socket systemd vs xinetd

Je ne pense pas que l'activation du socket systemd soit nettement meilleure que xinetd l'activation, lorsqu'elle est considérée isolément ; ce dernier est également stable et existe depuis plus longtemps. L'activation de socket est vraiment intéressante pour le découplage de services :elle permet de démarrer des services en parallèle, même s'ils ont besoin de communiquer, et elle permet de redémarrer des services indépendamment.

Si vous avez un service qui prend en charge xinetd -style activation, il peut être utilisé avec l'activation du socket :un .socket description avec Accept=true se comportera de la même manière que xinetd . Vous aurez également besoin d'un .service fichier pour décrire le service. Les avantages complets de l'activation de socket systemd nécessitent une prise en charge dans le dæmon fournissant le service. Voir le billet de blog sur le sujet.

Mon conseil a tendance à être "si ce n'est pas cassé, ne le réparez pas", mais si vous voulez convertir un xinetd -service basé sur systemd c'est certainement faisable.


Vous pouvez utiliser soit xinetd ou systemd pour l'activation du socket, les deux fonctionneront. Personnellement, je trouve xinetd plus facile à utiliser car tout est dans un seul fichier, mais ont également utilisé systemd car il est plus flexible, notamment avec l'écoute sur plusieurs adresses et le transfert de socket vers les sockets UNIX et pas seulement vers les sockets IP.

Ici, à titre d'exemple, j'ai utilisé pour transférer la connexion TCP vers le socket de fichier MySQL :

/etc/systemd/system/mysql-proxy.service

[Unit]                                                  
Description=MySql Proxy Service
Requires=mysql-proxy.socket

[Service]
Environment=MYSQL_PROXY_TARGET=/var/run/mysql/mysql.sock
EnvironmentFile=-/etc/sysconfig/mysql-proxy
ExecStart=/usr/lib/systemd/systemd-socket-proxyd ${MYSQL_PROXY_TARGET}

/etc/systemd/system/mysql-proxy.socket

[Unit]                                                  
Description=MySql Proxy Socket

[Socket]
ListenStream=192.168.1.1:3306
ListenStream=192.168.2.1:3306
NoDelay=true
FreeBind=true

[Install]
WantedBy=sockets.target

Le transfert traditionnel nécessite Accept=true , systemd les processus conscients sont censés gérer plusieurs connexions dans un processus ou créer des processus supplémentaires selon les besoins.


Linux
  1. Écrire des fichiers de service Systemd de base ?

  2. Comment rediriger la sortie du service systemd vers un fichier

  3. @reboot ne fonctionne pas dans CRON

  4. Comment arrêter le service systemd

  5. rediriger les journaux du service systemd vers un fichier

Commandes Systemctl pour gérer le service Systemd

Utiliser les fonctionnalités de systemd pour sécuriser les services

10 commandes systemd pratiques :une référence

Gestion des cgroups avec systemd

systemd - Donner à mon service plusieurs arguments

Comment envoyer un email si un service systemd est redémarré ?