Tutorial: Konfigurasikan penskalaan otomatis untuk menangani beban kerja yang berat - Application Auto Scaling

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

Tutorial: Konfigurasikan penskalaan otomatis untuk menangani beban kerja yang berat

penting

Sebelum menjelajahi tutorial ini, kami sarankan agar Anda pertama-tama meninjau tutorial pendahuluan berikut: Tutorial: Memulai dengan penskalaan terjadwal menggunakan AWS CLI.

Dalam tutorial ini, Anda mempelajari cara skala dan berdasarkan jendela waktu ketika aplikasi Anda akan memiliki beban kerja yang lebih berat dari biasanya. Ini sangat membantu ketika Anda memiliki aplikasi yang tiba-tiba dapat memiliki sejumlah besar pengunjung pada jadwal reguler atau secara musiman.

Anda dapat menggunakan kebijakan penskalaan pelacakan target bersama dengan penskalaan terjadwal untuk menangani beban tambahan. Skala terjadwal secara otomatis memulai perubahan pada MinCapacity dan MaxCapacity atas nama Anda, berdasarkan jadwal yang Anda tentukan. Ketika kebijakan penskalaan pelacakan target aktif pada sumber daya, kebijakan tersebut dapat menskalakan secara dinamis berdasarkan pemanfaatan sumber daya saat ini, dalam rentang kapasitas minimum dan maksimum yang baru.

Setelah menyelesaikan tutorial ini, Anda akan tahu cara:

  • Gunakan penskalaan terjadwal untuk menambah kapasitas ekstra untuk memenuhi beban berat sebelum tiba, lalu lepaskan kapasitas ekstra saat tidak lagi diperlukan.

  • Gunakan kebijakan penskalaan pelacakan target untuk menskalakan aplikasi Anda berdasarkan pemanfaatan sumber daya saat ini.

Prasyarat

Tutorial ini mengasumsikan bahwa Anda telah melakukan hal berikut:

  • Dibuat sebuah Akun AWS.

  • Menginstal dan mengkonfigurasi file AWS CLI.

  • Memberikan izin yang diperlukan untuk mendaftarkan dan membatalkan pendaftaran sumber daya sebagai target yang dapat diskalakan dengan Application Auto Scaling. Selain itu, diberikan izin yang diperlukan untuk membuat kebijakan penskalaan dan tindakan terjadwal. Untuk informasi selengkapnya, lihat Identity and Access Management untuk Application Auto Scaling.

  • Membuat sumber daya yang didukung di lingkungan non-produksi yang tersedia untuk digunakan untuk tutorial ini. Jika Anda belum memilikinya, buat sekarang. Untuk informasi tentang AWS layanan dan sumber daya yang bekerja dengan Application Auto Scaling, lihat bagian. Layanan AWS yang dapat Anda gunakan dengan Application Auto Scaling

catatan

Saat menyelesaikan tutorial ini, ada dua langkah di mana Anda mengatur nilai kapasitas minimum dan maksimum sumber daya Anda ke 0 untuk mengatur ulang kapasitas saat ini ke 0. Bergantung pada sumber daya yang Anda gunakan dengan Application Auto Scaling, Anda mungkin tidak dapat mengatur ulang kapasitas saat ini ke 0 selama langkah-langkah ini. Untuk membantu Anda mengatasi masalah ini, pesan dalam output akan menunjukkan bahwa kapasitas minimum tidak boleh kurang dari nilai yang ditentukan dan akan memberikan nilai kapasitas minimum yang dapat diterima AWS sumber daya.

Langkah 1: Daftarkan target yang dapat diskalakan

Mulailah dengan meregistrasikan sumber daya Anda sebagai target yang dapat diskalakan dengan Application Auto Scaling. Target yang dapat diskalakan adalah sumber daya yang dapat diskalakan dan diskalakan oleh Application Auto Scaling.

