GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Systemd-Socket-Aktivierung vs. xinetd

Ich glaube nicht, dass die Systemd-Socket-Aktivierung wesentlich besser ist als xinetd Aktivierung, isoliert betrachtet; Letzteres ist auch stabil und gibt es schon länger. Die Socket-Aktivierung ist für die Entkopplung von Diensten sehr interessant:Sie ermöglicht das parallele Starten von Diensten, auch wenn diese kommunizieren müssen, und das unabhängige Neustarten von Diensten.

Wenn Sie einen Dienst haben, der xinetd unterstützt -style-Aktivierung, kann mit Socket-Aktivierung verwendet werden:a .socket Beschreibung mit Accept=true verhält sich genauso wie xinetd . Sie benötigen außerdem einen .service Datei zur Beschreibung des Dienstes. Die vollen Vorteile der Systemd-Socket-Aktivierung erfordern Unterstützung im Dæmon, der den Dienst bereitstellt. Siehe den Blogbeitrag zum Thema.

Mein Rat lautet eher „wenn es nicht kaputt ist, repariere es nicht“, aber wenn du einen xinetd konvertieren möchtest -basierter Dienst für systemd ist sicherlich machbar.


Sie können entweder xinetd verwenden oder systemd Für die Socket-Aktivierung funktionieren beide. Ich persönlich finde xinetd einfacher zu verwenden, da sich alles in einer Datei befindet, aber ich habe auch systemd verwendet weil es flexibler ist, insbesondere beim Abhören mehrerer Adressen und der Socket-Weiterleitung an UNIX-Sockets und nicht nur an IP-Sockets.

Hier als Beispiel habe ich die TCP-Verbindung an den MySQL-Datei-Socket weitergeleitet:

/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

Herkömmliche Weiterleitung benötigt Accept=true , systemd Awareness-Prozesse sollen mehrere Verbindungen in einem Prozess handhaben oder je nach Bedarf weitere Prozesse abzweigen.


Linux
  1. Hinzufügen eines neuen Dienstes zu Linux systemd

  2. Grundlegende Systemd-Dienstdateien schreiben?

  3. Systemd-Dienst startet Nodejs nicht?

  4. So leiten Sie die Ausgabe des systemd-Dienstes in eine Datei um

  5. @reboot funktioniert nicht in CRON

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

Verwenden von systemd-Funktionen zum Sichern von Diensten

10 praktische systemd-Befehle:Eine Referenz

Verwalten von cgroups mit systemd

systemd-Dienstprotokolle in eine Datei umleiten

Wie sende ich eine E-Mail, wenn ein systemd-Dienst neu gestartet wird?