Menurut saya, aktivasi soket sistem jauh lebih baik daripada xinetd
aktivasi, jika dianggap terpisah; yang terakhir juga stabil dan sudah ada lebih lama. Aktivasi soket sangat menarik untuk decoupling layanan:ini memungkinkan layanan dimulai secara paralel, bahkan jika mereka perlu berkomunikasi, dan memungkinkan layanan dimulai ulang secara mandiri.
Jika Anda memiliki layanan yang mendukung xinetd
-style activation, dapat digunakan dengan socket activation:a .socket
deskripsi dengan Accept=true
akan berperilaku dengan cara yang sama seperti xinetd
. Anda juga memerlukan .service
file untuk menjelaskan layanan. Manfaat penuh dari aktivasi soket sistem memerlukan dukungan daemon yang menyediakan layanan tersebut. Lihat entri blog tentang topik tersebut.
Saran saya cenderung “kalau tidak rusak, jangan diperbaiki”, tetapi jika Anda ingin mengonversi xinetd
-layanan berbasis ke systemd itu pasti layak.
Anda dapat menggunakan xinetd
atau systemd
untuk aktivasi soket, keduanya akan berfungsi. Saya pribadi menemukan xinetd
lebih mudah digunakan karena semuanya dalam satu file, tetapi juga menggunakan systemd
karena lebih fleksibel, terutama dengan mendengarkan pada banyak alamat dan penerusan soket ke soket UNIX dan tidak hanya ke soket IP.
Di sini sebagai contoh saya biasa meneruskan koneksi TCP ke soket file 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
Penerusan tradisional memerlukan Accept=true
, systemd
proses sadar seharusnya menangani banyak koneksi dalam satu proses atau memotong proses tambahan sesuai kebutuhan.