Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengonfigurasi instans pra-inisialisasi untuk grup Penskalaan Otomatis Amazon ECS
Amazon ECS mendukung kolam hangat Amazon EC2 Auto Scaling. Kolam hangat adalah sekelompok instans Amazon EC2 yang telah diinisialisasi sebelumnya yang siap untuk digunakan. Kapan pun aplikasi Anda perlu diperbesar, Amazon EC2 Auto Scaling menggunakan instans pra-inisialisasi dari kumpulan hangat daripada meluncurkan instans dingin, memungkinkan proses inisialisasi akhir dijalankan, dan kemudian menempatkan instance ke layanan.
Untuk mempelajari lebih lanjut tentang kolam hangat dan cara menambahkan kolam hangat ke grup Penskalaan Otomatis Anda, lihat Kumpulan hangat untuk Penskalaan Otomatis Amazon EC2 di Panduan Pengguna Penskalaan Otomatis Amazon EC2.
Saat membuat atau memperbarui kumpulan hangat untuk grup Penskalaan Otomatis untuk Amazon ECS, Anda tidak dapat menyetel opsi yang mengembalikan instans ke kumpulan hangat berdasarkan skala di (ReuseOnScaleIn). Untuk informasi lebih lanjut, lihat put-warmpool di Referensi. AWS Command Line Interface
Untuk menggunakan kolam hangat dengan cluster Amazon ECS Anda, setel variabel konfigurasi ECS_WARM_POOLS_CHECK agen ke true bidang Data pengguna templat peluncuran grup Amazon EC2 Auto Scaling Anda.
Berikut ini menunjukkan contoh bagaimana variabel konfigurasi agen dapat ditentukan di bidang Data pengguna dari template peluncuran Amazon EC2 untuk instans Linux. Ganti MyCluster dengan nama klaster Anda. Untuk instans Windows, lihatMenggunakan kolam hangat dengan instans Amazon ECS Windows.
#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyClusterECS_WARM_POOLS_CHECK=true EOF
ECS_WARM_POOLS_CHECKVariabel hanya didukung pada versi agen 1.59.0 dan yang lebih baru. Untuk informasi lebih lanjut tentang variabel, lihatKonfigurasi agen kontainer Amazon ECS.
Menggunakan kolam hangat dengan instans Amazon ECS Windows
Saat menggunakan kumpulan hangat dengan status D ihentikan kum pulan pada instans Windows, gunakan kait siklus hidup Amazon EC2 Auto Scaling untuk memastikan eksekusi data pengguna selesai sebelum instance dihentikan. Tanpa kait siklus hidup, instans dapat dihentikan sebelum inisialisasi Amazon ECS selesai.
Untuk mengonfigurasi kait siklus hidup untuk instans kumpulan hangat Windows:
-
Tambahkan kebijakan IAM berikut ke peran instance kontainer Anda untuk memungkinkan instance menyelesaikan tindakan siklus hidup:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction" ], "Resource": "*" } ] } -
Tambahkan kait siklus hidup ke grup Penskalaan Otomatis pada Peluncuran Inst
ABANDONans dengan hasil default dan batas waktu detak jantung yang memungkinkan cukup waktu untuk inisialisasi Amazon ECS (misalnya, 10 menit). Untuk informasi selengkapnya, lihat Menambahkan kait siklus hidup di Panduan Pengguna Penskalaan Otomatis Amazon EC2. -
Gunakan data pengguna berikut yang membuat tugas terjadwal untuk menyelesaikan tindakan siklus hidup setelah penundaan. Penundaan memastikan EC2launch selesai menyimpan statusnya sebelum instans dihentikan. Ganti
MyCluster,my-lifecycle-hook, danmy-asg-namedengan nilai-nilai Anda.<powershell> $lifecycleHookName = "my-lifecycle-hook" $autoScalingGroupName = "my-asg-name" $scriptContent = @' $token = Invoke-RestMethod -Method Put -Uri http://169.254.169.254/latest/api/token -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} $instanceId = Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/instance-id -Headers @{"X-aws-ec2-metadata-token" = $token} $region = Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/placement/region -Headers @{"X-aws-ec2-metadata-token" = $token} $lifecycleHookName = "my-lifecycle-hook" $autoScalingGroupName = "my-asg-name" Complete-ASLifecycleAction -LifecycleHookName $lifecycleHookName -AutoScalingGroupName $autoScalingGroupName -InstanceId $instanceId -LifecycleActionResult 'CONTINUE' -Region $region '@ Set-Content -Path "C:\ProgramData\Amazon\ECS\complete-lifecycle.ps1" -Value $scriptContent try { [Environment]::SetEnvironmentVariable("ECS_WARM_POOLS_CHECK", "true", "Machine") Import-Module ECSTools Initialize-ECSAgent -ClusterMyCluster-EnableTaskIAMRole $taskAction = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\Amazon\ECS\complete-lifecycle.ps1" $taskTriggerOnce = New-ScheduledTaskTrigger -Once -At ((Get-Date).AddSeconds(60)) $taskTriggerStartup = New-ScheduledTaskTrigger -AtStartup $taskTriggerStartup.Delay = "PT60S" $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable $taskPrincipal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest Register-ScheduledTask -TaskName "CompleteLifecycleHook" -Action $taskAction -Trigger $taskTriggerOnce, $taskTriggerStartup -Principal $taskPrincipal -Settings $settings -Force } catch { $token = Invoke-RestMethod -Method Put -Uri http://169.254.169.254/latest/api/token -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} $INSTANCE = Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/instance-id -Headers @{"X-aws-ec2-metadata-token" = $token} $region = Invoke-RestMethod -Method Get -Uri http://169.254.169.254/latest/meta-data/placement/region -Headers @{"X-aws-ec2-metadata-token" = $token} Complete-ASLifecycleAction -InstanceId $INSTANCE -LifecycleHookName $lifecycleHookName -AutoScalingGroupName $autoScalingGroupName -LifecycleActionResult ABANDON -Region $region } </powershell>
Skrip data pengguna ini melakukan hal berikut:
-
Menginisialisasi agen Amazon ECS dengan pemeriksaan kolam hangat diaktifkan.
-
Membuat tugas terjadwal yang menunggu 60 detik setelah data pengguna selesai, dan kemudian memberi sinyal pada hook siklus hidup untuk melanjutkan.
-
Membuat tugas terjadwal yang berjalan pada setiap reboot berikutnya, dan memberi sinyal kait siklus hidup untuk melanjutkan setelah 60 detik.
-
Jika inisialisasi gagal, tindakan siklus hidup selesai
ABANDONsehingga instance dihentikan dan diganti.