1. Mengelola Layanan Dengan Systemd - PART I
E. Mengontrol systemd pada Mesin Jarak Jauh
Selain mengontrol sistem systemd dan manajer layanan secara lokal, utilitas systemctl juga memungkinkan Anda untuk berinteraksi dengan systemd yang berjalan pada mesin jarak jauh melalui protokol SSH. Asalkan layanan sshd di mesin jarak jauh sedang berjalan, Anda dapat terhubung ke mesin ini dengan menjalankan perintah systemctl dengan opsi baris perintah --host atau -H:
Ganti user_name dengan nama pengguna jarak jauh, host_name dengan nama host mesin, dan perintah dengan salah satu perintah systemctl yang dijelaskan di atas. Perhatikan bahwa mesin jarak jauh harus dikonfigurasi untuk mengizinkan akses jarak jauh pengguna yang dipilih melalui protokol SSH.F. Membuat dan Memodifikasi File Unit systemd
File unit berisi arahan konfigurasi yang mendeskripsikan unit dan menentukan perilakunya. Beberapa perintah systemctl bekerja dengan file unit di latar belakang. Untuk membuat penyesuaian yang lebih baik, administrator sistem harus mengedit atau membuat file unit secara manual.
Nama file unit mengambil bentuk berikut:
Di sini, unit_name adalah singkatan dari nama unit dan type_extension mengidentifikasi tipe unit. Misalnya, biasanya ada unit sshd.service serta sshd.socket di sistem Anda.
File unit dapat dilengkapi dengan direktori untuk file konfigurasi tambahan. Misalnya, untuk menambahkan opsi konfigurasi kustom ke sshd.service, buat file sshd.service.d/custom.conf dan masukkan perintah tambahan di sana.
Juga, direktori sshd.service.wants/ dan sshd.service.requires/ dapat dibuat. Direktori ini berisi link simbolik ke file unit yang merupakan dependensi dari layanan sshd. Tautan simbolik secara otomatis dibuat selama instalasi sesuai dengan opsi file unit [Instal] Juga dimungkinkan untuk membuat direktori ini dan tautan simbolik secara manual.
Banyak opsi file unit dapat disetel menggunakan apa yang disebut penentu unit - string karakter pengganti yang secara dinamis diganti dengan parameter unit saat file unit dimuat. Ini memungkinkan pembuatan file unit generik yang berfungsi sebagai template untuk menghasilkan unit yang dibuat instance-nya.
1. Memahami Struktur File Unit
File unit biasanya terdiri dari tiga bagian:
File unit biasanya terdiri dari tiga bagian:
- [Unit] - berisi opsi umum yang tidak bergantung pada tipe unit. Opsi ini memberikan deskripsi unit, menentukan perilaku unit, dan mengatur ketergantungan ke unit lain.
- [tipe unit] - jika sebuah unit memiliki arahan tipe-spesifik, ini dikelompokkan dalam bagian yang dinamai sesuai tipe unit.
- [Instal] - berisi informasi tentang instalasi unit yang digunakan oleh perintah mengaktifkan dan menonaktifkan systemctl
2. Membuat File Unit Kustom
Ada beberapa kasus penggunaan untuk membuat file unit dari awal: Anda dapat menjalankan daemon kustom, membuat instance kedua dari beberapa layanan yang ada, atau mengimpor SysV init skrip. Di sisi lain, jika Anda hanya bermaksud untuk mengubah atau memperluas perilaku unit yang ada. Prosedur berikut menjelaskan proses umum pembuatan layanan kustom:
- Siapkan file yang dapat dieksekusi dengan layanan kustom. Ini bisa berupa skrip yang dibuat khusus, atau dapat dieksekusi yang dikirimkan oleh penyedia perangkat lunak. Jika perlu, siapkan file PID untuk menyimpan PID konstan untuk proses utama layanan kustom. Dimungkinkan juga untuk menyertakan file lingkungan untuk menyimpan variabel shell untuk layanan. Pastikan skrip sumber dapat dieksekusi (dengan menjalankan chmod a+x) dan tidak interaktif.
- Buat file unit di direktori /etc/systemd/system/ dan pastikan file tersebut memiliki izin file yang benar. Jalankan sebagai root:
Ganti nama dengan nama layanan yang akan dibuat. Perhatikan bahwa file tidak perlu dapat dieksekusi.- Buka file name.service yang dibuat pada langkah sebelumnya, dan tambahkan opsi konfigurasi layanan. Ada berbagai opsi yang dapat digunakan tergantung pada jenis layanan yang ingin Anda buat. Berikut ini adalah contoh konfigurasi unit untuk layanan terkait jaringan:
Dimana:
- service_description adalah deskripsi informatif yang ditampilkan dalam file log jurnal dan dalam output dari perintah systemctl status.
- pengaturan After memastikan bahwa layanan dimulai hanya setelah jaringan berjalan. Tambahkan daftar layanan atau target relevan lainnya yang dipisahkan spasi.
- path_to_executable singkatan dari path ke layanan aktual yang dapat dieksekusi.
- Type = forking digunakan untuk daemon yang melakukan panggilan sistem fork. Proses utama layanan dibuat dengan PID yang ditentukan di path_to_pidfile.
- WantedBy menyatakan target atau target tempat layanan harus dimulai. Pikirkan target ini sebagai pengganti konsep runlevel yang lebih lama.
Jika Anda ingin menyetel batas untuk layanan yang dimulai oleh systemd, lihat artikel Red Hat Knowledgebase Cara menyetel batas untuk layanan di RHEL 7 dan systemd. Batasan ini perlu disetel dalam file unit layanan. Perhatikan bahwa systemd mengabaikan batasan yang ditetapkan dalam file konfigurasi /etc/security/limits.conf dan /etc/security/limits.d/*.conf. Batasan yang ditentukan dalam file-file ini ditetapkan oleh PAM saat memulai sesi login, tetapi daemon yang dimulai oleh systemd tidak menggunakan sesi login PAM.
G. Pertimbangan Tambahan Saat Mengelola Layanan
Selama operasi normal, systemd mempertahankan asosiasi antara abstraksi unit dan proses yang mendasari aktif pada sistem.
Dari: man systemd
Hierarki cgroup sangat penting untuk pandangan systemd tentang proses dan kesehatan layanan. Ketika sebuah proses bercabang, itu mewarisi cgroup dari proses pembuatan. Dengan demikian, semua proses yang terkait dengan unit tertentu dapat diverifikasi dengan membaca konten file cgroup.procs yang berlaku, seperti:
Output cocok dengan informasi CGroup yang dikembalikan selama operasi unit status systemctl:Untuk melihat langsung pengelompokan proses di seluruh sistem ini, utilitas systemd-cgls dapat digunakan:Agar systemd berfungsi dengan baik, layanan harus dimulai atau dihentikan melalui sistem systemd untuk mempertahankan proses yang benar untuk pengelompokan unit. Operasi apa pun yang mengambil tindakan eksternal menyebabkan struktur cgroup yang diperlukan tidak dibuat. Ini terjadi karena systemd tidak menyadari sifat khusus dari proses yang dimulai.
Sebagai contoh dari batasan di atas, menghentikan layanan httpd dan kemudian menerbitkan / usr / sbin / httpd secara langsung menghasilkan yang berikut:
Perhatikan bahwa proses httpd sekarang terlihat di bawah user-0.slice dan session-168.scope. Layanan ini diperlakukan sebagai proses yang dimulai pengguna, bukan layanan sistem, yang harus dipantau dan dikelola secara langsung oleh systemd. Beberapa kegagalan yang dapat terjadi karena ketidaksesuaian ini termasuk, namun tidak terbatas pada:- Layanan tidak dimatikan dengan benar selama sistem dimatikan atau dimulai ulang.
- Sinyal tak terduga dikirim selama pengguna keluar seperti SIGHUP dan SIGTERM.
- Proses yang gagal tidak secara otomatis dimulai ulang meskipun memiliki Restart = Directive
Sekian dari saya, Terimakasih
Selamat mencoba 😀
Post a Comment
Post a Comment