Untuk mendaftarkan target yang dapat diskalakan dengan Application Auto Scaling
  • Gunakan perintah register-scalable-target berikut untuk mendaftarkan target baru yang dapat diskalakan. Tetapkan --min-capacity dan --max-capacity ke 0 untuk mengatur ulang kapasitas saat ini ke 0.

    Ganti teks sampel --service-namespace dengan namespace AWS layanan yang Anda gunakan dengan Application Auto Scaling--scalable-dimension, dengan dimensi skalabel yang terkait dengan sumber daya yang Anda daftarkan, --resource-id dan dengan pengenal untuk sumber daya. Nilai-nilai ini bervariasi berdasarkan sumber daya yang digunakan dan bagaimana ID sumber daya dibangun. Lihat topik di Layanan AWS yang dapat Anda gunakan dengan Application Auto Scaling bagian untuk informasi lebih lanjut. Topik ini mencakup contoh perintah yang menunjukkan cara mendaftarkan target yang dapat diskalakan dengan Application Auto Scaling.

    Linux, macOS, atau Unix

    aws application-autoscaling register-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --min-capacity 0 --max-capacity 0

    Windows

    aws application-autoscaling register-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier --min-capacity 0 --max-capacity 0

    Jika berhasil, perintah ini mengembalikan ARN dari target yang dapat diskalakan.

    { "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Langkah 2: Siapkan tindakan terjadwal sesuai dengan kebutuhan Anda

Anda dapat menggunakan perintah put-scheduled-action untuk membuat tindakan terjadwal yang dikonfigurasi untuk memenuhi kebutuhan bisnis Anda. Dalam tutorial ini, kami fokus pada konfigurasi yang berhenti mengkonsumsi sumber daya di luar jam kerja dengan mengurangi kapasitas menjadi 0.

Untuk membuat tindakan terjadwal yang akan disesuaikan di pagi hari
  1. Untuk menskalakan target yang dapat diskalakan, gunakan perintah put-scheduled-action berikut. Sertakan parameter --schedule dengan jadwal berulang, dalam UTC, menggunakan ekspresi cron.

    Pada jadwal yang ditentukan (setiap hari pukul 9:00 pagi UTC), Application Auto Scaling memperbarui MinCapacity dan MaxCapacity ke rentang unit kapasitas 1-5 yang diinginkan.

    Linux, macOS, atau Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-first-scheduled-action \ --schedule "cron(0 9 * * ? *)" \ --scalable-target-action MinCapacity=1,MaxCapacity=5

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-first-scheduled-action --schedule "cron(0 9 * * ? *)" --scalable-target-action MinCapacity=1,MaxCapacity=5

    Perintah ini tidak akan memberikan output jika berhasil.

  2. Untuk mengonfirmasi bahwa tindakan terjadwal Anda ada, gunakan perintah describe-scheduled-actions berikut.

    Linux, macOS, atau Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    Berikut ini adalah contoh output.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
Untuk membuat jadwal tindakan pembesaran skala di malam hari
  1. Ulangi prosedur sebelumnya untuk membuat tindakan terjadwal lainnya yang digunakan Application Auto Scaling untuk memperbesar skala di akhir hari.

    Pada jadwal yang ditentukan (setiap hari pukul 8:00 PM UTC), Application Auto Scaling memperbarui target MaxCapacity dan ke 0, seperti yang diinstruksikan oleh perintah MinCapacity put-scheduled-action berikut.

    Linux, macOS, atau Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action \ --schedule "cron(0 20 * * ? *)" \ --scalable-target-action MinCapacity=0,MaxCapacity=0

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action --schedule "cron(0 20 * * ? *)" --scalable-target-action MinCapacity=0,MaxCapacity=0
  2. Untuk mengonfirmasi bahwa tindakan terjadwal Anda ada, gunakan perintah describe-scheduled-actions berikut.

    Linux, macOS, atau Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    Berikut ini adalah output contoh.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... }, { "ScheduledActionName": "my-second-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 20 * * ? *)", "ScalableTargetAction": { "MinCapacity": 0, "MaxCapacity": 0 }, ... } ]

Langkah 3: Tambahkan kebijakan penskalaan pelacakan target

Sekarang setelah Anda memiliki jadwal dasar, tambahkan kebijakan penskalaan pelacakan target ke skala berdasarkan pemanfaatan sumber daya saat ini.

Dengan pelacakan target, Application Auto Scaling membandingkan nilai target dalam kebijakan dengan nilai saat ini dari metrik yang ditentukan. Jika tidak sama untuk periode waktu tertentu, Application Auto Scaling akan menambah atau menghapus kapasitas untuk mempertahankan kinerja yang stabil. Saat beban pada aplikasi Anda dan nilai metrik meningkat, Application Auto Scaling menambah kapasitas secepat mungkin tanpa melebihi MaxCapacity. Ketika Application Auto Scaling menghapus kapasitas karena beban minimal, itu melakukannya tanpa di bawah MinCapacity. Dengan menyesuaikan kapasitas berdasarkan penggunaan, Anda hanya membayar untuk kebutuhan aplikasi Anda.

Jika metrik memiliki data yang tidak cukup karena aplikasi Anda tidak memiliki beban apa pun, Application Auto Scaling tidak menambah atau menghapus kapasitas. Dengan kata lain, Application Auto Scaling memprioritaskan ketersediaan dalam situasi di mana tidak cukup informasi yang tersedia.

