Mengintegrasikan CodeDeploy dengan Auto Scaling Amazon EC2 - AWS CodeDeploy

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

Mengintegrasikan CodeDeploy dengan Auto Scaling Amazon EC2

CodeDeploy mendukung Amazon EC2 Auto Scaling, layanan AWS yang meluncurkan instans Amazon EC2 secara otomatis sesuai dengan kondisi yang Anda tentukan. Kondisi ini dapat mencakup batas yang terlampaui dalam interval waktu tertentu untuk pemanfaatan CPU, membaca atau menulis disk, atau lalu lintas jaringan masuk atau keluar. Auto Scaling Amazon EC2 menghentikan instans saat tidak lagi diperlukan. Untuk informasi selengkapnya, lihat Apa itu Auto Scaling Amazon EC2? di Panduan Pengguna Auto Scaling Amazon EC2.

Saat instans Amazon EC2 baru diluncurkan sebagai bagian dari grup Auto Scaling Amazon EC2 CodeDeploy , Anda dapat menerapkan revisi Anda ke instans baru secara otomatis. Anda juga dapat mengoordinasikan penerapan CodeDeploy dengan instans Auto Scaling Amazon EC2 yang terdaftar dengan penyeimbang beban Elastic Load Balancing. Untuk informasi selengkapnya, lihat Integrating CodeDeploy with Elastic Load Balancing dan Siapkan penyeimbang beban di Elastic Load Balancing untuk penerapan Amazon CodeDeploy EC2.

catatan

Anda mungkin mengalami masalah jika mengaitkan beberapa grup penerapan dengan satu grup Auto Scaling Amazon EC2. Jika satu penerapan gagal, misalnya, instance akan mulai dimatikan, tetapi penerapan lain yang sedang berjalan dapat memakan waktu satu jam untuk habis waktu. Untuk informasi selengkapnya, lihat Hindari mengaitkan beberapa grup penerapan dengan satu grup Auto EC2 Scaling Amazon dan Under the hood: CodeDeploy dan integrasi Auto Scaling Amazon EC2.

Menyebarkan CodeDeploy aplikasi ke grup Auto Scaling Amazon EC2

Untuk menerapkan revisi CodeDeploy aplikasi ke grup Auto Scaling Amazon EC2:

  1. Buat atau temukan profil instans IAM yang memungkinkan grup Auto Scaling Amazon EC2 bekerja dengan Amazon S3. Untuk informasi selengkapnya, lihat Langkah 4: Buat profil IAM instans untuk EC2 instans Amazon Anda.

    catatan

    Anda juga dapat menggunakan CodeDeploy untuk menerapkan revisi dari GitHub repositori ke grup Auto Scaling Amazon EC2. Meskipun instans Amazon EC2 masih memerlukan profil instans IAM, profil tersebut tidak memerlukan izin tambahan untuk menerapkan dari repositori. GitHub

  2. Buat atau gunakan grup Auto Scaling Amazon EC2, yang menentukan profil instans IAM dalam konfigurasi atau templat peluncuran Anda. Untuk informasi selengkapnya, lihat peran IAM untuk aplikasi yang berjalan di instans Amazon EC2.

  3. Membuat atau menemukan peran layanan yang memungkinkan CodeDeploy untuk membuat grup penerapan yang berisi grup Auto Scaling Amazon EC2.

  4. Buat grup penyebaran dengan CodeDeploy, tentukan nama grup Auto Scaling Amazon EC2, peran layanan, dan beberapa opsi lainnya. Untuk informasi selengkapnya, lihat Buat grup penerapan untuk penerapan di tempat (konsol) atau Buat grup penerapan untuk penerapan di tempat (konsol).

  5. Gunakan CodeDeploy untuk menerapkan revisi Anda ke grup penerapan yang berisi grup Auto Scaling Amazon EC2.

Untuk informasi selengkapnya, lihat Tutorial: Gunakan CodeDeploy untuk menyebarkan aplikasi ke grup Auto Scaling.

