Amazon Elastik Yük Dengeleyicilerini (ELB'ler) nasıl teşhis edeceğimizi araştırırken bu soruyu buldum ve bu sorunu çok fazla rehberlik olmadan yaşayan benim gibi herkes için cevaplamak istiyorum.
ELB Özellikleri
ELB'lerin bazı ilginç özellikleri vardır. Örneğin:
- ELB'ler 1 veya daha fazla düğümden oluşur
- Bu düğümler ELB adı için A kayıtları olarak yayınlanır
- Bu düğümler başarısız veya kapatmaya olacak ve bağlantıları olacaktır olabilir değil incelikle kapatılacak
- Birinin ELB problemlerine girmesini sağlamak için genellikle Amazon desteği ($$$) ile iyi bir ilişki gerektirir.
NOT: Biraz daha az ilgili ancak ilginç olan bir başka özellik de ELB'lerin ani trafik dalgalanmalarını giderecek şekilde tasarlanmamış olmasıdır. Ölçeklendirilmeleri için genellikle 15 dakika yoğun trafiğe ihtiyaç duyarlar veya istek üzerine bir destek bileti yoluyla önceden ısıtılabilirler
ELB'lerde Sorun Giderme (manuel)
Güncelleme: AWS o zamandan beri tüm ELB'leri DNS için Route 53'ü kullanacak şekilde taşıdı. Ek olarak, tüm ELB'lerde artık all.$elb_name
ELB için düğümlerin tam listesini döndürecek bir kayıt var. Örneğin, ELB adınız ise elb-123456789.us-east-1.elb.amazonaws.com
, benzer bir şey yaparak düğümlerin tam listesini alırsınız dig all.elb-123456789.us-east-1.elb.amazonaws.com
. IPv6 düğümleri için all.ipv6.$elb_name
de çalışır. Buna ek olarak, Route 53 hala UDP kullanan 4KB'ye kadar veri döndürebilir, bu nedenle +tcp
bayrağı kullanmak gerekli olmayabilir.
Bunu bilerek, kendi başınıza biraz sorun giderme yapabilirsiniz. İlk olarak, ELB adını bir düğüm listesine çözün (A kayıtları olarak):
$ dig @ns-942.amazon.com +tcp elb-123456789.us-east-1.elb.amazonaws.com ANY
tcp
Senin ELB tek UDP paketinin uyum içine çok fazla kaydının olmasından olarak bayrak önerilir. Ben Amazon sadece 6 düğümler kadar göstereceği de söylendi, ama şahsen teyit etmemiştir sürece bir performans ANY
sorgusu. Bu komutu çalıştırmak size şöyle bir çıktı verir (kısalık için kesilmiş):
;; ANSWER SECTION:
elb-123456789.us-east-1.elb.amazonaws.com. 60 IN SOA ns-942.amazon.com. root.amazon.com. 1376719867 3600 900 7776000 60
elb-123456789.us-east-1.elb.amazonaws.com. 600 IN NS ns-942.amazon.com.
elb-123456789.us-east-1.elb.amazonaws.com. 60 IN A 54.243.63.96
elb-123456789.us-east-1.elb.amazonaws.com. 60 IN A 23.21.73.53
Şimdi, A
kayıtların her biri için, örneğin curl
ELB ile bir bağlantıyı test etmek için kullanın . Elbette, testinizi arka uçlarınıza bağlamadan sadece ELB'ye izole etmek istersiniz. Son bir mülk ve ELB'ler hakkında az bilinen gerçek:
- Bir ELB aracılığıyla gönderilebilen istek yönteminin (fiil) maksimum boyutu 127 karakterdir . Daha büyük ve ELB bir HTTP 405 - Yönteme izin verilmiyor ile yanıt verecektir .
Bu, yalnızca ELB'nin yanıt verdiğini test etmek için bu davranıştan yararlanabileceğimiz anlamına gelir:
$ curl -X $(python -c 'print "A" * 128') -i http://ip.of.individual.node
HTTP/1.1 405 METHOD_NOT_ALLOWED
Content-Length: 0
Connection: Close
HTTP/1.1 405 METHOD_NOT_ALLOWED
Görürseniz, ELB başarıyla yanıt veriyor . Curl'un zaman aşımlarını sizin için kabul edilebilir değerlere ayarlamak da isteyebilirsiniz.
Dirsek kullanarak ELB'lerde sorun giderme
Tabii ki, bunu yapmak oldukça sıkıcı olabilir, bu yüzden elbping denilen otomatikleştirmek için bir araç inşa ettim . Bir yakut mücevher olarak kullanılabilir, bu yüzden rubygems'iniz varsa bunu yaparak yükleyebilirsiniz:
$ gem install elbping
Şimdi çalıştırabilirsiniz:
$ elbping -c 4 http://elb-123456789.us-east-1.elb.amazonaws.com
Response from 54.243.63.96: code=405 time=210 ms
Response from 23.21.73.53: code=405 time=189 ms
Response from 54.243.63.96: code=405 time=191 ms
Response from 23.21.73.53: code=405 time=188 ms
Response from 54.243.63.96: code=405 time=190 ms
Response from 23.21.73.53: code=405 time=192 ms
Response from 54.243.63.96: code=405 time=187 ms
Response from 23.21.73.53: code=405 time=189 ms
--- 54.243.63.96 statistics ---
4 requests, 4 responses, 0% loss
min/avg/max = 187/163/210 ms
--- 23.21.73.53 statistics ---
4 requests, 4 responses, 0% loss
min/avg/max = 188/189/192 ms
--- total statistics ---
8 requests, 8 responses, 0% loss
min/avg/max = 188/189/192 ms
Unutmayın, eğer görürseniz code=405
, ELB yanıt veriyor demektir.
Sonraki adımlar
Hangi yöntemi seçerseniz seçin, en azından ELB'nizin düğümlerinin yanıt verip vermediğini bileceksiniz. Bu bilgiyle donanmış olarak, odağınızı yığınızın diğer kısımlarında sorun gidermeye dönüştürebilir veya AWS'ye bir şeyin yanlış olduğuna dair oldukça makul bir durum sunabilirsiniz.
Bu yardımcı olur umarım!
host
yardımcı programı çalıştırmak, bağlanabileceğimiz sistemler ve sistemlerdeki aynı adrese çözüyor yapamayız.