Di AWS kami ingin menggunakan ELB untuk memuat instance EC2 saldo yang menampung banyak aplikasi. Idealnya kami ingin pemeriksaan kesehatan untuk aplikasi.
Namun, AWS Elastic Load Balancers saat ini hanya memungkinkan Anda melakukan ping ke satu lokasi untuk pemeriksaan kesehatan.
Apa cara terbaik untuk mengimplementasikan pemeriksaan kesehatan dengan ELB yang memperhitungkan keadaan beberapa aplikasi yang digunakan pada setiap instance EC2?
amazon-web-services
amazon-elb
healthcheck
Andrei Fierbinteanu
sumber
sumber
Jawaban:
Berikut adalah dua cara untuk mengatasi ini;
Opsi pertama adalah menambahkan pemeriksaan kesehatan lain pada host yang memvalidasi kesehatan dan mengembalikan HTTP 200 ke ELB jika logika mengatakan bahwa Anda ingin menjaga host online. Logikanya, tentu saja, terserah Anda. Kerugian di sini adalah bahwa jika App 2 berhasil digunakan pada beberapa host, semua host masih 'sehat' dan menerima lalu lintas.
Pilihan lain adalah menggunakan ELB tambahan untuk setiap aplikasi. Anda dapat mengarahkan beberapa ELB ke instance EC2 backend yang sama dan biayanya cukup kecil untuk melakukannya. Dengan cara itu Anda dapat memeriksa kesehatan per aplikasi dan menjatuhkan host dengan masalah pada tingkat per aplikasi daripada pendekatan semua atau tidak sama sekali.
Sunting: Harap perhatikan bahwa ini adalah jawaban yang lebih lama dan khusus untuk ELB, bukan ALB. ALB mendukung target terpisah pada satu host secara asli.
sumber
Menggunakan satu ELB per aplikasi adalah cara untuk pergi ke sini.
Pertama, Anda mungkin tetap membutuhkannya jika setiap aplikasi menggunakan domainnya sendiri dan Anda perlu mendukung SSL. ELB Amazon saat ini hanya memperbolehkan satu sertifikat SSL untuk setiap domain, membutuhkan ELB terpisah untuk setiap domain yang mendukung SSL. (Sertifikasi Wildcard SSL menjadi pengecualian).
Tantangannya di sini adalah bahwa pemeriksaan kesehatan ELB saat ini tidak dapat diarahkan ke domain virtual tertentu yang dihosting pada instance EC2. (Tidak ada "Host:" header dikirim). Ping kesehatan ELB selalu pergi ke domain default, seolah-olah Anda telah memuat alamat IP untuk instance EC2 di browser Anda. Jadi diperlukan beberapa lem untuk menerima cek kesehatan pada domain default dan kemudian membalas dengan status kesehatan aplikasi tertentu.
Berikut adalah contoh konfigurasi yang berfungsi yang dapat ditambahkan ke
server
direktif Nginx . Ini akan diinstal pada setiap instance EC2 yang memuat secara seimbang.Dalam pengaturan "Pemeriksaan Kesehatan" pada ELB untuk "first-application.com", Anda akan memilih "HTTP" dan Port 80 dan masukkan path seperti:
/health-check/first-application.com
Dengan konfigurasi Nginx di atas yang berjalan di host, permintaan akan diterima di domain default dan proksi respons dari konfigurasi Nginx di host yang sama untuk https://first-application.com/api/v1/status
Dengan pendekatan ini tidak ada konfigurasi per-aplikasi di Nginx. Selama setiap aplikasi memiliki nama domain yang unik, Anda hanya perlu memastikan bahwa Anda mengatur ELB untuk setiap aplikasi dengan tepat.
sumber
Pada 11 Agustus 2016, Amazon memperkenalkan Application Load Balancers . Ini memungkinkan Anda menentukan beberapa Grup Target, masing-masing dengan jenis pemeriksaan kesehatannya sendiri. Jadi sekarang ini mungkin menggunakan penyeimbang beban tunggal!
sumber