Mengaktifkan penerapan penghentian selama peristiwa penskalaan Auto Scaling

Penerapan terminasi adalah jenis CodeDeploy penerapan yang diaktifkan secara otomatis saat terjadi peristiwa penskalaan Auto Scaling. CodeDeploy melakukan penerapan penghentian tepat sebelum layanan Auto Scaling menghentikan instance. Selama penerapan penghentian, CodeDeploy tidak menerapkan apa pun. Sebagai gantinya, ini menghasilkan peristiwa siklus hidup, yang dapat Anda hubungkan ke skrip Anda sendiri untuk mengaktifkan fungsionalitas shutdown khusus. Misalnya, Anda dapat menghubungkan peristiwa ApplicationStop siklus hidup ke skrip yang mematikan aplikasi Anda dengan anggun sebelum instance dihentikan.

Untuk daftar peristiwa siklus hidup yang CodeDeploy dihasilkan selama penerapan penghentian, lihat. Ketersediaan kait acara siklus hidup

Jika penerapan penghentian gagal karena alasan apa pun, CodeDeploy akan memungkinkan penghentian instance untuk dilanjutkan. Ini berarti bahwa instance akan dimatikan meskipun CodeDeploy tidak menjalankan set lengkap (atau apa pun) peristiwa siklus hidup hingga selesai.

Jika Anda tidak mengaktifkan penerapan penghentian, layanan Auto Scaling akan tetap menghentikan instans Amazon EC2 saat peristiwa scale-in terjadi, tetapi tidak akan menghasilkan peristiwa siklus hidup. CodeDeploy

catatan

Terlepas dari apakah Anda mengaktifkan penerapan penghentian atau tidak, jika layanan Auto Scaling menghentikan instans Amazon EC2 CodeDeploy saat penerapan sedang berlangsung, maka kondisi balapan dapat terjadi antara peristiwa siklus hidup yang dihasilkan oleh Auto Scaling dan layanan. CodeDeploy Misalnya, peristiwa Terminating siklus hidup (yang dihasilkan oleh layanan Auto Scaling) mungkin mengganti ApplicationStart peristiwa (dihasilkan oleh penerapan). CodeDeploy Dalam skenario ini, Anda mungkin mengalami kegagalan dengan penghentian instans Amazon EC2 atau penerapan CodeDeploy .

Untuk mengaktifkan CodeDeploy untuk melakukan penerapan penghentian

Setelah kait terminasi diinstal, peristiwa scale-in (terminasi) terungkap sebagai berikut:

  1. Layanan Auto Scaling (atau secara sederhana, Auto Scaling) menentukan bahwa peristiwa scale-in perlu terjadi, dan menghubungi layanan EC2 untuk menghentikan instans EC2.

  2. Layanan EC2 mulai menghentikan instans EC2. Contoh bergerak ke Terminating negara bagian, dan kemudian ke Terminating:Wait negara bagian.

  3. SelamaTerminating:Wait, Auto Scaling menjalankan semua kait siklus hidup yang terpasang pada grup Auto Scaling, termasuk hook terminasi yang dipasang oleh. CodeDeploy

  4. Hook terminasi mengirimkan pemberitahuan ke antrian Amazon SQS yang disurvei oleh. CodeDeploy

  5. Setelah menerima pemberitahuan, CodeDeploy mem-parsing pesan, melakukan beberapa validasi, dan melakukan penyebaran penghentian.

  6. Saat penerapan penghentian berjalan, CodeDeploy kirim detak jantung setiap lima menit ke Auto Scaling untuk memberi tahu bahwa instance masih dikerjakan.

  7. Sejauh ini, instans EC2 masih dalam Terminating:Wait status (atau mungkin Warmed:Pending:Wait status, jika Anda telah mengaktifkan kumpulan hangat grup Auto Scaling).

  8. Ketika penerapan selesai, CodeDeploy menunjukkan Auto Scaling CONTINUE ke proses penghentian EC2, terlepas dari apakah penerapan penghentian berhasil atau gagal.

