Penskalaan otomatis dinamis AWS berdasarkan pesan di SQS

Kasus penggunaan:

Setiap pagi SQS akan diisi (hanya satu kali, dan jumlah pesan dapat bervariasi secara drastis), saya ingin membuat instance baru sesuai dengan jumlah pesan dalam antrian.

misal: Untuk 200.000 pesan 4 Contoh, 400.000 8 contoh.

Adakah cara untuk mencapai hal ini?


person najeeb    schedule 04.02.2016    source sumber


Jawaban (1)


  1. Anda dapat menyiapkan cron-job di server Anda atau Lambda yang dipicu waktu untuk menanyakan SQS guna mengetahui jumlah pesan yang terlihat dalam antrean. Jika Anda menggunakan AWS CLI, Anda akan menjalankan aws sqs get-queue-attributes dan membaca kolom respons ApproximateNumberOfMessages untuk mendapatkan jumlah item dalam antrian. Anda kemudian akan menggunakan nomor tersebut untuk menghitung jumlah instance dan memanggil aws ec2 run-instances --count 4 ditambah parameter lainnya. Setelah semuanya selesai, Anda akan menghentikan instance tersebut.

  2. Cara lain untuk melakukan ini adalah dengan memanfaatkan penskalaan otomatis dan alarm. Anda dapat menyiapkan kebijakan ScaleOut yang menambahkan 1 server ke Grup AutoScaling Anda dan memicu kebijakan tersebut dengan alarm CloudWatch pada SQS ApproximateNumberOfMessages >= beberapa ambang batas. Opsi ini tidak akan menunggu hingga pagi hari untuk memproses antrean, Anda akan menjalankannya sepanjang waktu. Anda juga dapat memiliki kebijakan ScaleIn untuk mengurangi Kapasitas yang Diinginkan (# server) di Grup AutoScaling Anda ketika ApproximateNumberOfMessages ‹= ambang batas tertentu.

person Max    schedule 04.02.2016
comment
Terima kasih Max, akan mencoba menghubungi Anda kembali. Pada pendekatan kedua, penskalaan hanya akan dilakukan 1 kali, bukan? Bagaimana cara memunculkan sebanyak mungkin instance yang diperlukan untuk jumlah pesan? - person najeeb; 05.02.2016
comment
Dalam kebijakan penskalaan Anda, tetapkan pendinginan, misalnya. 10 menit. Selama alarm Anda terpicu (›= x pesan), alarm akan terus mencoba memicu kebijakan peningkatan skala, namun jeda akan memastikan kebijakan tersebut hanya memanfaatkan sebagian besar server setiap 10 menit. Jika dalam 10 menit tersebut antrean dikosongkan, alarm Anda akan bertransisi ke status OK dan berhenti memanggil kebijakan peluasan skala - person Max; 05.02.2016
comment
Oke, Terima kasih, akan menggunakan pendekatan pertama karena kami memiliki kontrol lebih besar terhadap sistem di dalamnya. - person najeeb; 05.02.2016