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.