Cara Kerja Auto Scaling Amazon EC2 CodeDeploy

Saat Anda membuat atau memperbarui grup CodeDeploy penerapan untuk menyertakan grup Auto Scaling CodeDeploy, mengakses grup Auto Scaling menggunakan peran layanan, lalu menginstal hook siklus hidup Auto Scaling CodeDeploy ke grup Auto Scaling Anda.

catatan

Kait siklus hidup Auto Scaling berbeda dari peristiwa siklus hidup (juga disebut kait peristiwa siklus hidup) yang dihasilkan oleh dan dijelaskan dalam panduan ini. CodeDeploy AppSpec Bagian 'kait'

Kait siklus hidup Auto Scaling yang dipasang adalah: CodeDeploy

  • Hook peluncuran - Kait ini memberi tahu CodeDeploy bahwa acara penskalaan Auto Scaling sedang berlangsung, dan CodeDeploy itu perlu memulai penerapan peluncuran.

    Selama penyebaran peluncuran, CodeDeploy:

    • Menerapkan revisi aplikasi Anda ke instance scaled-out.

    • Menghasilkan peristiwa siklus hidup untuk menunjukkan kemajuan penerapan. Anda dapat menghubungkan peristiwa siklus hidup ini ke skrip Anda sendiri untuk mengaktifkan fungsionalitas startup kustom. Untuk informasi lebih lanjut, lihat tabel diKetersediaan kait acara siklus hidup.

    Kait peluncuran dan penerapan peluncuran terkait selalu diaktifkan dan tidak dapat dimatikan.

  • Hook terminasi — Hook opsional ini memberi tahu CodeDeploy bahwa peristiwa penskalaan Auto Scaling sedang berlangsung, dan CodeDeploy itu perlu memulai penerapan penghentian.

    Selama penerapan penghentian, buat CodeDeploy peristiwa siklus hidup untuk menunjukkan kemajuan shutdown instance. Untuk informasi selengkapnya, lihat Mengaktifkan penerapan penghentian selama peristiwa penskalaan Auto Scaling.

Setelah CodeDeploy menginstal kait siklus hidup, bagaimana mereka digunakan?

Setelah kait siklus hidup peluncuran dan penghentian diinstal, masing-masing digunakan oleh selama acara penskalaan dan CodeDeploy penskalaan grup Auto Scaling.

Acara scale-out (peluncuran) terungkap sebagai berikut:

  1. Layanan Auto Scaling (atau secara sederhana, Auto Scaling) menentukan bahwa peristiwa scale-out perlu terjadi, dan menghubungi layanan EC2 untuk meluncurkan instans EC2 baru.

  2. Layanan EC2 meluncurkan instans EC2 baru. Contoh bergerak ke Pending negara bagian, dan kemudian ke Pending:Wait negara bagian.

  3. SelamaPending:Wait, Auto Scaling menjalankan semua kait siklus hidup yang terpasang pada grup Auto Scaling, termasuk hook peluncuran yang dipasang oleh. CodeDeploy

  4. Kait peluncuran mengirimkan pemberitahuan ke antrian Amazon SQS yang disurvei oleh. CodeDeploy

  5. Setelah menerima pemberitahuan, CodeDeploy mem-parsing pesan, melakukan beberapa validasi, dan memulai penyebaran peluncuran.

  6. Saat penerapan peluncuran sedang berjalan, CodeDeploy kirim detak jantung setiap lima menit ke Auto Scaling untuk memberi tahu bahwa instance masih dikerjakan.

  7. Sejauh ini, instans EC2 masih dalam Pending:Wait keadaan.

  8. Ketika penerapan selesai, CodeDeploy menunjukkan Auto Scaling ke CONTINUE salah satu ABANDON atau proses peluncuran EC2, tergantung pada apakah penerapan berhasil atau gagal.

    • Jika CodeDeploy menunjukkanCONTINUE, Auto Scaling melanjutkan proses peluncuran, baik menunggu kait lain selesai, atau memasukkan instance ke dalam Pending:Proceed dan kemudian status. InService

    • Jika CodeDeploy menunjukkanABANDON, Auto Scaling menghentikan instans EC2, dan memulai ulang prosedur peluncuran jika diperlukan untuk memenuhi jumlah instans yang diinginkan, seperti yang didefinisikan dalam pengaturan Kapasitas yang Diinginkan Auto Scaling.

Peristiwa scale-in (terminasi) terungkap sebagai berikut:

Lihat Mengaktifkan penerapan penghentian selama peristiwa penskalaan Auto Scaling.

Bagaimana CodeDeploy nama grup Auto Scaling Amazon EC2

Selama penerapan biru/hijau pada platform komputasi EC2/lokal, Anda memiliki dua opsi untuk menambahkan instance ke lingkungan pengganti (hijau):

  • Gunakan contoh yang sudah ada atau yang Anda buat secara manual.

  • Gunakan pengaturan dari grup Auto Scaling Amazon EC2 yang Anda tentukan untuk menentukan dan membuat instance di grup Auto Scaling Amazon EC2 yang baru.

Jika Anda memilih opsi kedua, berikan CodeDeploy grup Auto Scaling Amazon EC2 baru untuk Anda. Ini menggunakan konvensi berikut untuk memberi nama grup:

CodeDeploy_deployment_group_name_deployment_id

Misalnya, jika penerapan dengan ID 10 menyebarkan grup penerapan bernamaalpha-deployments, grup Auto Scaling Amazon EC2 yang disediakan akan diberi nama. CodeDeploy_alpha-deployments_10 Untuk informasi selengkapnya, lihat Membuat grup penerapan untuk EC2/penerapan biru/hijau lokal (konsol) dan GreenFleetProvisioningOption.

Urutan eksekusi peristiwa kait siklus hidup kustom

Anda dapat menambahkan kait siklus hidup Anda sendiri ke grup Auto Scaling Amazon EC2 yang digunakan. CodeDeploy Namun, urutan di mana peristiwa hook siklus hidup kustom tersebut dijalankan tidak dapat ditentukan sebelumnya sehubungan dengan peristiwa siklus hidup penerapan CodeDeploy default. Misalnya, jika Anda menambahkan hook siklus hidup kustom yang diberi nama ReadyForSoftwareInstall ke grup Auto Scaling Amazon EC2, Anda tidak dapat mengetahui sebelumnya apakah hook tersebut akan dijalankan sebelum peristiwa siklus hidup penerapan default pertama, atau setelah peristiwa siklus hidup penerapan default terakhir. CodeDeploy

Untuk mempelajari cara menambahkan kait siklus hidup khusus ke grup Auto Scaling Amazon EC2, lihat Menambahkan kait siklus hidup di Panduan Pengguna Auto Scaling Amazon EC2.

Peristiwa penskalaan selama penerapan

Jika peristiwa penskalaan Auto Scaling terjadi saat penerapan sedang berlangsung, instance baru akan diperbarui dengan revisi aplikasi yang sebelumnya digunakan, bukan revisi aplikasi terbaru. Jika penerapan berhasil, instance lama dan instance yang baru diskalakan akan menjadi hosting revisi aplikasi yang berbeda. Untuk memperbarui instance dengan revisi lama, CodeDeploy secara otomatis memulai penerapan tindak lanjut (segera setelah yang pertama) untuk memperbarui instans yang sudah ketinggalan zaman. Jika Anda ingin mengubah perilaku default ini sehingga instance EC2 yang sudah ketinggalan zaman dibiarkan di revisi yang lebih lama, lihat. Automatic updates to outdated instances

Jika Anda ingin menangguhkan proses penskalaan Auto Scaling Amazon EC2 saat penerapan sedang berlangsung, Anda dapat melakukannya melalui pengaturan dalam common_functions.sh skrip yang digunakan untuk penyeimbangan beban. CodeDeploy JikaHANDLE_PROCS=true, peristiwa Auto Scaling berikut ditangguhkan secara otomatis selama proses penerapan:

  • AzreBalance

  • AlarmNotification

  • ScheduledActions

  • ReplaceUnhealthy

