Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah Amazon EC2 Auto Scaling
Topik
Pemecahan masalah Penskalaan Otomatis Amazon EC2 Umum
Penerapan ke instans EC2 dalam grup Amazon EC2 Auto Scaling dapat gagal karena alasan berikut:
-
Amazon EC2 Auto Scaling terus meluncurkan dan menghentikan instans EC2. Jika CodeDeploy tidak dapat menerapkan revisi aplikasi secara otomatis, Amazon EC2 Auto Scaling akan terus meluncurkan dan menghentikan instans EC2.
Putuskan grup Penskalaan Otomatis Amazon EC2 dari CodeDeploy grup penerapan atau ubah konfigurasi grup Penskalaan Otomatis Amazon EC2 Anda sehingga jumlah instans yang diinginkan cocok dengan jumlah instans saat ini (sehingga mencegah Amazon EC2 Auto Scaling meluncurkan instans EC2 lagi). Untuk informasi selengkapnya, lihat Ubah pengaturan grup penerapan dengan CodeDeploy atau Penskalaan Manual untuk Amazon EC2 Auto Scaling.
-
CodeDeploy Agen tidak responsif. CodeDeploy Agen mungkin tidak diinstal jika skrip inisialisasi (misalnya, skrip cloud-init) yang berjalan segera setelah instans EC2 diluncurkan atau dimulai membutuhkan waktu lebih dari satu jam untuk dijalankan. CodeDeploy memiliki batas waktu satu jam bagi CodeDeploy agen untuk menanggapi penerapan yang tertunda. Untuk mengatasi masalah ini, pindahkan skrip inisialisasi Anda ke dalam revisi CodeDeploy aplikasi Anda.
-
Instans EC2 dalam grup Amazon EC2 Auto Scaling akan di-boot ulang selama penerapan. Penerapan Anda bisa gagal jika instans EC2 di-boot ulang selama penerapan atau CodeDeploy agen dimatikan saat memproses perintah penerapan. Untuk informasi selengkapnya, lihat Mengakhiri atau me-reboot instans Amazon EC2 Auto Scaling dapat menyebabkan penerapan gagal.
-
Beberapa revisi aplikasi diterapkan secara bersamaan ke instans EC2 yang sama dalam grup Amazon EC2 Auto Scaling. Menerapkan beberapa revisi aplikasi ke instans EC2 yang sama dalam grup Amazon EC2 Auto Scaling secara bersamaan dapat gagal jika salah satu penerapan memiliki skrip yang berjalan selama lebih dari beberapa menit. Jangan menerapkan beberapa revisi aplikasi ke instans EC2 yang sama di grup Penskalaan Otomatis Amazon EC2.
-
Penerapan gagal untuk instans EC2 baru yang diluncurkan sebagai bagian dari grup Amazon EC2 Auto Scaling. Dalam skenario ini, menjalankan skrip dalam penerapan dapat mencegah peluncuran instans EC2 di grup Amazon EC2 Auto Scaling. (Instans EC2 lainnya di grup Amazon EC2 Auto Scaling mungkin tampak berjalan normal.) Untuk mengatasi masalah ini, pastikan semua skrip lainnya selesai terlebih dahulu:
-
CodeDeploy agen tidak termasuk dalam AMI Anda: Jika Anda menggunakan cfn-init perintah untuk menginstal CodeDeploy agen saat meluncurkan instance baru, letakkan skrip instalasi agen di akhir
cfn-initbagian CloudFormation template Anda. -
CodeDeploy agen disertakan dalam AMI Anda: Konfigurasikan AMI sehingga agen dalam
Stoppedkeadaan saat instance dibuat, lalu sertakan skrip untuk memulai agen sebagai langkah terakhir di pustakacfn-initskrip Anda.
-
“CodeDeployRole tidak memberi Anda izin untuk melakukan operasi di AWS layanan berikut: AmazonAutoScaling" kesalahan
Penerapan yang menggunakan grup Auto Scaling yang dibuat dengan template peluncuran memerlukan izin berikut. Ini adalah tambahan dari izin yang diberikan oleh kebijakan AWSCodeDeployRole AWS terkelola.
-
EC2:RunInstances -
EC2:CreateTags -
iam:PassRole
Anda mungkin menerima kesalahan ini jika Anda kehilangan izin ini. Untuk informasi selengkapnya, lihatTutorial: Gunakan CodeDeploy untuk menyebarkan aplikasi ke grup Auto Scaling, Membuat template peluncuran untuk grup Auto Scaling, dan Izin di Panduan Pengguna Amazon EC2 Auto Scaling.
Instans dalam grup Amazon EC2 Auto Scaling terus disediakan dan dihentikan sebelum revisi dapat diterapkan
Dalam beberapa kasus, kesalahan dapat mencegah penerapan yang berhasil ke instans yang baru disediakan di grup Penskalaan Otomatis Amazon EC2. Hasilnya bukan contoh yang sehat dan tidak ada penerapan yang berhasil. Karena penerapan tidak dapat berjalan atau diselesaikan dengan sukses, instance dihentikan segera setelah dibuat. Konfigurasi grup Amazon EC2 Auto Scaling kemudian menyebabkan kumpulan instans lain disediakan untuk mencoba memenuhi persyaratan host sehat minimum. Batch ini juga dihentikan, dan siklus berlanjut.
Kemungkinan penyebabnya meliputi:
-
Pemeriksaan kesehatan grup Amazon EC2 Auto Scaling yang gagal.
-
Kesalahan dalam revisi aplikasi.
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
-
Buat instans EC2 secara manual yang bukan bagian dari grup Amazon EC2 Auto Scaling. Tandai instance dengan tag instans EC2 yang unik.
-
Tambahkan instance baru ke grup penyebaran yang terpengaruh.
-
Terapkan revisi aplikasi baru yang bebas kesalahan ke grup penyebaran.
Ini meminta grup Amazon EC2 Auto Scaling untuk menerapkan revisi aplikasi ke instans masa depan di grup Amazon EC2 Auto Scaling.
catatan
Setelah mengonfirmasi bahwa penerapan berhasil, hapus instans yang Anda buat untuk menghindari tagihan yang sedang berlangsung ke akun Anda AWS .
Mengakhiri atau me-reboot instans Amazon EC2 Auto Scaling dapat menyebabkan penerapan gagal
Jika instans EC2 diluncurkan melalui Amazon EC2 Auto Scaling, dan instans kemudian dihentikan atau di-boot ulang, penerapan ke instance tersebut mungkin gagal karena alasan berikut:
-
Selama penerapan yang sedang berlangsung, peristiwa scale-in atau peristiwa penghentian lainnya menyebabkan instans terlepas dari grup Penskalaan Otomatis Amazon EC2 dan kemudian dihentikan. Karena penerapan tidak dapat diselesaikan, itu gagal.
-
Instans di-boot ulang, tetapi dibutuhkan lebih dari lima menit untuk memulai instance. CodeDeploy memperlakukan ini sebagai batas waktu. Layanan gagal semua penerapan saat ini dan masa depan ke instance.
Untuk mengatasi masalah ini:
-
Secara umum, pastikan bahwa semua penerapan selesai sebelum instance dihentikan atau di-boot ulang. Pastikan bahwa semua penerapan dimulai setelah instance dimulai atau di-boot ulang.
-
Penerapan dapat gagal jika Anda menentukan Amazon Machine Image (AMI) berbasis Windows Server untuk konfigurasi Penskalaan Otomatis Amazon EC2 dan menggunakan layanan EC2 Config untuk menyetel nama komputer instance. Untuk memperbaiki masalah ini, di basis Windows Server AMI, pada tab Umum Properti Layanan EC2, hapus Set Nama Komputer. Setelah Anda menghapus kotak centang ini, perilaku ini dinonaktifkan untuk semua instans Penskalaan Otomatis Amazon EC2 Windows Server baru yang diluncurkan dengan AMI basis Windows Server. Untuk instans Penskalaan Otomatis Amazon EC2 Windows Server yang mengaktifkan perilaku ini, Anda tidak perlu menghapus kotak centang ini. Cukup terapkan ulang penerapan yang gagal ke instance tersebut setelah di-boot ulang.
Hindari mengaitkan beberapa grup penerapan dengan satu grup Penskalaan Otomatis Amazon EC2
Sebagai praktik terbaik, Anda harus mengaitkan hanya satu grup penerapan dengan setiap grup Penskalaan Otomatis Amazon EC2.
Ini karena jika Amazon EC2 Auto Scaling meningkatkan skala instance yang memiliki kait yang terkait dengan beberapa grup penerapan, maka akan mengirimkan notifikasi untuk semua hook sekaligus. Hal ini menyebabkan beberapa penerapan ke setiap instance dimulai pada waktu yang bersamaan. Saat beberapa penerapan mengirim perintah ke CodeDeploy agen secara bersamaan, batas waktu lima menit antara peristiwa siklus hidup dan awal penerapan atau akhir peristiwa siklus hidup sebelumnya mungkin tercapai. Jika ini terjadi, penerapan gagal, bahkan jika proses penerapan berjalan seperti yang diharapkan.
catatan
Batas waktu default untuk skrip dalam acara siklus hidup adalah 30 menit. Anda dapat mengubah batas waktu ke nilai yang berbeda dalam AppSpec file. Untuk informasi selengkapnya, lihat Menambahkan AppSpec file untuk penerapan EC2/On-premise.
Tidak mungkin untuk mengontrol urutan penerapan terjadi jika lebih dari satu penerapan mencoba dijalankan pada saat yang bersamaan.
Terakhir, jika penerapan ke instans apa pun gagal, Amazon EC2 Auto Scaling segera menghentikan instance. Ketika instance pertama dimatikan, penerapan lain yang berjalan mulai gagal. Karena CodeDeploy memiliki batas waktu satu jam bagi CodeDeploy agen untuk merespons penerapan yang tertunda, dibutuhkan waktu hingga 60 menit untuk setiap instance hingga time out.
Untuk informasi selengkapnya tentang Amazon EC2 Auto Scaling, lihat Under the CodeDeploy hood: dan integrasi Auto Scaling
Instans EC2 dalam grup Amazon EC2 Auto Scaling gagal diluncurkan dan menerima kesalahan “Heartbeat Timeout”
Grup Amazon EC2 Auto Scaling mungkin gagal meluncurkan instans EC2 baru, menghasilkan pesan yang mirip dengan berikut ini:
Launching a new EC2 instance
. <instance-Id>. Status Reason: Instance failed to
complete user's Lifecycle Action: Lifecycle Action with
token<token-Id> was abandoned: Heartbeat
Timeout
Pesan ini biasanya menunjukkan salah satu dari yang berikut:
-
Jumlah maksimum penerapan bersamaan yang terkait dengan AWS akun tercapai. Untuk informasi selengkapnya tentang batas penerapan, lihatCodeDeploy kuota.
-
Grup Auto Scaling mencoba meluncurkan terlalu banyak instans EC2 terlalu cepat. Panggilan API ke RecordLifecycleActionHeartbeatatau CompleteLifecycleActionuntuk setiap instance baru dibatasi.
-
Aplikasi di CodeDeploy dihapus sebelum grup penyebaran terkait diperbarui atau dihapus.
Saat Anda menghapus aplikasi atau grup penerapan, CodeDeploy mencoba membersihkan kait Penskalaan Otomatis Amazon EC2 yang terkait dengannya, tetapi beberapa kait mungkin tetap ada. Jika Anda menjalankan perintah untuk menghapus grup penyebaran, kait sisa dikembalikan dalam output. Namun, jika Anda menjalankan perintah untuk menghapus aplikasi, kait sisa tidak muncul di output.
Oleh karena itu, sebagai praktik terbaik, Anda harus menghapus semua grup penyebaran yang terkait dengan aplikasi sebelum Anda menghapus aplikasi. Anda dapat menggunakan output perintah untuk mengidentifikasi kait siklus hidup yang harus dihapus secara manual.
Jika Anda menerima pesan galat “Heartbeat Timeout”, Anda dapat menentukan apakah kait siklus hidup yang tersisa adalah penyebabnya dan menyelesaikan masalah dengan melakukan hal berikut:
-
Lakukan salah satu tindakan berikut:
-
Panggil delete-deployment-groupperintah untuk menghapus grup penyebaran yang terkait dengan grup Auto Scaling yang menyebabkan batas waktu detak jantung.
-
Panggil update-deployment-groupperintah dengan daftar kosong nama grup Auto Scaling yang tidak kosong untuk melepaskan semua kait siklus hidup Auto Scaling yang dikelola CodeDeploy.
Misalnya, masukkan AWS CLI perintah berikut:
aws deploy update-deployment-group --application-name my-example-app --current-deployment-group-name my-deployment-group --auto-scaling-groupsSebagai contoh lain, jika Anda menggunakan CodeDeploy API dengan Java, panggil
UpdateDeploymentGroupdan aturautoScalingGroupskenew ArrayList<String>(). Ini ditetapkanautoScalingGroupske daftar kosong dan menghapus daftar yang ada. Jangan gunakannull, yang merupakan default, karena ini meninggalkan apaautoScalingGroupsadanya, yang bukan yang Anda inginkan.
Periksa output panggilan. Jika output berisi
hooksNotCleanedUpstruktur dengan daftar kait siklus hidup Amazon EC2 Auto Scaling, ada sisa kait siklus hidup. -
-
Panggil describe-lifecycle-hooksperintah, tentukan nama grup Amazon EC2 Auto Scaling yang terkait dengan instans EC2 yang gagal diluncurkan. Dalam output, cari salah satu dari berikut ini:
-
Nama kait siklus hidup Amazon EC2 Auto Scaling yang sesuai dengan struktur yang Anda identifikasi pada
hooksNotCleanedUplangkah 1. -
Nama kait siklus hidup Amazon EC2 Auto Scaling yang berisi nama grup penerapan yang terkait dengan grup Auto Scaling yang gagal.
-
Nama kait siklus hidup Amazon EC2 Auto Scaling yang mungkin menyebabkan batas waktu detak jantung untuk penerapan. CodeDeploy
-
-
Jika hook jatuh ke dalam salah satu kategori yang tercantum dalam langkah 2, panggil delete-lifecycle-hookperintah untuk menghapusnya. Tentukan grup Penskalaan Otomatis Amazon EC2 dan kait siklus hidup dalam panggilan.
penting
Hanya hapus kait yang menyebabkan masalah, seperti yang diuraikan pada langkah 2. Jika Anda menghapus hook yang layak, penerapan Anda mungkin gagal, atau CodeDeploy mungkin tidak dapat menerapkan revisi aplikasi Anda ke instans EC2 yang diskalakan.
-
Panggil create-deployment-groupperintah update-deployment-groupatau dengan nama grup Auto Scaling yang diinginkan. CodeDeploymenginstal ulang kait Auto Scaling dengan yang baru. UUIDs
catatan
Jika Anda melepaskan grup Auto Scaling dari grup penerapan, setiap penerapan CodeDeploy yang sedang berlangsung ke grup Auto Scaling mungkin gagal, dan instans EC2 baru yang diskalakan oleh grup Auto Scaling tidak akan menerima revisi aplikasi Anda. CodeDeploy Agar Auto Scaling berfungsi kembali CodeDeploy, Anda harus melampirkan kembali grup Auto Scaling ke grup penerapan dan memanggil yang baru CreateDeployment untuk memulai penerapan di seluruh armada.
Kait siklus hidup Amazon EC2 Auto Scaling yang tidak cocok dapat menyebabkan penerapan otomatis ke grup Amazon EC2 Auto Scaling berhenti atau gagal
Amazon EC2 Auto CodeDeploy Scaling dan gunakan kait siklus hidup untuk menentukan revisi aplikasi mana yang harus diterapkan ke instans EC2 mana setelah diluncurkan di grup Amazon EC2 Auto Scaling. Penerapan otomatis dapat berhenti atau gagal jika kait siklus hidup dan informasi tentang kait ini tidak sama persis di Amazon EC2 Auto Scaling dan. CodeDeploy
Jika penerapan ke grup Penskalaan Otomatis Amazon EC2 gagal, lihat apakah nama pengait siklus hidup di Amazon EC2 Auto Scaling dan cocok. CodeDeploy Jika tidak, gunakan panggilan AWS CLI perintah ini.
Pertama, dapatkan daftar nama kait siklus hidup untuk grup Amazon EC2 Auto Scaling dan grup penerapan:
-
Panggil describe-lifecycle-hooksperintah, tentukan nama grup Penskalaan Otomatis Amazon EC2 yang terkait dengan grup penerapan di. CodeDeploy Dalam output, dalam
LifecycleHooksdaftar, buat catatan setiapLifecycleHookNamenilai. -
Panggil get-deployment-groupperintah, tentukan nama grup penyebaran yang terkait dengan grup Penskalaan Otomatis Amazon EC2. Dalam output, dalam
autoScalingGroupsdaftar, temukan setiap item yang nilai namanya cocok dengan nama grup Amazon EC2 Auto Scaling, lalu catat nilai yang sesuai.hook
Sekarang bandingkan dua set nama kait siklus hidup. Jika mereka cocok persis, karakter untuk karakter, maka ini bukan masalahnya. Anda mungkin ingin mencoba langkah-langkah pemecahan masalah Amazon EC2 Auto Scaling lainnya yang dijelaskan di tempat lain di bagian ini.
Namun, jika dua set nama kait siklus hidup tidak sama persis, karakter untuk karakter, lakukan hal berikut:
-
Jika ada nama kait siklus hidup dalam output describe-lifecycle-hooks perintah yang tidak juga dalam output get-deployment-group perintah, maka lakukan hal berikut:
-
Untuk setiap nama hook siklus hidup di output describe-lifecycle-hooks perintah, panggil perintah. delete-lifecycle-hook
-
Panggil update-deployment-groupperintah, tentukan nama grup Amazon EC2 Auto Scaling asli. CodeDeploy membuat kait siklus hidup pengganti baru di grup Penskalaan Otomatis Amazon EC2 dan mengaitkan kait siklus hidup dengan grup penerapan. Penerapan otomatis sekarang harus dilanjutkan saat instans baru ditambahkan ke grup Penskalaan Otomatis Amazon EC2.
-
-
Jika ada nama kait siklus hidup dalam output get-deployment-group perintah yang tidak juga dalam output describe-lifecycle-hooks perintah, lakukan hal berikut:
-
Panggil update-deployment-groupperintah, tetapi jangan tentukan nama grup Auto Scaling Amazon EC2 asli.
-
Panggil update-deployment-group perintah lagi, tetapi kali ini tentukan nama grup Amazon EC2 Auto Scaling asli. CodeDeploy membuat ulang kait siklus hidup yang hilang di grup Amazon EC2 Auto Scaling. Penerapan otomatis sekarang harus dilanjutkan saat instans baru ditambahkan ke grup Penskalaan Otomatis Amazon EC2.
-
Setelah Anda mendapatkan dua set nama kait siklus hidup agar sama persis, karakter untuk karakter, revisi aplikasi harus diterapkan lagi, tetapi hanya untuk instance baru saat ditambahkan ke grup Amazon EC2 Auto Scaling. Penerapan tidak terjadi secara otomatis ke instans yang sudah ada di grup Amazon EC2 Auto Scaling.
Kesalahan “Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda”
Baca bagian ini jika Anda melihat CodeDeploy kesalahan berikut:
The deployment failed because no instances were found for your deployment group.
Check your deployment group settings to make sure the tags for your EC2 instances
or Auto Scaling groups correctly identify the instances you want to deploy to, and then try
again.
Kemungkinan penyebab kesalahan ini adalah:
-
Setelan grup penerapan Anda menyertakan tag untuk instans EC2, instans lokal, atau grup Auto Scaling yang tidak benar. Untuk memperbaiki masalah ini, periksa apakah tag Anda sudah benar, lalu gunakan kembali aplikasi Anda.
-
Armada Anda diperkecil setelah penyebaran dimulai. Dalam skenario ini, Anda melihat contoh sehat di
InServicenegara bagian dalam armada Anda, tetapi Anda juga melihat kesalahan di atas. Untuk memperbaiki masalah ini, gunakan kembali aplikasi Anda. -
Grup Auto Scaling Anda tidak menyertakan instans apa pun yang berada dalam status.
InServiceDalam skenario ini, ketika Anda mencoba melakukan penerapan di seluruh armada, penerapan gagal dengan pesan kesalahan di atas karena CodeDeploy membutuhkan setidaknya satu instance untuk berada dalam status.InServiceAda banyak alasan mengapa Anda mungkin tidak memiliki contoh diInServicenegara bagian. Beberapa di antaranya termasuk:-
Anda menjadwalkan (atau mengonfigurasi secara manual) ukuran grup Auto Scaling.
0 -
Auto Scaling mendeteksi instans EC2 yang buruk (misalnya, instans EC2 mengalami kegagalan perangkat keras), jadi batalkan semuanya, sehingga tidak meninggalkan status apa pun.
InService -
Selama acara skala keluar dari
0ke1, CodeDeploy menerapkan revisi yang sebelumnya berhasil (disebut revisi sukses terakhir) yang telah menjadi tidak sehat sejak penerapan terakhir. Hal ini menyebabkan penerapan pada instance scaled-out gagal, yang pada gilirannya menyebabkan Auto Scaling membatalkan instance, sehingga tidak ada instance dalam status.InServiceJika Anda menemukan bahwa Anda tidak memiliki instance di
InServicenegara bagian, pecahkan masalah seperti yang dijelaskan dalam prosedur berikut,. To troubleshoot the error if there are no instances in the InService state
-
Untuk memecahkan masalah kesalahan jika tidak ada contoh di negara bagian InService
-
Di konsol Amazon EC2, verifikasi pengaturan Kapasitas yang Diinginkan. Jika nol, atur ke angka positif. Tunggu instance menjadi
InService, yang berarti penerapan berhasil. Anda telah memperbaiki masalah dan dapat melewati langkah-langkah yang tersisa dari prosedur pemecahan masalah ini. Untuk informasi tentang menyetel setelan Kapasitas yang Diinginkan, lihat Menyetel batas kapasitas pada grup Auto Scaling di Panduan Pengguna Amazon EC2 Auto Scaling. -
Jika Auto Scaling terus mencoba meluncurkan instans EC2 baru untuk memenuhi kapasitas yang diinginkan tetapi tidak pernah dapat memenuhi skala, biasanya karena hook siklus hidup Auto Scaling yang gagal. Memecahkan masalah ini sebagai berikut:
-
Untuk memeriksa peristiwa hook siklus hidup Auto Scaling mana yang gagal, lihat Memverifikasi aktivitas penskalaan untuk grup Auto Scaling di Panduan Pengguna Amazon EC2 Auto Scaling.
-
Jika nama hook yang gagal adalah
CodeDeploy-managed-automatic-launch-deployment-hook-, buka, cari grup penerapan, dan temukan penerapan gagal yang dimulai oleh Auto Scaling. CodeDeploy Kemudian selidiki mengapa penerapan gagal.DEPLOYMENT_GROUP_NAME -
Jika Anda memahami mengapa penerapan gagal (misalnya, CloudWatch alarm terjadi) dan Anda dapat memperbaiki masalah tanpa mengubah revisi, lakukan sekarang.
-
Jika, setelah penyelidikan, Anda menentukan bahwa CodeDeploy revisi terakhir yang berhasil tidak lagi sehat, dan tidak ada contoh sehat di grup Auto Scaling Anda, Anda berada dalam skenario kebuntuan penerapan. Untuk mengatasi masalah ini, Anda harus memperbaiki CodeDeploy revisi buruk dengan menghapus CodeDeploy kait siklus hidup sementara dari grup Auto Scaling, lalu menginstal ulang hook dan menerapkan kembali revisi baru (baik). Untuk instruksi, lihat:
-
Untuk memperbaiki masalah kebuntuan penerapan (CLI)
-
(Opsional) Blokir CI/CD pipeline Anda yang menyebabkan CodeDeploy kesalahan sehingga penerapan yang tidak terduga tidak terjadi saat Anda memperbaiki masalah ini.
-
Perhatikan pengaturan Auto Scaling DesiredCapacityAnda saat ini:
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-nameASG_NAMEAnda mungkin perlu mengurangi angka ini di akhir prosedur ini.
-
Setel pengaturan Auto Scaling DesiredCapacityAnda ke.
1Ini opsional jika kapasitas yang Anda inginkan lebih besar daripada1awalnya. Dengan menguranginya menjadi1, instance akan membutuhkan lebih sedikit waktu untuk menyediakan dan menerapkan nanti, yang mempercepat pemecahan masalah. Jika kapasitas yang diinginkan Auto Scaling Anda awalnya disetel ke0, Anda harus meningkatkannya.1Ini wajib.penskalaan otomatis aws set-desired-capacity -- --desired-capacity 1 auto-scaling-group-name
ASG_NAMEcatatan
Langkah-langkah yang tersisa dari prosedur ini mengasumsikan Anda telah DesiredCapacitymengaturnya
1.Pada titik ini, Auto Scaling mencoba menskalakan ke satu instance. Kemudian, karena hook yang CodeDeploy ditambahkan masih ada, CodeDeploy mencoba menerapkan; penerapan gagal; Auto Scaling membatalkan instance; dan Auto Scaling mencoba meluncurkan kembali instance untuk mencapai kapasitas yang diinginkan, yang lagi-lagi gagal. Anda berada dalam loop cancel-relaunch.
-
Hapus registrasi grup Auto Scaling dari grup penerapan:
Awas
Perintah berikut akan meluncurkan instans EC2 baru tanpa perangkat lunak di dalamnya. Sebelum menjalankan perintah, pastikan bahwa
InServiceinstance Auto Scaling yang tidak menjalankan perangkat lunak dapat diterima. Misalnya, pastikan penyeimbang beban yang terkait dengan instance tidak mengirimkan lalu lintas ke host ini tanpa perangkat lunak.penting
Gunakan CodeDeploy perintah yang ditunjukkan di bawah ini untuk menghapus kait. Jangan lepaskan kait melalui layanan Auto Scaling, karena penghapusan tidak akan dikenali oleh. CodeDeploy
aws deploy update-deployment-group --application-nameAPPLICATION_NAME--current-deployment-group-nameDEPLOYMENT_GROUP_NAME--auto-scaling-groupsSetelah menjalankan perintah ini, berikut ini terjadi:
-
CodeDeploy menghapus registrasi grup Auto Scaling dari grup penerapan.
-
CodeDeploy menghapus hook siklus hidup Auto Scaling dari grup Auto Scaling.
-
Karena hook yang menyebabkan penerapan gagal tidak lagi ada, Auto Scaling membatalkan instans EC2 yang ada dan segera meluncurkan yang baru untuk skala ke kapasitas yang diinginkan. Contoh baru harus segera pindah ke
InServicenegara bagian. Contoh baru tidak termasuk perangkat lunak.
-
-
Tunggu instans EC2 memasuki
InServicestatus. Untuk memverifikasi statusnya, gunakan perintah berikut:aws autoscaling describe-auto-scaling-groups --auto-scaling-group-namesASG_NAME--query AutoScalingGroups[0].Instances[*].LifecycleState -
Tambahkan hook kembali ke instans EC2:
penting
Gunakan CodeDeploy perintah yang ditunjukkan di bawah ini untuk menambahkan hook. Jangan gunakan layanan Auto Scaling untuk menambahkan hook, karena penambahan tidak akan dikenali oleh. CodeDeploy
aws deploy update-deployment-group --application-nameAPPLICATION_NAME--current-deployment-group-nameDEPLOYMENT_GROUP_NAME--auto-scaling-groupsASG_NAMESetelah menjalankan perintah ini, berikut ini terjadi:
-
CodeDeploy menginstal ulang hook siklus hidup Auto Scaling ke instans EC2
-
CodeDeploy mendaftarkan ulang grup Auto Scaling dengan grup penerapan.
-
-
Buat penyebaran seluruh armada dengan Amazon S3 atau GitHub revisi yang Anda tahu sehat dan ingin digunakan.
Misalnya, jika revisi adalah file.zip di bucket Amazon S3 yang
my-revision-bucketdipanggil dengan kunci objek, masukkanhttpd_app.zipperintah berikut:aws deploy create-deployment --application-nameAPPLICATION_NAME--deployment-group-nameDEPLOYMENT_GROUP_NAME--revision "revisionType=S3,s3Location={bucket=my-revision-bucket,bundleType=zip,key=httpd_app.zip}"Karena sekarang ada satu
InServiceinstance dalam grup Auto Scaling, penerapan ini seharusnya berfungsi, dan Anda seharusnya tidak lagi melihat kesalahan Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda. -
Setelah penerapan berhasil, skala grup Auto Scaling Anda kembali ke kapasitas semula, jika sebelumnya Anda menskalakannya:
aws autoscaling set-desired-capacity --auto-scaling-group-nameASG_NAME--desired-capacityORIGINAL_CAPACITY
Untuk memperbaiki masalah kebuntuan penerapan (konsol)
-
(Opsional) Blokir CI/CD pipeline Anda yang menyebabkan CodeDeploy kesalahan sehingga penerapan yang tidak terduga tidak terjadi saat Anda memperbaiki masalah ini.
-
Buka konsol Amazon EC2, dan perhatikan pengaturan kapasitas Auto Scaling Desired Anda. Anda mungkin perlu mengurangi angka ini di akhir prosedur ini. Untuk informasi tentang menemukan setelan ini, lihat Menyetel batas kapasitas pada grup Auto Scaling Anda.
-
Setel jumlah instans EC2 yang diinginkan ke:
1Ini opsional jika kapasitas yang Anda inginkan lebih besar daripada
1awalnya. Dengan menguranginya menjadi1, instance akan membutuhkan lebih sedikit waktu untuk menyediakan dan menerapkan nanti, yang mempercepat pemecahan masalah. Jika kapasitas Auto Scaling Desired Anda awalnya disetel ke0, Anda harus meningkatkannya.1Ini wajib.catatan
Langkah-langkah yang tersisa dari prosedur ini mengasumsikan Anda telah mengatur kapasitas yang diinginkan Anda
1.Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/
, dan pilih Grup Auto Scaling dari panel navigasi. -
Pilih wilayah yang sesuai.
-
Pergi ke grup Auto Scaling yang bermasalah.
-
Di Detail grup, pilih Edit.
-
Atur kapasitas yang diinginkan ke
1. -
Pilih Perbarui.
-
Hapus registrasi grup Auto Scaling dari grup penerapan:
Awas
Sub-langkah berikut akan meluncurkan instans EC2 baru tanpa perangkat lunak di dalamnya. Sebelum menjalankan perintah, pastikan bahwa
InServiceinstance Auto Scaling yang tidak menjalankan perangkat lunak dapat diterima. Misalnya, pastikan penyeimbang beban yang terkait dengan instance tidak mengirimkan lalu lintas ke host ini tanpa perangkat lunak.Buka CodeDeploy konsol di https://console.aws.amazon.com/codedeploy/
. -
Pilih wilayah yang sesuai.
-
Pada panel navigasi, pilih Aplikasi.
-
Pilih nama CodeDeploy aplikasi Anda.
-
Pilih nama grup CodeDeploy penyebaran Anda.
-
Pilih Edit.
-
Dalam konfigurasi Lingkungan, batalkan pilihan grup Amazon EC2 Auto Scaling.
catatan
Konsol tidak memungkinkan Anda untuk menyimpan konfigurasi jika tidak ada konfigurasi lingkungan yang ditentukan. Untuk melewati pemeriksaan, tambahkan sementara tag
EC2atauOn-premisesyang Anda tahu tidak akan diselesaikan ke host mana pun. Untuk menambahkan tag, pilih instans Amazon EC2 atau Instans lokal, dan tambahkan Tag Kunci atau.EC2On-premisesAnda dapat membiarkan tag Value kosong. -
Pilih Simpan perubahan.
Setelah menyelesaikan sub-langkah ini, hal berikut terjadi:
-
CodeDeploy menghapus registrasi grup Auto Scaling dari grup penerapan.
-
CodeDeploy menghapus hook siklus hidup Auto Scaling dari grup Auto Scaling.
-
Karena hook yang menyebabkan penerapan gagal tidak lagi ada, Auto Scaling membatalkan instans EC2 yang ada dan segera meluncurkan yang baru untuk skala ke kapasitas yang diinginkan. Contoh baru harus segera pindah ke
InServicenegara bagian. Contoh baru tidak termasuk perangkat lunak.
-
-
Tunggu instans EC2 memasuki
InServicestatus. Untuk memverifikasi statusnya:-
Buka konsol Amazon EC2 di. https://console.aws.amazon.com/ec2/
-
Di panel navigasi, pilih Grup Auto Scaling.
-
Pilih grup Auto Scaling Anda.
-
Di panel konten, pilih tab Manajemen Instance.
-
Di bawah Instance, pastikan bahwa kolom Lifecycle menunjukkan di InServicesebelah instance.
-
-
Daftarkan ulang grup Auto Scaling dengan CodeDeploy grup penyebaran menggunakan metode yang sama yang Anda gunakan untuk menghapusnya:
Buka CodeDeploy konsol di https://console.aws.amazon.com/codedeploy/
. -
Pilih wilayah yang sesuai.
-
Pada panel navigasi, pilih Aplikasi.
-
Pilih nama CodeDeploy aplikasi Anda.
-
Pilih nama grup CodeDeploy penyebaran Anda.
-
Pilih Edit.
-
Dalam konfigurasi Lingkungan, pilih grup Amazon EC2 Auto Scaling dan pilih grup Auto Scaling Anda dari daftar.
-
Di bawah instans Amazon EC2 atau instans Lokal, temukan tag yang Anda tambahkan dan hapus.
-
Hapus centang kotak di samping instans Amazon EC2 atau Instans lokal.
-
Pilih Simpan perubahan.
Konfigurasi ini menginstal ulang hook siklus hidup ke grup Auto Scaling.
-
Buat penyebaran seluruh armada dengan Amazon S3 atau GitHub revisi yang Anda tahu sehat dan ingin digunakan.
Misalnya, jika revisi adalah file.zip di bucket Amazon S3 yang
my-revision-bucketdipanggil dengan kunci objek, lakukan halhttpd_app.zipberikut:-
Di CodeDeploy konsol, di halaman Deployment Group, pilih Create deployment.
-
Untuk jenis Revisi, pilih Aplikasi saya disimpan di Amazon S3.
-
Untuk lokasi Revisi, pilih
s3://my-revision-bucket/httpd_app.zip. -
Untuk jenis file Revisi, pilih
.zip. -
Pilih Buat penerapan.
Karena sekarang ada satu
InServiceinstance dalam grup Auto Scaling, penerapan ini seharusnya berfungsi, dan Anda seharusnya tidak lagi melihat kesalahan Penerapan gagal karena tidak ada instance yang ditemukan untuk grup penerapan Anda. -
-
Setelah penerapan berhasil, skala grup Auto Scaling Anda kembali ke kapasitas semula, jika sebelumnya Anda menskalakannya:
-
Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/
, dan pilih Grup Auto Scaling dari panel navigasi. -
Pilih wilayah yang sesuai.
-
Buka grup Auto Scaling Anda.
-
Di Detail grup, pilih Edit.
-
Atur kapasitas yang diinginkan kembali ke nilai aslinya.
-
Pilih Perbarui.
-