systemd ソケットのアクティベーションが xinetd
よりも大幅に優れているとは思いません 単独で考えた場合の活性化。後者も安定しており、長く使用されています。ソケットのアクティブ化は、サービスのデカップリングにとって非常に興味深いものです。通信が必要な場合でも、サービスを並行して開始し、サービスを個別に再起動できます。
xinetd
をサポートするサービスがある場合 スタイルのアクティベーション、ソケットのアクティベーションで使用できます:a .socket
Accept=true
による説明 xinetd
と同じように動作します . .service
も必要です サービスを記述するファイル。 systemd ソケット アクティベーションの利点を最大限に活用するには、サービスを提供するデーモンでのサポートが必要です。このトピックに関するブログ投稿を参照してください。
私のアドバイスは、「壊れていない場合は修正しないでください」になりがちですが、xinetd
を変換する場合は、
xinetd
のいずれかを使用できます または systemd
ソケットのアクティブ化の場合、両方が機能します。個人的には xinetd
を見つけました すべてが 1 つのファイルにまとめられているため使いやすいですが、systemd
も使用しています。 特に複数のアドレスでリッスンし、IP ソケットだけでなく UNIX ソケットへのソケット転送で、より柔軟だからです。
ここでは、TCP 接続を 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
従来の転送には Accept=true
が必要です 、 systemd
認識プロセスは、1 つのプロセスで複数の接続を処理するか、必要に応じて追加のプロセスをフォークすることになっています。