penting

Hanya CodeDeployDefault. OneAtKonfigurasi penerapan aTime mendukung fungsi ini.

Untuk informasi selengkapnya tentang penggunaan HANDLE_PROCS=true untuk menghindari masalah penerapan saat menggunakan Auto Scaling Amazon EC2, lihat Pemberitahuan penting tentang AutoScaling penanganan proses di aktif. aws-codedeploy-samples GitHub

Peristiwa skala dalam selama penerapan

Jika grup Auto Scaling mulai melakukan penskalaan saat CodeDeploy penerapan sedang berlangsung pada grup Auto Scaling tersebut, kondisi balapan dapat terjadi antara proses penghentian (termasuk peristiwa siklus hidup penerapan penghentian) dan peristiwa siklus hidup lainnya pada instance CodeDeploy penghentian. CodeDeploy Penerapan pada instance tertentu mungkin gagal jika instance dihentikan sebelum semua peristiwa CodeDeploy siklus hidup selesai. Selain itu, CodeDeploy penerapan keseluruhan mungkin gagal atau tidak, tergantung pada cara Anda menyetel setelan host sehat Minimum dalam konfigurasi penerapan Anda.

Urutan acara dalam skrip AWS CloudFormation cfn-init

Jika Anda menggunakan cfn-init (orcloud-init) untuk menjalankan skrip pada instance berbasis Linux yang baru disediakan, penerapan Anda mungkin gagal kecuali jika Anda benar-benar mengontrol urutan peristiwa yang terjadi setelah instance dimulai.

Perintah itu harus:

  1. Instance yang baru disediakan dimulai.

  2. Semua skrip cfn-init bootstrap berjalan hingga selesai.

  3. CodeDeploy Agen mulai.

  4. Revisi aplikasi terbaru diterapkan ke instance.

Jika urutan peristiwa tidak dikontrol dengan hati-hati, CodeDeploy agen mungkin memulai penerapan sebelum semua skrip selesai berjalan.

Untuk mengontrol urutan peristiwa, gunakan salah satu praktik terbaik ini:

  • Instal CodeDeploy agen melalui cfn-init skrip, letakkan setelah semua skrip lainnya.

  • Sertakan CodeDeploy agen dalam AMI khusus dan gunakan cfn-init skrip untuk memulainya, menempatkannya setelah semua skrip lainnya.

Untuk informasi tentang penggunaancfn-init, lihat cfn-init di AWS CloudFormation Panduan Pengguna.

Menggunakan AMI khusus dengan CodeDeploy dan Auto Scaling Amazon EC2

Anda memiliki dua opsi untuk menentukan AMI dasar yang akan digunakan saat instans Amazon EC2 baru diluncurkan di grup Auto Scaling Amazon EC2:

  • Anda dapat menentukan AMI kustom dasar yang sudah menginstal CodeDeploy agen. Karena agen sudah diinstal, opsi ini meluncurkan instans Amazon EC2 baru lebih cepat daripada opsi lainnya. Namun, opsi ini memberikan kemungkinan lebih besar bahwa penerapan awal instans Amazon EC2 akan gagal, terutama jika agen CodeDeploy kedaluwarsa. Jika Anda memilih opsi ini, kami sarankan Anda memperbarui CodeDeploy agen secara teratur di AMI kustom dasar Anda.

  • Anda dapat menentukan AMI dasar yang tidak menginstal CodeDeploy agen dan menginstal agen karena setiap instans baru diluncurkan di grup Auto Scaling Amazon EC2. Meskipun opsi ini meluncurkan instans Amazon EC2 baru lebih lambat daripada opsi lainnya, opsi ini memberikan kemungkinan lebih besar bahwa penerapan awal instans akan berhasil. Opsi ini menggunakan versi terbaru dari CodeDeploy agen.