Anda dapat menambahkan beberapa kebijakan penskalaan, tetapi pastikan Anda tidak menambahkan kebijakan penskalaan langkah yang bertentangan, yang dapat menyebabkan perilaku yang tidak diinginkan. Misalnya, jika kebijakan penskalaan langkah memulai aktivitas pembesaran skala sebelum kebijakan pelacakan target siap untuk memulai pembesaran skala, aktivitas pembesaran skala tidak akan diblokir. Setelah aktivitas scale-in selesai, kebijakan pelacakan target dapat menginstruksikan Application Auto Scaling untuk skala keluar lagi.

Untuk membuat kebijakan penskalaan pelacakan target
  1. Gunakan perintah put-scaling-policy berikut untuk membuat kebijakan.

    Metrik yang paling sering digunakan untuk pelacakan target sudah ditentukan sebelumnya, dan Anda dapat menggunakannya tanpa menyediakan spesifikasi metrik lengkap dari. CloudWatch Untuk informasi selengkapnya tentang metrik standar yang tersedia, lihat. Kebijakan penskalaan pelacakan target untuk Application Auto Scaling

    Sebelum menjalankan perintah ini, pastikan metrik yang sudah ditentukan sebelumnya menetapkan nilai target. Misalnya, untuk memperkecil skala ketika CPU mencapai 50% utilisasi, tentukan nilai target sebesar 50.0. Atau, untuk memperkecil skala konkurensi yang disediakan Lambda ketika penggunaan mencapai 70% pemanfaatan, tentukan nilai target sebesar 0,7. Untuk informasi tentang nilai target untuk sumber daya tertentu, lihat dokumentasi yang disediakan oleh layanan tentang cara mengonfigurasi pelacakan target. Untuk informasi selengkapnya, lihat Layanan AWS yang dapat Anda gunakan dengan Application Auto Scaling.

    Linux, macOS, atau Unix

    aws application-autoscaling put-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }}'

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration "{ \"TargetValue\": 50.0, \"PredefinedMetricSpecification\": { \"PredefinedMetricType\": \"predefinedmetric\" }}"

    Jika berhasil, perintah ini mengembalikan ARN dan nama dari dua CloudWatch alarm yang dibuat atas nama Anda.

  2. Untuk mengonfirmasi bahwa tindakan terjadwal Anda ada, gunakan perintah describe-scaling-policies berikut.

    Linux, macOS, atau Unix

    aws application-autoscaling describe-scaling-policies --service-namespace namespace \ --query 'ScalingPolicies[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scaling-policies --service-namespace namespace --query "ScalingPolicies[?ResourceId==`identifier`]"

    Berikut ini adalah contoh output.

    [ { "PolicyARN": "arn", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]

Langkah 4: Langkah selanjutnya

Saat aktivitas penskalaan terjadi, Anda akan melihat catatannya di output aktivitas penskalaan untuk target yang dapat diskalakan, misalnya:

Successfully set desired count to 1. Change successfully fulfilled by ecs.

Untuk memantau aktivitas penskalaan Anda dengan Application Auto Scaling, Anda dapat menggunakan perintah describe-scaling-activities berikut.

Linux, macOS, atau Unix

aws application-autoscaling describe-scaling-activities --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling describe-scaling-activities --service-namespace namespace --scalable-dimension dimension --resource-id identifier

Langkah 5: Bersihkan

Untuk mencegah akun Anda menyesuaikan biaya untuk sumber daya yang diciptakan saat penskalaan aktif, Anda dapat membersihkan konfigurasi penskalaan terkait sebagai berikut.

Menghapus konfigurasi penskalaan tidak menghapus sumber daya yang mendasarinya AWS . Ini juga tidak akan mengembalikannya ke kapasitas asli. Anda dapat menggunakan konsol layanan tempat Anda membuat sumber daya untuk menghapusnya atau menyesuaikan kapasitasnya.

Untuk menghapus tindakan terjadwal

Perintah delete-scheduled-action berikut menghapus tindakan terjadwal yang ditentukan. Anda dapat melewati langkah ini jika Anda ingin mempertahankan tindakan terjadwal yang Anda buat.

Linux, macOS, atau Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action
Untuk menghapus kebijakan penskalaan

Perintah delete-scaling-policy berikut menghapus kebijakan penskalaan pelacakan target yang ditentukan. Anda dapat melewati langkah ini jika Anda ingin mempertahankan kebijakan penskalaan yang Anda buat.

Linux, macOS, atau Unix

aws application-autoscaling delete-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy
Untuk membatalkan pendaftaran target yang dapat diskalakan

Gunakan perintah deregister-scalable-target berikut untuk membatalkan pendaftaran target yang dapat diskalakan. Jika Anda memiliki kebijakan penskalaan yang Anda buat atau tindakan terjadwal yang belum dihapus, itu semua akan dihapus oleh perintah ini. Anda dapat melewati langkah ini jika Anda ingin menjaga target yang dapat diskalakan tetap terdaftar untuk penggunaan pada masa mendatang.

Linux, macOS, atau Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling deregister-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier