Kontrol instans yang dihentikan Amazon ECS - Amazon Elastic Container Service

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

Kontrol instans yang dihentikan Amazon ECS

penting

Anda harus mengaktifkan perlindungan penskalaan instans Auto Scaling pada grup Auto Scaling untuk menggunakan fitur proteksi terminasi terkelola dari penskalaan otomatis cluster.

Perlindungan terminasi terkelola memungkinkan penskalaan otomatis cluster untuk mengontrol instance mana yang dihentikan. Saat Anda menggunakan perlindungan penghentian terkelola, Amazon ECS hanya menghentikan EC2 instans yang tidak menjalankan tugas AmazonECS. Tugas yang dijalankan oleh layanan yang menggunakan strategi DAEMON penjadwalan diabaikan dan sebuah instance dapat dihentikan oleh penskalaan otomatis cluster bahkan ketika instance menjalankan tugas-tugas ini. Ini karena semua instance di cluster menjalankan tugas-tugas ini.

Amazon ECS pertama-tama mengaktifkan opsi perlindungan skala masuk instans untuk EC2 instans di grup Auto Scaling. Kemudian, Amazon ECS menempatkan tugas pada instance. Ketika semua tugas non-daemon dihentikan pada sebuah instance, Amazon ECS memulai proses scale-in dan mematikan perlindungan scale-in untuk instance tersebut. EC2 Grup Auto Scaling kemudian dapat menghentikan instance.

Auto Scaling instance scale-in protection mengontrol EC2 instance mana yang dapat dihentikan oleh Auto Scaling. Instans dengan fitur scale-in diaktifkan tidak dapat dihentikan selama proses scale-in. Untuk informasi selengkapnya tentang perlindungan penskalaan instans Auto Scaling, lihat Menggunakan perlindungan penskalaan instans di Panduan Pengguna Penskalaan Otomatis EC2 Amazon.

Anda dapat mengatur targetCapacity persentase sehingga Anda memiliki kapasitas cadangan. Ini membantu tugas future diluncurkan lebih cepat karena grup Auto Scaling tidak harus meluncurkan lebih banyak instance. Amazon ECS menggunakan nilai kapasitas target untuk mengelola CloudWatch metrik yang dibuat layanan. Amazon ECS mengelola CloudWatch metrik. Grup Auto Scaling diperlakukan sebagai kondisi tunak sehingga tidak diperlukan tindakan penskalaan. Nilainya bisa dari 0-100%. Misalnya, untuk mengonfigurasi Amazon ECS agar tetap 10% kapasitas bebas di atas yang digunakan oleh ECS tugas Amazon, tetapkan nilai kapasitas target menjadi 90%. Pertimbangkan hal berikut saat menetapkan targetCapacity nilai pada penyedia kapasitas.

  • targetCapacityNilai kurang dari 100% mewakili jumlah kapasitas gratis (EC2instans Amazon) yang perlu ada di cluster. Kapasitas bebas berarti tidak ada tugas yang berjalan.

  • Batasan penempatan seperti Availability Zones, tanpa tambahan memaksa binpack Amazon ECS untuk akhirnya menjalankan satu tugas untuk setiap instance, yang mungkin bukan perilaku yang diinginkan.

Anda harus mengaktifkan perlindungan penskalaan instans Auto Scaling pada grup Auto Scaling untuk menggunakan perlindungan terminasi terkelola. Jika Anda tidak mengaktifkan perlindungan skala dalam, maka mengaktifkan perlindungan terminasi terkelola dapat menyebabkan perilaku yang tidak diinginkan. Misalnya, Anda mungkin memiliki instance yang terjebak dalam keadaan menguras. Untuk informasi selengkapnya, lihat Menggunakan perlindungan penskalaan instans di Panduan Pengguna Amazon Auto EC2 Scaling.

Saat Anda menggunakan perlindungan penghentian dengan penyedia kapasitas, jangan lakukan tindakan manual apa pun, seperti melepaskan instance, pada grup Auto Scaling yang terkait dengan penyedia kapasitas. Tindakan manual dapat mematahkan operasi skala dalam penyedia kapasitas. Jika Anda melepaskan instance dari grup Auto Scaling, Anda juga perlu membatalkan pendaftaran instance terpisah dari klaster Amazon. ECS

Perilaku penskalaan keluar yang terkelola

Jika Anda memiliki penyedia kapasitas grup Auto Scaling yang menggunakan penskalaan terkelola, Amazon ECS memperkirakan jumlah instans optimal untuk ditambahkan ke klaster Anda dan menggunakan nilainya untuk menentukan berapa banyak instans yang akan diminta.

Amazon ECS memilih penyedia kapasitas untuk setiap tugas dengan mengikuti strategi penyedia kapasitas dari layanan, tugas mandiri, atau default cluster. Amazon ECS mengikuti langkah-langkah lainnya untuk penyedia kapasitas tunggal.

Tugas tanpa strategi penyedia kapasitas diabaikan oleh penyedia kapasitas. Tugas yang tertunda yang tidak memiliki strategi penyedia kapasitas tidak akan menyebabkan penyedia kapasitas untuk meningkatkan skala. Tugas atau layanan tidak dapat menetapkan strategi penyedia kapasitas jika tugas atau layanan tersebut menetapkan jenis peluncuran.

Berikut ini menjelaskan perilaku penskalaan keluar secara lebih rinci.

  • Kelompokkan semua tugas penyediaan untuk penyedia kapasitas ini sehingga setiap kelompok memiliki persyaratan sumber daya yang sama persis.

  • Bila Anda menggunakan beberapa tipe instans dalam grup Auto Scaling, tipe instans dalam grup Auto Scaling akan diurutkan berdasarkan parameternya. Parameter ini termasuk vCPU, memori, antarmuka jaringan elastis (ENIs), port, danGPUs. Jenis instance terkecil dan terbesar untuk setiap parameter dipilih. Untuk informasi selengkapnya tentang cara memilih jenis instans, lihatContoh EC2 kontainer Amazon untuk Amazon ECS.

    penting

    Jika sekelompok tugas memiliki persyaratan sumber daya yang lebih besar dari jenis instans terkecil di grup Auto Scaling, maka grup tugas tersebut tidak dapat dijalankan dengan penyedia kapasitas ini. Penyedia kapasitas tidak menskalakan grup Auto Scaling. Tugas tetap di PROVISIONING negara bagian.

    Untuk mencegah tugas tetap berada dalam PROVISIONING status, kami sarankan Anda membuat grup Auto Scaling terpisah dan penyedia kapasitas untuk persyaratan sumber daya minimum yang berbeda. Saat menjalankan tugas atau membuat layanan, tambahkan saja penyedia kapasitas ke strategi penyedia kapasitas yang dapat menjalankan tugas pada jenis instans terkecil di grup Auto Scaling. Untuk parameter lain, Anda dapat menggunakan batasan penempatan

  • Untuk setiap grup tugas, Amazon ECS menghitung jumlah instance yang diperlukan untuk menjalankan tugas yang tidak ditempatkan. Perhitungan ini menggunakan binpack strategi. Strategi ini memperhitungkan vCPU, memori, antarmuka jaringan elastis (ENI), port, dan GPUs persyaratan tugas. Ini juga memperhitungkan ketersediaan sumber daya dari EC2 instans Amazon. Nilai untuk jenis instans terbesar diperlakukan sebagai jumlah instans terhitung maksimum. Nilai untuk jenis instance terkecil digunakan sebagai perlindungan. Jika jenis instance terkecil tidak dapat menjalankan setidaknya satu instance tugas, perhitungan menganggap tugas sebagai tidak kompatibel. Akibatnya, tugas tersebut dikecualikan dari perhitungan scale-out. Ketika semua tugas tidak kompatibel dengan jenis instance terkecil, penskalaan otomatis cluster berhenti dan CapacityProviderReservation nilainya tetap pada targetCapacity nilainya.

  • Amazon ECS menerbitkan CapacityProviderReservation metrik sehubungan CloudWatch dengan minimumScalingStepSize jika salah satu dari berikut ini adalah kasusnya.

    • Jumlah instans maksimum yang dihitung kurang dari ukuran langkah penskalaan minimum.

    • Nilai yang lebih rendah dari jumlah instans yang dihitung maximumScalingStepSize atau maksimum.

  • CloudWatch alarm menggunakan CapacityProviderReservation metrik untuk penyedia kapasitas. Ketika CapacityProviderReservation metrik lebih besar dari targetCapacity nilainya, alarm juga meningkatkan grup DesiredCapacity Auto Scaling. targetCapacityNilainya adalah pengaturan penyedia kapasitas yang dikirim ke CloudWatch alarm selama fase aktivasi penskalaan otomatis cluster.

    targetCapacityDefaultnya adalah 100%.

  • Grup Auto Scaling meluncurkan instance tambahan. EC2 Untuk mencegah penyediaan berlebih, Auto Scaling memastikan bahwa kapasitas EC2 instans yang baru diluncurkan distabilkan sebelum meluncurkan instance baru. Auto Scaling memeriksa apakah semua instance yang ada telah melewati instanceWarmupPeriod (sekarang dikurangi waktu peluncuran instance). Penskalaan diblokir untuk instance yang ada di dalam. instanceWarmupPeriod

    Jumlah detik default untuk instance yang baru diluncurkan untuk pemanasan adalah 300.

Untuk informasi selengkapnya, lihat Menyelam mendalam tentang penskalaan otomatis ECS klaster Amazon.

Pertimbangan skala-out

