Tutorial: Memperbarui dependensi aplikasi, menambal node yang dikelola, dan melakukan pemeriksaan kesehatan khusus aplikasi - AWS Systems Manager

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 yang dikelola, dan melakukan pemeriksaan kesehatan khusus aplikasi

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

Tutorial ini menunjukkan bagaimana menghindari masalah seperti ini dengan menggunakan AWS Systems Manager dokumen (dokumen SSM) AWS-RunPatchBaselineWithHooks untuk mencapai operasi penambalan 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 Systems Manager.

  • Iptables digunakan sebagai firewall lokal.

  • Aplikasi yang di-host pada node terkelola berjalan pada port 443.

  • Aplikasi yang di-host pada node yang dikelola adalah nodeJS aplikasi.

  • Aplikasi yang di-host pada node yang dikelola 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 berjalan dan dapat mendengarkan permintaan. Dalam kasus lain, Anda mungkin ingin juga memverifikasi bahwa koneksi ke lapisan caching atau lapisan database telah dibuat.)

Contoh dalam tutorial ini adalah untuk tujuan demonstrasi saja dan tidak dimaksudkan untuk diimplementasikan apa adanya ke dalam lingkungan produksi. Juga, perlu diingat bahwa fitur kait siklus hidup, kemampuan Systems ManagerPatch 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 reboot.

  • Lepaskan node terkelola dari cluster CRM atau PCS sebelum menambal dan memasang 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 yang dikelola 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 opsi sleep, tentukan jumlah detik lebih besar daripada yang biasanya diperlukan untuk permintaan masuk diselesaikan.

    # 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 SSM dokumen.

  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 diState Manager, kemampuan AWS Systems 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 Target, identifikasi node terkelola Anda dengan menentukan tag, memilih node secara manual, memilih grup sumber daya, atau memilih semua node terkelola.

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

  7. Di bagian Rate control, pilih opsi untuk mengontrol bagaimana asosiasi berjalan pada beberapa node terkelola. Pastikan bahwa hanya sebagian dari node terkelola yang diperbarui pada suatu waktu. Jika tidak, semua atau sebagian besar armada Anda dapat dijadikan offline sekaligus. Untuk informasi lebih lanjut tentang menggunakan kontrol rate, lihat Tentang target dan kontrol tingkat dalam 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 izin pengguna IAM yang melakukan tugas ini. Untuk informasi selengkapnya, lihat Mengonfigurasi izin instans yang diperlukan untuk Systems Manager atau Membuat peran layanan IAM untuk lingkungan hibrid. Selain itu, jika bucket S3 yang ditentukan 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.