GNU/Linux >> Linux の 問題 >  >> Linux

systemd ソケットのアクティベーションと xinetd

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 つのプロセスで複数の接続を処理するか、必要に応じて追加のプロセスをフォークすることになっています。


Linux
  1. 基本的なSystemdサービスファイルを作成しますか?

  2. Linux – Fsckスクリプトの場所?

  3. SystemdサービスはNodejsを起動しませんか?

  1. Systemdサービスをパッケージ化する方法は?

  2. systemd サービスの出力をファイルにリダイレクトする方法

  3. @reboot が CRON で機能しない

  1. systemd サービスを停止する方法

  2. systemd - サービスに複数の引数を与える

  3. systemd サービス ログをファイルにリダイレクトする