मुझे यह प्रश्न मिला कि Googling for Amazon Elastic Load Balancers (ELBs) का निदान कैसे किया जाता है और मैं इसका उत्तर किसी और के लिए देना चाहता हूं, जो बिना किसी मार्गदर्शन के यह मुसीबत झेल चुका है।
ईएलबी गुण
ईएलबी में कुछ दिलचस्प गुण हैं। उदाहरण के लिए:
- ELB 1 या अधिक नोड्स से बने होते हैं
- इन नोड्स को ईएलबी नाम के ए रिकॉर्ड के रूप में प्रकाशित किया जाता है
- ये नोड्स विफल हो सकते हैं, या बंद हो सकते हैं, और कनेक्शन इनायत से बंद नहीं होंगे
- किसी को ELB समस्याओं में खोदने के लिए अक्सर अमेजन समर्थन ($ $ $) के साथ अच्छे संबंध की आवश्यकता होती है
नोट: एक और दिलचस्प संपत्ति लेकिन थोड़ा कम प्रासंगिक यह है कि ईएलबी को यातायात के अचानक स्पाइक्स को संभालने के लिए डिज़ाइन नहीं किया गया था। आमतौर पर उन्हें 15 मिनट के भारी ट्रैफ़िक की आवश्यकता होती है, इससे पहले कि वे बड़े पैमाने पर हों या वे समर्थन टिकट के माध्यम से अनुरोध पर पूर्व-गर्म हो सकते हैं
समस्या निवारण ईएलबी (मैन्युअल रूप से)
अपडेट: AWS ने सभी ELB को DNS के लिए रूट 53 का उपयोग करने के लिए माइग्रेट किया है। इसके अलावा, सभी ईएलबी के पास अब एक all.$elb_name
रिकॉर्ड है जो ईएलबी के लिए नोड्स की पूरी सूची लौटाएगा। उदाहरण के लिए, यदि आपका ईएलबी नाम है elb-123456789.us-east-1.elb.amazonaws.com
, तो आप कुछ ऐसा करके नोड्स की पूरी सूची प्राप्त करेंगे dig all.elb-123456789.us-east-1.elb.amazonaws.com
। IPv6 नोड्स के लिए all.ipv6.$elb_name
भी काम करता है। इसके अलावा, रूट 53 यूडीपी का उपयोग करते हुए अभी भी डेटा के 4KB तक लौटने में सक्षम है, इसलिए +tcp
ध्वज का उपयोग करना आवश्यक नहीं हो सकता है।
यह जानने के बाद, आप अपने दम पर थोड़ी समस्या निवारण कर सकते हैं। सबसे पहले, नोड्स की सूची में एएलबी नाम को हल करें (ए रिकॉर्ड्स के रूप में):
$ dig @ns-942.amazon.com +tcp elb-123456789.us-east-1.elb.amazonaws.com ANY
tcp
के रूप में अपने ईएलबी एक भी यूडीपी पैकेट के फिट अंदर करने के लिए भी कई रिकॉर्ड हो सकता था ध्वज का सुझाव दिया है। मुझे भी बताया गया है, लेकिन व्यक्तिगत रूप से पुष्टि नहीं की गई है, कि अमेज़ॅन केवल 6 नोड तक प्रदर्शित करेगा जब तक कि आप एक ANY
क्वेरी नहीं करते हैं। इस कमांड को चलाने से आपको आउटपुट मिलेगा जो कुछ इस तरह दिखता है (संक्षिप्तता के लिए छंटनी):
;; 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
अब, प्रत्येक A
रिकॉर्ड curl
के लिए ईएलबी से कनेक्शन का परीक्षण करने के लिए उदाहरण के लिए उपयोग करें । बेशक, आप भी अपने परीक्षण को अपने बैकएंड से कनेक्ट किए बिना केवल ईएलबी को अलग करना चाहते हैं। एक अंतिम संपत्ति और ईएलबी के बारे में कम ज्ञात तथ्य:
- अनुरोध विधि (क्रिया) का अधिकतम आकार जिसे ELB के माध्यम से भेजा जा सकता है, 127 वर्ण है । कोई भी बड़ा और ईएलबी HTTP 405 के साथ जवाब देगा - विधि की अनुमति नहीं है ।
इसका मतलब है कि हम इस व्यवहार का लाभ उठा सकते हैं कि केवल परीक्षण करने के लिए ईएलबी जवाब दे रहा है:
$ 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
तो ELB सफलतापूर्वक जवाब दे रहा है। आप कर्ल के टाइमआउट को उन मूल्यों के साथ समायोजित करना चाह सकते हैं जो आपके लिए स्वीकार्य हैं।
एल्बपिंग का उपयोग करके समस्या निवारण ईएलबी
बेशक, यह करना बहुत थकाऊ हो सकता है इसलिए मैंने इसे एल्बपिंग कहा जाता है । यह एक माणिक रत्न के रूप में उपलब्ध है, इसलिए यदि आपके पास माणिक्य हैं तो आप इसे बस करके स्थापित कर सकते हैं:
$ gem install elbping
अब आप चला सकते हैं:
$ 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
याद रखें, यदि आप देखते हैं code=405
तो इसका मतलब है कि ELB जवाब दे रहा है।
अगला कदम
आप जो भी विधि चुनते हैं, आपको कम से कम पता चल जाएगा कि आपके ईएलबी के नोड्स जवाब दे रहे हैं या नहीं। इस ज्ञान के साथ सशस्त्र, आप या तो अपना ध्यान अपने स्टैक के अन्य हिस्सों की समस्या निवारण में बदल सकते हैं या एडब्ल्यूएस के लिए एक उचित उचित मामला बनाने में सक्षम हो सकते हैं कि कुछ गलत है।
उम्मीद है की यह मदद करेगा!
host
यूटिलिटी को चलाने से सिस्टम पर एक ही पते पर हल होता है जहाँ हम कनेक्ट हो सकते हैं और जहाँ सिस्टम हम नहीं कर सकते।