Dapatkah Elastic Load Balancers mendistribusikan traffic dengan benar ke berbagai instance ukuran

10

Baru saja melihat ke Load Balancers Elastis. Seperti yang saya pahami mereka hanya melakukan round robin, secara merata mendistribusikan koneksi ke server di belakang mereka. Jadi apa yang terjadi jika Anda memiliki contoh ukuran yang berbeda di belakang ELB? Apakah itu mengirim lebih banyak koneksi ke instance yang lebih besar atau apakah itu terus mendistribusikan koneksi secara merata, yang berarti Anda benar-benar tidak boleh menggunakan contoh ukuran yang berbeda.

Sean Bannister
sumber

Jawaban:

15

Seperti yang saya pahami mereka hanya melakukan round robin, secara merata mendistribusikan koneksi ke server di belakang mereka.

Agak, tapi tidak terlalu saya pikir - sayangnya, dokumentasi ELB routing Amazon kurang ada, jadi kita perlu mengumpulkan beberapa bagian untuk menarik kesimpulan. Ini adalah satu-satunya fragmen dari Panduan Pengembang Penyeimbangan Beban Elastis yang saya ketahui, lihat bagian Sesi Lekat dalam Tinjauan Penyeimbangan Beban Elastis :

Secara default, penyeimbang beban merutekan setiap permintaan secara independen ke instance aplikasi dengan beban terkecil . Namun, Anda dapat menggunakan fitur sesi sticky (juga dikenal sebagai afinitas sesi), yang memungkinkan penyeimbang beban untuk mengikat sesi pengguna ke instance aplikasi tertentu. Ini memastikan bahwa semua permintaan yang datang dari pengguna selama sesi akan dikirim ke instance aplikasi yang sama. [penekanan milikku]

Sekarang, apa sebenarnya arti dari muatan terkecil ? Sekali lagi, satu-satunya penjelasan yang saya ketahui adalah respons tim AWS yang agak kabur dari 2009 terhadap Strategi ELB :

ELB secara longgar melacak berapa banyak permintaan (atau koneksi dalam kasus TCP) yang beredar di setiap contoh. Itu tidak memonitor penggunaan sumber daya (seperti CPU atau memori) pada setiap contoh. ELB saat ini akan melakukan round-robin di antara beberapa contoh yang diyakini memiliki permintaan paling sedikit. [penekanan milikku]

Ini sangat masuk akal mengenai arsitektur sistem mereka dan menangani kasus penggunaan, tetapi jelas tidak memberikan transparansi dan / atau kontrol perutean yang mungkin Anda inginkan atau butuhkan untuk skenario HA tingkat lanjut.

Harap perhatikan bahwa, tergantung pada interpretasi, ini mungkin atau mungkin tidak dapat dikontradiksikan sedikit oleh respons tim AWS yang lebih baru terhadap Penimbangan Beban Elastis - Kebijakan distribusi beban :

Round-robin memang ikut berperan tetapi sesi klien tidak selalu menghormati cache TTL atau DNS sehingga Anda bisa mendapatkan hasil yang miring dan distribusi permintaan yang tidak merata. ELB tidak berlaku apa yang diterima oleh lalu lintas / permintaan saat ini dalam keputusan perutean lalu lintas di sana. [penekanan milikku]

Pemeriksaan Kesehatan

Tentu saja, hal di atas diamandemen dengan pemeriksaan kesehatan yang terdokumentasi dengan baik, transparan, dan dapat dikontrol , yang memberi Anda beberapa pengaruh untuk (berpotensi sementara) menghapus instance agar tidak dimasukkan dalam perutean di tempat pertama, seperti yang dirangkum dalam respons tim AWS yang disebutkan sebelumnya terhadap ELB. Strategi juga:

Load balancer memonitor kesehatan instances Anda yang terdaftar dengan load balancer Anda. Ketika penyeimbang beban mendeteksi masalah dengan sebuah instance, ia berhenti mendistribusikan lalu lintas ke sana. Ketika instance sehat kembali, penyeimbang beban memulai kembali mendistribusikan lalu lintas ke sana. Proses ini memungkinkan aplikasi Anda untuk secara otomatis bereaksi terhadap kejadian yang gagal tanpa Anda harus terlibat di luar mengonfigurasi pemeriksaan kesehatan.

Kesimpulan

Meskipun tentu saja tidak biasa, saya tidak melihat mengapa ELB tidak dapat bekerja dengan sekelompok tipe instance Amazon EC2 yang berbeda juga - Saya belum mencoba ini sendiri dan akan merekomendasikan keduanya, Memantau Load Balancer Anda Menggunakan CloudWatch dan juga pemantauan EC2 individu Anda akan ditampilkan dan menghubungkan hasil untuk mendapatkan wawasan dan kepercayaan masing-masing pada pengaturan tersebut pada akhirnya.

Steffen Opel
sumber
1
Terima kasih banyak untuk jawaban yang begitu mendalam, persis apa yang saya cari tetapi tidak dapat menemukan.
Sean Bannister
1
Dari pengalaman, saya dapat memberitahu Anda bahwa ELB TIDAK mendistribusikan lalu lintas dengan baik dengan kumpulan yang mencakup beberapa jenis instance.
mana
Adakah yang punya informasi tentang AWS Application Load Balancers (ALB) dan berbagai jenis instance?
Sesuatu Pada
1

Berdasarkan pernyataan yang dibuat sampai sekarang, algoritma distribusi sangat sederhana.

Front-end dari ELB biasanya lebih dari satu instance ELB, dan distribusinya adalah round-robin.

The back-end (contoh Anda) juga mengklaim sebagai:

ELB secara longgar melacak berapa banyak permintaan (atau koneksi dalam kasus TCP) yang beredar di setiap contoh. Itu tidak memonitor penggunaan sumber daya (seperti CPU atau memori) pada setiap contoh. ELB saat ini akan melakukan round-robin di antara beberapa contoh yang diyakini memiliki permintaan paling sedikit.

Ini akan menyimpulkan bahwa jika instance yang lebih besar memiliki permintaan yang kurang menonjol, maka lebih banyak lalu lintas akan dialihkan ke mereka. Tidak ada cara untuk menjamin ini.

Mike Fiedler
sumber