Pertimbangkan hal berikut untuk proses scale-out:

  • Meskipun ada beberapa kendala penempatan, kami menyarankan Anda hanya menggunakan kendala penempatan distinctInstance tugas. Ini mencegah proses scale-out berhenti karena Anda menggunakan batasan penempatan yang tidak kompatibel dengan instance sampel.

  • Penskalaan terkelola berfungsi paling baik jika grup Auto Scaling Anda menggunakan jenis instans yang sama atau serupa.

  • Ketika proses scale-out diperlukan dan tidak ada instance container yang sedang berjalan, Amazon ECS selalu melakukan scale-out ke dua instance pada awalnya, lalu melakukan proses scale-out atau scale-in tambahan. Setiap scale-out tambahan menunggu periode pemanasan instance. Untuk proses scale-in, Amazon ECS menunggu 15 menit setelah proses scale-out sebelum memulai proses scale-in setiap saat.

  • Langkah scale-out kedua harus menunggu sampai instanceWarmupPeriod habis masa berlakunya, yang mungkin mempengaruhi batas skala keseluruhan. Jika Anda perlu mengurangi waktu ini, pastikan waktu tersebut instanceWarmupPeriod cukup besar untuk EC2 meluncurkan dan memulai ECS agen Amazon (yang mencegah penyediaan berlebih).

  • Penskalaan otomatis cluster mendukung Konfigurasi Peluncuran, Template Peluncuran, dan beberapa jenis instans di grup Auto Scaling penyedia kapasitas. Anda juga dapat menggunakan pemilihan tipe instans berbasis atribut tanpa beberapa jenis instance.

  • Saat menggunakan grup Auto Scaling dengan instans Sesuai Permintaan dan beberapa jenis instans atau Instans Spot, tempatkan jenis instans yang lebih besar lebih tinggi dalam daftar prioritas dan jangan tentukan bobot. Menentukan bobot tidak didukung saat ini. Untuk informasi selengkapnya, lihat grup Auto Scaling dengan beberapa jenis instans di AWS Auto Scaling Panduan Pengguna.

  • Amazon ECS kemudian meluncurkanminimumScalingStepSize, jika jumlah instans maksimum yang dihitung kurang dari ukuran langkah penskalaan minimum, atau yang lebih rendah dari nilai hitungan instans terhitung maksimum maximumScalingStepSize atau maksimum.

  • Jika ECS layanan Amazon atau run-task meluncurkan tugas dan instance wadah penyedia kapasitas tidak memiliki sumber daya yang cukup untuk memulai tugas, Amazon ECS membatasi jumlah tugas dengan status ini untuk setiap cluster dan mencegah tugas apa pun melebihi batas ini. Untuk informasi selengkapnya, lihat Kuota ECS layanan Amazon.

Perilaku scale-in yang dikelola

Amazon ECS memonitor instans kontainer untuk setiap penyedia kapasitas dalam sebuah cluster. Saat instance container tidak menjalankan tugas apa pun, instance container dianggap kosong dan Amazon ECS memulai proses scale-in.

CloudWatch alarm scale-in memerlukan 15 titik data (15 menit) sebelum proses scale-in untuk grup Auto Scaling dimulai. Setelah proses penskalaan dimulai hingga Amazon ECS perlu mengurangi jumlah instans kontainer terdaftar, grup Auto Scaling menetapkan DesireCapacity nilainya menjadi lebih besar dari satu instance dan kurang dari 50% setiap menit.

Saat Amazon ECS meminta scale-out (bila CapacityProviderReservation lebih besar dari 100) saat proses scale-in sedang berlangsung, proses scale-in dihentikan dan dimulai dari awal jika diperlukan.

Berikut ini menjelaskan perilaku scale-in secara lebih rinci:

  1. Amazon ECS menghitung jumlah instance kontainer yang kosong. Sebuah instance container dianggap kosong bahkan ketika tugas daemon sedang berjalan.

  2. Amazon ECS menetapkan CapacityProviderReservation nilai ke angka antara 0-100 yang menggunakan rumus berikut untuk mewakili rasio seberapa besar kelompok Auto Scaling harus relatif terhadap seberapa besar sebenarnya, dinyatakan sebagai persentase. Kemudian, Amazon ECS menerbitkan metrik ke CloudWatch. Untuk informasi selengkapnya tentang cara penghitungan metrik, lihat Deep Dive di Auto Scaling Amazon ECS Cluster

    CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
  3. CapacityProviderReservationMetrik menghasilkan CloudWatch alarm. Alarm ini memperbarui DesiredCapacity nilai untuk grup Auto Scaling. Kemudian, salah satu tindakan berikut terjadi:

    • Jika Anda tidak menggunakan penghentian terkelola penyedia kapasitas, grup Auto Scaling akan memilih EC2 instans menggunakan kebijakan penghentian grup Auto Scaling dan mengakhiri instans hingga jumlah instans mencapai. EC2 DesiredCapacity Instance kontainer kemudian dideregistrasi dari cluster.

    • Jika semua instance container menggunakan proteksi terminasi terkelola, Amazon akan ECS menghapus proteksi scale-in pada instance container yang kosong. Grup Auto Scaling kemudian akan dapat menghentikan instance. EC2 Instance kontainer kemudian dideregistrasi dari cluster.