View a markdown version of this page

Tutorial: Memperbarui dependensi aplikasi, menambal node terkelola, dan melakukan pemeriksaan kesehatan khusus aplikasi menggunakan konsol - AWS Systems Manager

• AWS Systems Manager CloudWatch Dasbor tidak akan lagi tersedia setelah 30 April 2026. Pelanggan dapat terus menggunakan CloudWatch konsol Amazon untuk melihat, membuat, dan mengelola dasbor Amazon CloudWatch mereka, seperti yang mereka lakukan hari ini. Untuk informasi selengkapnya, lihat dokumentasi CloudWatch Dasbor Amazon.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Memperbarui dependensi aplikasi, menambal node terkelola, dan melakukan pemeriksaan kesehatan khusus aplikasi menggunakan konsol

Dalam banyak kasus, node yang dikelola harus di-boot ulang setelah ditambal dengan pembaruan perangkat lunak terbaru. Namun, me-reboot node dalam produksi tanpa perlindungan dapat menyebabkan beberapa masalah, seperti memanggil alarm, merekam data metrik yang salah, dan mengganggu sinkronisasi data.

Tutorial ini menunjukkan cara menghindari masalah seperti ini dengan menggunakan AWS Systems Manager dokumen (dokumen SSM) AWS-RunPatchBaselineWithHooks untuk mencapai operasi tambalan multi-langkah yang kompleks yang menyelesaikan hal berikut:

  1. Mencegah koneksi baru ke aplikasi

  2. Menginstal pembaruan sistem operasi

  3. Memperbarui dependensi paket aplikasi

  4. Memulai ulang sistem

  5. Melakukan pemeriksaan kesehatan khusus aplikasi

Untuk contoh ini, kami telah menyiapkan infrastruktur kami dengan cara ini:

  • Mesin virtual yang ditargetkan terdaftar sebagai node terkelola dengan Manajer Sistem.

  • Iptables digunakan sebagai firewall lokal.

  • Aplikasi yang dihosting pada node yang dikelola berjalan di port 443.

  • Aplikasi yang dihosting pada node yang dikelola adalah nodeJS aplikasi.

  • Aplikasi yang dihosting pada node terkelola dikelola oleh manajer proses pm2.

  • Aplikasi ini sudah memiliki titik akhir pemeriksaan kesehatan yang ditentukan.

  • Titik akhir pemeriksaan kesehatan aplikasi tidak memerlukan autentikasi pengguna akhir. Titik akhir memungkinkan dilakukannya pemeriksaan kesehatan yang memenuhi persyaratan organisasi dalam menetapkan ketersediaan. (Di lingkungan Anda, mungkin cukup untuk memastikan bahwa nodeJS aplikasi sedang berjalan dan dapat mendengarkan permintaan. Dalam kasus lain, Anda mungkin ingin juga memverifikasi bahwa koneksi ke lapisan caching atau lapisan database telah dibuat.)

Contoh-contoh dalam tutorial ini hanya untuk tujuan demonstrasi dan tidak dimaksudkan untuk diimplementasikan apa adanya ke lingkungan produksi. Juga, perlu diingat bahwa fitur kait siklus hidupPatch Manager, dengan AWS-RunPatchBaselineWithHooks dokumen dapat mendukung banyak skenario lainnya. Berikut adalah beberapa contoh tanda.

  • Hentikan agen pelaporan metrik sebelum menambal dan memulai ulang setelah node terkelola melakukan reboot.

  • Lepaskan node terkelola dari cluster CRM atau PCS sebelum menambal dan pasang kembali setelah node reboot.

  • Perbarui perangkat lunak pihak ketiga (misalnya, Java, Tomcat, aplikasi Adobe, dan sebagainya) pada Windows Server mesin setelah pembaruan sistem operasi (OS) diterapkan, tetapi sebelum node terkelola reboot.

