Elastic Load Balancer untuk beberapa webapps


13

Saya punya Nwebapps. Setiap webapp dilayani oleh nama host yang berbeda di domain saya dan digunakan untuk 2 instance yang berjalan di AWS. Dengan kata lain, saya punya 2Ncontoh, dibagi menjadi pasangan yang menjalankan Naplikasi web yang berbeda.

Saya ingin menyiapkan AWS Elastic Load Balancer tunggal yang akan mem-proxy permintaan ke salah satu dari dua contoh yang melayani berdasarkan Hostheader. Apakah itu mungkin menggunakan ELB tunggal atau saya perlu menggunakan NELB, satu untuk setiap pasangan instance?


Jawaban:


19

ELB tunggal merutekan lalu lintas ke satu set instance, dan mendistribusikan lalu lintas masuk ke semua instance "di belakang" itu. Itu tidak selektif merutekan lalu lintas berdasarkan pada lapisan 7 analisis lalu lintas, seperti Host:header.

Anda memerlukan satu ELB untuk setiap set instance. Saat Anda menggambarkannya, itu adalah satu ELB untuk setiap aplikasi web.

Jika tujuan utama Anda untuk menjalankan ELB adalah membongkar SSL menggunakan sertifikat wildcard (Saya punya satu sistem yang dirancang seperti ini, dengan puluhan aplikasi yang hidup di banyak-domain yang berbeda. My-wildcard-cert-domain.com), lalu instans "di belakang" ELB bisa menjalankan proxy terbalik seperti HAProxy (atau beberapa alternatif lain, seperti Varnish) yang dapat membuat keputusan routing layer-7 dan kemudian meneruskan lalu lintas ke subset yang sesuai dari mesin di belakang mereka, yang juga memungkinkan lebih canggih memuat penyeimbangan dan memiliki keuntungan menyediakan statistik dan penghitung lalu lintas, agregat dan terpisah.

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

Contoh perantara ^^^^ dapat mengevaluasi Host:header (antara lain) dan bahkan menangkap nilai cookie sesi dalam log mereka untuk dianalisis.

Pengaturan ini juga memungkinkan saya untuk menjalankan beberapa aplikasi pada subset instance yang tumpang tindih, jika perlu, dan melakukan banyak hal lain yang ELB sendiri tidak secara langsung dukung. Itu juga mengembalikan halaman "503" khusus dalam kasus di mana aplikasi kelebihan beban atau menjadi tidak tersedia, yang ELB tidak lakukan sendiri. Saya telah menggambarkan 2 server proksi di sini, tanpa alasan tertentu selain Anda menyebutkan nomor 2 dalam pertanyaan. Setup saya sebenarnya memiliki 3, satu untuk setiap zona ketersediaan di wilayah tempat ini digunakan.


3
Pada Agustus 2016, Amazon meluncurkan AWS Application Load Balancer yang memungkinkan perutean ke berbagai grup target berdasarkan header HTTP.
Jens Bannmann

2
@JensBannmann itu benar. Ketika mereka merilisnya, satu-satunya aturan routing yang didukungnya didasarkan pada path. Pada 2017, mereka menambahkan kemampuan rute berdasarkan Host:header. Jawaban ini benar ketika saya menulisnya pada tahun 2014, tetapi sepertinya sudah waktunya untuk pembaruan. Terima kasih telah membawanya kembali ke perhatian saya.
Michael - sqlbot

3

Per Agustus 2016, Amazon ELB menawarkan dua jenis penyeimbang beban:

  • Classic Load Balancer merutekan semua lalu lintas ke satu set instance tanpa mempertimbangkan konten protokol aplikasi. Sebelumnya, ini adalah satu-satunya tipe ELB yang tersedia.
  • Aplikasi Load Balancer dapat merutekan lalu lintas ke grup target yang berbeda sesuai dengan aturan yang dapat dikonfigurasi berdasarkan jalur URL. Posting blog New - AWS Application Load Balancer menyebutkan aplikasi yang terdiri dari beberapa layanan microser sebagai kasus penggunaan utama, dan memberikan instruksi pengaturan rinci.

Untuk kasus penggunaan Anda, Application Load Balancer tampaknya ideal. Namun terbatas pada 10 aturan, jadi itu hanya akan bekerja dengan mudah jika Anda Ntidak lebih dari 10.


0

Pada daftar instance EC2, Anda melihat dua instance, kan? Tetapi pada setiap contoh apakah Anda memiliki banyak webapp? Anda menggunakan host virtual untuk menyebarkan masing-masing?

Anda hanya perlu satu ELB untuk membagi biaya pada host Anda. Contoh:

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

Saya pikir itu lebih baik Anda memberi saya lebih banyak skenario Anda dan mungkin saya dapat membantu Anda.

Salam.

MEMPERBARUI

Jika Anda memiliki webapp yang berbeda pada instance EC2, Anda harus memiliki dua Elastic Load Balancers (ELB). Masing-masing untuk sepasang instance. Benar-benar, empat contoh


Pada daftar contoh saya, saya melihat 2Naplikasi. Ada N webapps, dua contoh untuk masing-masing. Saya akan mengedit pertanyaan untuk memperjelas ini.
thesamet

Respons yang diperbarui.
Junior Rocha
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.