Layanan atau skrip mungkin berhenti berjalan karena pengecualian program, restart instance, atau pemadaman listrik. Jika layanan atau skrip gagal dilanjutkan pada kesempatan pertama, bisnis online dapat mengalami kerugian. Topik ini menjelaskan cara menggunakan plugin ecs-tool-servicekeepalive dari Asisten Cloud untuk menjaga layanan tetap aktif.
Implementasi
Berdasarkan systemd di Linux, plugin ecs-tool-servicekeepalive menggunakan mekanisme pemantauan berkala untuk memastikan bahwa layanan atau skrip yang terganggu dapat segera dilanjutkan, sehingga menjamin keandalan dan kelangsungan layanan. Untuk menggunakan plugin dalam menjaga layanan tetap aktif, masukkan perintah yang dapat memulai layanan atau programnya. Plugin kemudian secara otomatis menghasilkan konfigurasi layanan systemd berdasarkan perintah startup yang dimasukkan, tanpa memerlukan konfigurasi manual. Setelah konfigurasi dihasilkan, systemd akan memulai layanan dan mengonfigurasinya untuk mulai saat startup sistem.
systemd adalah komponen Linux yang digunakan untuk mengelola layanan. Misalnya, systemd dapat memulai layanan saat startup instance atau memulai ulang layanan setelah berhenti tak terduga. Untuk informasi lebih lanjut, lihat dokumentasi systemd.
Prosedur
Aktifkan keepalive untuk layanan
Setelah Anda menerapkan layanan pada instance Elastic Compute Service (ECS), jalankan plugin ecs-tool-servicekeepalive dari Asisten Cloud sebagai pengguna root.
Mulai layanan sebagai pengguna root
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'<cmd>'"Ganti <cmd> dengan perintah aktual yang dapat memulai layanan. Contoh:
Program Shell:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.shProgram Python:
python /home/root/main.py
Mulai layanan sebagai pengguna tertentu
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,execstart='<cmd>',user=<user_name>,group=<group_name>"Ganti <cmd> dengan perintah aktual yang dapat memulai layanan. Contoh:
Program Shell:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.shProgram Python:
python /home/root/main.py
Ganti <user_name> dengan nama aktual pengguna yang memulai layanan. Jalankan perintah
cut -d: -f1 /etc/passwduntuk melihat daftar pengguna yang ada.Ganti <group_name> dengan nama grup dari pengguna yang memulai layanan. Jalankan perintah
cut -d: -f1 /etc/groupuntuk melihat daftar grup pengguna yang ada.
Anda harus menentukan jalur absolut dari file skrip atau program.
Jika Anda tidak dapat mengaktifkan keepalive untuk layanan, kami sarankan Anda melakukan operasi berikut untuk mencegah pengecualian bisnis akibat proses berjalan ganda untuk layanan tersebut: Kueri status keepalive layanan, nonaktifkan keepalive untuk layanan, atasi masalah, mulai ulang layanan, dan kemudian aktifkan kembali keepalive untuk layanan.
Kueri status keepalive layanan
Jalankan perintah berikut untuk memeriksa apakah keepalive diaktifkan untuk layanan:
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"Keluaran perintah berikut menunjukkan bahwa keepalive diaktifkan untuk layanan:
service_name execstart user group status
ecs_keepalive_1744262359.service /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log active (running) since Thu 2025-04-10 13Nonaktifkan keepalive untuk layanan
Jalankan perintah berikut untuk menonaktifkan keepalive untuk layanan:
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop <service_name>"Ganti <service_name> dengan nama layanan aktual. Anda bisa mendapatkan nama layanan di kolom service_name dari keluaran perintah di Kueri status keepalive layanan.
Saat Anda menonaktifkan keepalive untuk layanan, proses layanan dihentikan, layanan tidak lagi dimulai secara otomatis saat startup sistem, dan konfigurasi layanan yang dihasilkan oleh plugin ecs-tool-servicekeepalive juga dihapus.
Contoh
Siapkan skrip untuk layanan uji.
Dalam skrip, direktori kerja pengguna adalah
/home/ecs-user. Ganti direktori kerja dengan yang sebenarnya.# Dalam direktori /home/ecs-user, buat folder keepalive-simple dan buat skrip test-keepalive.sh di dalam folder. sudo mkdir -p /home/ecs-user/keepalive-simple && \ sudo tee /home/ecs-user/keepalive-simple/test-keepalive.sh > /dev/null << 'EOF' #!/bin/bash # Hasilkan pesan log setiap detik di file log yang ditentukan. while true do sudo echo "$(date '+%Y-%m-%d %H:%M:%S') progress is alive" >> $1 sleep 1 done EOF # Berikan izin eksekusi pada skrip. sudo chmod +x /home/ecs-user/keepalive-simple/test-keepalive.sh(Opsional) Jalankan perintah berikut untuk menanyakan status layanan:
ps aux | grep test-keepalive.shKeluaran perintah berikut menunjukkan bahwa layanan belum dimulai:
ecs-user 2207 0.0 0.0 221528 916 pts/0 S+ 11:34 0:00 grep --color=auto test-keepalive.shAktifkan keepalive untuk layanan.
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log'"Keluaran perintah berikut menunjukkan bahwa keepalive diaktifkan untuk layanan:
Created symlink /etc/systemd/system/multi-user.target.wants/ecs_keepalive_1744256544.service → /etc/systemd/system/ecs_keepalive_1744256544.service. Start systemd service for "/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log" successKueri status keepalive dan status layanan.
Jalankan perintah berikut untuk menanyakan status keepalive layanan:
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"Keluaran perintah berikut menunjukkan bahwa keepalive diaktifkan untuk layanan dan layanan sedang berjalan:
service_name execstart user group status ecs_keepalive_1744256544.service /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log active (running) since Thu 2025-04-10 11(Opsional) Jalankan perintah berikut untuk menanyakan status layanan:
ps aux | grep test-keepalive.shKeluaran perintah berikut menunjukkan bahwa layanan sedang berjalan:
root 3144 0.0 0.0 222200 3420 ? Ss 11:42 0:00 /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log ecs-user 6841 0.0 0.0 221660 968 pts/0 S+ 11:49 0:00 grep --color=auto test-keepalive.sh
(Opsional) Verifikasi efek keepalive.
Secara manual picu proses layanan untuk berhenti guna memverifikasi bahwa Asisten Cloud dapat memulai ulang proses tersebut.
Metode 1: Restart instance ECS
Restart instance di konsol ECS untuk mensimulasikan restart yang tidak terduga.
Metode 2: Hentikan proses layanan
Jalankan perintah berikut untuk menghentikan proses
test-keepalive.sh. Ganti <PID> dengan ID proses (PID) yang Anda peroleh dengan menjalankan perintah ps.sudo date && kill -9 <PID>(Opsional) Jalankan perintah berikut untuk menanyakan status layanan:
ps aux | grep test-keepalive.shKeluaran perintah berikut menunjukkan bahwa layanan sedang berjalan:
root 33061 0.0 0.0 222200 3504 ? Ss 13:19 0:00 /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log ecs-user 34558 0.0 0.0 221660 2556 pts/0 S+ 13:23 0:00 grep --color=auto test-keepalive.sh
Jalankan perintah berikut untuk menonaktifkan keepalive untuk layanan:
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop ecs_keepalive_1744256544.service"Keluaran perintah berikut menunjukkan bahwa keepalive dinonaktifkan untuk layanan:
service check ok, file:ecs_keepalive_1744256544.service is valid Removed /etc/systemd/system/multi-user.target.wants/ecs_keepalive_1744256544.service. stop service ok, service:ecs_keepalive_1744256544.service is stopped and removed
Referensi
Untuk informasi lebih lanjut tentang Asisten Cloud, lihat Ikhtisar.