Untuk memperbarui dependensi aplikasi, tambal node terkelola, dan lakukan pemeriksaan kesehatan khusus aplikasi
  1. Buat dokumen SSM untuk script pra-instalasi Anda dengan konten berikut ini dan berikan nama NodeJSAppPrePatch. Ganti your_application dengan nama aplikasi Anda.

    Script ini segera memblokir permintaan masuk baru dan menyediakan lima detik untuk permintaan yang sudah aktif agar diselesaikan sebelum memulai operasi patching. Untuk sleep opsi ini, tentukan beberapa detik lebih besar dari yang biasanya diperlukan untuk menyelesaikan permintaan masuk.

    # exit on error set -e # set up rule to block incoming traffic iptables -I INPUT -j DROP -p tcp --syn --destination-port 443 || exit 1 # wait for current connections to end. Set timeout appropriate to your application's latency sleep 5 # Stop your application pm2 stop your_application

    Untuk informasi tentang membuat dokumen SSM, lihat Membuat konten dokumen SSM.

  2. Buat dokumen SSM lain dengan konten berikut ini untuk script pasca instalasi Anda untuk memperbarui dependensi aplikasi Anda dan berikan nama NodeJSAppPostPatch. Ganti /your/application/path dengan jalur ke aplikasi Anda.

    cd /your/application/path npm update # you can use npm-check-updates if you want to upgrade major versions
  3. Buat dokumen SSM lain dengan konten berikut ini untuk script onExit Anda untuk menyalakan kembali aplikasi Anda dan melakukan pemeriksaan kesehatan. Namakan dokumen SSM ini NodeJSAppOnExitPatch. Ganti your_application dengan nama aplikasi Anda.

    # exit on error set -e # restart nodeJs application pm2 start your_application # sleep while your application starts and to allow for a crash sleep 10 # check with pm2 to see if your application is running pm2 pid your_application # re-enable incoming connections iptables -D INPUT -j DROP -p tcp --syn --destination-port # perform health check /usr/bin/curl -m 10 -vk -A "" http://localhost:443/health-check || exit 1
  4. Buat asosiasi State Manager untuk mengeluarkan operasi dengan melakukan langkah-langkah berikut:

    1. Buka AWS Systems Manager konsol di https://console.aws.amazon.com/systems-manager/.

    2. Di panel navigasi, pilih State Manager, lalu pilih Buat asosiasi.

    3. Untuk Nama, berikan nama untuk membantu mengidentifikasi tujuan asosiasi.

    4. Di daftar Dokumen, pilih AWS-RunPatchBaselineWithHooks.

    5. Untuk Operasi, pilih Instal.

    6. (Opsional) Untuk Snapshot Id, berikan GUID yang Anda buat untuk membantu mempercepat operasi dan memastikan konsistensi. Nilai GUID dapat sesederhana 00000000-0000-0000-0000-111122223333.

    7. Untuk Pre Install Hook Doc Name, masukkan NodeJSAppPrePatch.

    8. Untuk Post Install Hook Doc Name, masukkan NodeJSAppPostPatch.

    9. Untuk On ExitHook Doc Name, masukkanNodeJSAppOnExitPatch.

  5. Untuk Tar get, identifikasi node terkelola dengan menentukan tag, memilih node secara manual, memilih grup sumber daya, atau memilih semua node yang dikelola.

  6. Untuk Tentukan jadwal, tentukan seberapa sering untuk menjalankan asosiasi. Untuk tambalan node terkelola, sekali seminggu adalah irama umum.

  7. Di bagian Kontrol tingkat, pilih opsi untuk mengontrol bagaimana asosiasi berjalan pada beberapa node terkelola. Pastikan bahwa hanya sebagian dari node terkelola yang diperbarui pada satu waktu. Jika tidak, semua atau sebagian besar armada Anda dapat dijadikan offline sekaligus. Untuk informasi lebih lanjut tentang menggunakan kontrol rate, lihat Memahami target dan kontrol tarif di State Manager asosiasi.

  8. (Opsional) Untuk Pilihan output, untuk menyimpan output perintah ke file, pilih kotak Aktifkan output penulisan ke S3. Masukkan nama bucket dan prefiks (folder) di dalam kotak.

    catatan

    Izin S3 yang memberikan kemampuan untuk menulis data ke bucket S3 adalah izin dari profil instance yang ditetapkan ke node terkelola, bukan milik pengguna IAM yang melakukan tugas ini. Untuk informasi selengkapnya, lihat Mengonfigurasi izin instans yang diperlukan untuk Manajer Sistem atau Membuat peran layanan IAM untuk lingkungan hibrida. Selain itu, jika bucket S3 yang ditentukan berada di tempat yang berbeda Akun AWS, verifikasi bahwa profil instance atau peran layanan IAM yang terkait dengan node terkelola memiliki izin yang diperlukan untuk menulis ke bucket tersebut.

  9. Pilih Buat Asosiasi.