Kami mencoba menjalankan pengaturan yang cukup mudah di Amazon EC2 - beberapa server HTTP yang berada di belakang Amazon Elastic Load Balancer (ELB).
Domain kami dikelola di Route53, dan kami memiliki catatan CNAME yang diatur untuk mengarah ke ELB.
Kami telah mengalami beberapa masalah di mana beberapa - tetapi tidak semua - lokasi secara intermiten tidak dapat terhubung ke load balancer; tampaknya ini mungkin merupakan resolusi dari nama domain ELB.
Dukungan Amazon memberi tahu kami bahwa IP Elastis yang mendasari load balancer telah berubah, dan masalahnya adalah bahwa beberapa server DNS ISP tidak menghormati TTL. Kami tidak puas dengan penjelasan ini, karena kami mereplikasi masalah menggunakan server DNS Amazon sendiri dari instance EC2, serta pada ISP lokal di Australia dan melalui server DNS Google ( 8.8.8.8
).
Amazon juga mengkonfirmasi bahwa selama periode di mana kami memperhatikan waktu henti dari beberapa lokasi, lalu lintas yang melewati ELB turun secara signifikan - sehingga masalahnya bukan pada titik akhir kami.
Menariknya, domain tersebut tampaknya menyelesaikan ke IP yang benar pada server yang tidak dapat terhubung - tetapi upaya untuk membuat koneksi TCP gagal.
Semua instance yang melekat pada ELB telah sehat setiap saat. Mereka semua
Adakah yang tahu bagaimana kita bisa mendiagnosis masalah ini lebih dalam? Adakah orang lain yang mengalami masalah ini dengan Elastic Load Balancer?
Terima kasih,
host
utilitas menyelesaikan ke alamat yang sama pada sistem di mana kita dapat terhubung dan sistem di mana kita tidak bisa.Jawaban:
Saya menemukan pertanyaan ini ketika mencari di Google untuk cara mendiagnosis Amazon Elastic Load Balancers (ELBs) dan saya ingin menjawabnya untuk orang lain seperti saya yang mengalami masalah ini tanpa banyak panduan.
Properti ELB
ELB memiliki beberapa sifat menarik. Contohnya:
CATATAN: Properti lain yang menarik tetapi sedikit kurang relevan adalah bahwa ELB tidak dirancang untuk menangani lonjakan lalu lintas yang tiba-tiba. Mereka biasanya membutuhkan 15 menit lalu lintas yang padat sebelum dapat ditingkatkan atau mereka dapat dipanaskan berdasarkan permintaan melalui tiket dukungan
Pemecahan masalah ELB (secara manual)
Pembaruan: AWS sejak itu telah memigrasikan semua ELB untuk menggunakan Rute 53 untuk DNS. Selain itu, semua ELB sekarang memiliki
all.$elb_name
catatan yang akan mengembalikan daftar lengkap node untuk ELB. Misalnya, jika nama ELB Andaelb-123456789.us-east-1.elb.amazonaws.com
, maka Anda akan mendapatkan daftar lengkap node dengan melakukan sesuatu sepertidig all.elb-123456789.us-east-1.elb.amazonaws.com
. Untuk node IPv6,all.ipv6.$elb_name
juga berfungsi. Selain itu, Rute 53 dapat mengembalikan hingga 4KB data yang masih menggunakan UDP, jadi menggunakan+tcp
bendera mungkin tidak diperlukan.Mengetahui hal ini, Anda dapat melakukan sedikit pemecahan masalah sendiri. Pertama, atasi nama ELB ke daftar node (sebagai catatan A):
The
tcp
flag disarankan sebagai ELB Anda bisa memiliki terlalu banyak catatan untuk fit dalam paket UDP tunggal. Saya juga diberitahu, tetapi belum dikonfirmasi secara pribadi, bahwa Amazon hanya akan menampilkan hingga 6 node kecuali Anda melakukanANY
kueri. Menjalankan perintah ini akan memberi Anda output yang terlihat seperti ini (dipangkas untuk singkatnya):Sekarang, untuk masing-masing
A
rekaman gunakan miscurl
untuk menguji koneksi ke ELB. Tentu saja, Anda juga ingin mengisolasi tes Anda hanya ke ELB tanpa terhubung ke backend Anda. Satu properti terakhir dan sedikit fakta yang diketahui tentang ELB:Ini berarti bahwa kita dapat memanfaatkan perilaku ini untuk menguji hanya bahwa ELB merespons:
Jika Anda melihat
HTTP/1.1 405 METHOD_NOT_ALLOWED
maka ELB merespons dengan sukses. Anda mungkin juga ingin menyesuaikan batas waktu curl dengan nilai yang dapat Anda terima.Memecahkan masalah ELB menggunakan elbping
Tentu saja, melakukan ini bisa sangat membosankan, jadi saya telah membangun alat untuk mengotomatisasi elbping ini . Ini tersedia sebagai permata ruby, jadi jika Anda memiliki rubygems maka Anda dapat menginstalnya hanya dengan melakukan:
Sekarang Anda dapat menjalankan:
Ingat, jika Anda melihat
code=405
maka itu berarti ELB merespons.Langkah selanjutnya
Metode apa pun yang Anda pilih, Anda setidaknya akan tahu apakah node ELB Anda merespons atau tidak. Berbekal pengetahuan ini, Anda dapat mengubah fokus Anda menjadi pemecahan masalah bagian-bagian lain dari tumpukan Anda atau dapat membuat kasus yang cukup masuk akal bagi AWS bahwa ada sesuatu yang salah.
Semoga ini membantu!
sumber
Cara mengatasinya sebenarnya sederhana: Gunakan
A
catatan daripadaCNAME
di Route53.Di Konsol Manajemen AWS, pilih "Catatan" dan kemudian pindahkan tombol radio berlabel "Alias" ke "Ya." Kemudian pilih ELB Anda dari menu dropdown.
sumber
CNAME
catatan harus digunakan. Apa manfaatA
catatan / apa yang berubah di sini?Ada beberapa solusi potensial yang dapat Anda coba di forum pengembang AWS ini. https://forums.aws.amazon.com/message.jspa?messageID=387552 .
Sebagai contoh:
perbaikan potensial # 1
perbaikan potensial # 2
Ada hal-hal lain untuk dicoba di pos itu tetapi itu tampaknya menjadi petunjuk terbaik.
sumber