EC2 इलास्टिक लोड बैलेंसर DNS और रूटिंग के साथ समस्याएँ


19

हम Amazon EC2 पर एक काफी सीधा सेटअप चलाने की कोशिश कर रहे हैं - कई HTTP सर्वर एक अमेज़न इलास्टिक लोड बैलेंसर (ELB) के पीछे बैठे हैं।

हमारा डोमेन रूट 53 में प्रबंधित है, और हमारे पास एक CNAME रिकॉर्ड है जो ELB को इंगित करता है।

हमने कुछ मुद्दों का अनुभव किया है जहां कुछ - लेकिन सभी नहीं - स्थान आंतरायिक रूप से लोड बैलेंसर से कनेक्ट करने में असमर्थ हैं; ऐसा लगता है कि यह ईएलबी के डोमेन नाम का संकल्प हो सकता है।

अमेज़ॅन समर्थन ने हमें सलाह दी कि लोड बैलेंसर का अंतर्निहित इलास्टिक आईपी बदल रहा है, और समस्या यह है कि कुछ आईएसपी के डीएनएस सर्वर टीटीएल का सम्मान नहीं करते हैं। हम इस स्पष्टीकरण से संतुष्ट नहीं हैं, क्योंकि हमने अमेज़ॅन के स्वयं के DNS सर्वरों का उपयोग ईसी 2 उदाहरण, साथ ही ऑस्ट्रेलिया में स्थानीय आईएसपी और Google के डीएनएस सर्वर ( 8.8.8.8) के माध्यम से करने में समस्या को दोहराया है ।

अमेज़ॅन ने यह भी पुष्टि की कि उस अवधि के दौरान जहां हमने कुछ स्थानों से समय कम देखा था, ईएलबी से गुजरने वाले यातायात में काफी गिरावट आई थी - इसलिए समस्या हमारे समापन बिंदुओं के साथ नहीं है।

दिलचस्प है, डोमेन उन सर्वरों पर सही आईपी का समाधान करता है जो कनेक्ट नहीं कर सकते हैं - लेकिन टीसीपी कनेक्शन स्थापित करने का प्रयास विफल हो जाता है।

ईएलबी से जुड़े सभी उदाहरण हर समय स्वस्थ रहे हैं। वे सब कर रहे हैं

क्या किसी को पता है कि हम इस समस्या का अधिक गहराई से निदान कैसे कर सकते हैं? क्या किसी और ने इलास्टिक लोड बैलेंसर के साथ इस समस्या का अनुभव किया है?

धन्यवाद,


मुझे एक और नोट के रूप में जोड़ना चाहिए - इसके बावजूद कि यह DNS या राउटिंग से संबंधित प्रतीत होता है, जहाँ तक हम बता सकते हैं कि हमारा डोमेन हमेशा सही EIP का समाधान करता है - hostयूटिलिटी को चलाने से सिस्टम पर एक ही पते पर हल होता है जहाँ हम कनेक्ट हो सकते हैं और जहाँ सिस्टम हम नहीं कर सकते।
सेरा

जवाबों:


21

मुझे यह प्रश्न मिला कि 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 जवाब दे रहा है।

अगला कदम

आप जो भी विधि चुनते हैं, आपको कम से कम पता चल जाएगा कि आपके ईएलबी के नोड्स जवाब दे रहे हैं या नहीं। इस ज्ञान के साथ सशस्त्र, आप या तो अपना ध्यान अपने स्टैक के अन्य हिस्सों की समस्या निवारण में बदल सकते हैं या एडब्ल्यूएस के लिए एक उचित उचित मामला बनाने में सक्षम हो सकते हैं कि कुछ गलत है।

उम्मीद है की यह मदद करेगा!


1
महान जवाब के लिए धन्यवाद। हम मूल रूप से परीक्षण और त्रुटि के माध्यम से इसका अधिकांश पता लगा चुके हैं, लेकिन यह एक आसान संदर्भ होगा।
सेरा

7

फिक्स वास्तव में सरल है: रूट 53 में Aएक के बजाय एक रिकॉर्ड का उपयोग करें CNAME

AWS मैनेजमेंट कंसोल में, "A रिकॉर्ड" चुनें और फिर "Alias" लेबल वाले रेडियो बटन को "Yes" पर ले जाएँ। फिर ड्रॉपडाउन मेनू से अपना ईएलबी चुनें।


1
मैं इस तय के पीछे तर्क नहीं समझता। ईएलबी के लिए अमेज़ॅन के दस्तावेज विशेष रूप से कहते हैं कि एक CNAMEरिकॉर्ड का उपयोग किया जाना चाहिए। एक Aरिकॉर्ड का क्या फायदा होगा / यहाँ क्या बदल रहा है?
सेरा

3
यदि आपके DNS को रूट 53 के अलावा कहीं और होस्ट किया गया था, तो आपको CNAME का उपयोग करना होगा। लेकिन एक रिकॉर्ड अलियासिंग एक ऐसी सुविधा है जो रूट 53 के लिए विशिष्ट है और इसका उद्देश्य आपके द्वारा सामना की जा रही सटीक समस्या को हल करना है। Route53 डॉक्स अधिक से अधिक गहराई में यह समझाने।
जैमिब

@jamieb क्या आप दस्तावेज़ के उस टुकड़े का लिंक प्रदान कर सकते हैं?
तक

1
इसे ए रिकॉर्ड के विपरीत "अलियास टारगेट" कहा जाता है। docs.aws.amazon.com/Route53/latest/DeveloperGuide/…
जॉनी07

0

कुछ संभावित समाधान हैं जिन्हें आप इस AWS डेवलपर्स फ़ोरम में आज़मा सकते हैं। https://forums.aws.amazon.com/message.jspa?messageID=387552

उदाहरण के लिए:

संभावित फिक्स # 1

जब हम ईएलबी में चले गए तो हमें भी इसी तरह की समस्या थी, हमने अपने ईएलबी के नाम को एक एकल चरित्र में घटाकर इसे हल किया। यहां तक ​​कि ELB के लिए 2 char नाम ने नेटवर्क समाधान DNS रिज़ॉल्यूशन के साथ यादृच्छिक समस्याएं पैदा कीं।

आपके ELB का DNS नाम कुछ इस तरह होना चाहिए -> X. <9chars> .us-east-1.elb.amodaws.com

संभावित फिक्स # 2

मैं मूल पोस्टर हूँ। प्रतिसाद के लिए धन्यवाद। हम उस आवृत्ति को कम करने में सक्षम थे जिसके साथ हमने टीटीएल को बहुत अधिक सेट करके DNS मुद्दों का अनुभव किया (इसलिए वे गैर-नेटवर्क समाधान द्वारा कैश किया जाएगा)। हालाँकि, हमें अभी भी काफी समस्याएँ हो रही थीं जहाँ हम अभी नेटवर्क सॉल्यूशंस के साथ नहीं रह सकते थे। हमने सेवा पर अच्छी रिपोर्ट के आधार पर UltraDNS पर जाने के बारे में सोचा, लेकिन यह मार्ग 53 की तरह लग रहा था (जो कवर के तहत UltraDNS का उपयोग करता है, ऐसा प्रतीत होता है) हमारे लिए सस्ता होगा। रूट 53 पर स्विच करने के बाद से, हमारे पास अधिक DNS मुद्दे नहीं हैं, और हमारे ईएलबी नाम अच्छे और लंबे भी हो सकते हैं।

उस पोस्ट में कोशिश करने के लिए अन्य चीजें थीं लेकिन वे सबसे अच्छे लीड लगते हैं।


सुझाव के लिए धन्यवाद। दुर्भाग्य से ऐसा लगता है कि समस्या शुद्ध रूप से EL के लिए होस्टनाम के DNS रिज़ॉल्यूशन में निहित है, हमारे रिकॉर्ड के लिए नहीं जो इसे उपनाम देता है। हमारा रिकॉर्ड हमेशा ईएलबी के होस्टनाम को ठीक से हल करता है।
सेरा

क्या @ jaimieb की समस्या हल हुई?
SLM

अगर मैं आपको सही तरीके से समझता हूं तो समस्या यह है कि आपके पास CNAME / ANAME रिकॉर्ड्स हैं जो CNAME / ANAME रिकॉर्ड ELB को हल करते हैं, और आपका भाग केवल ठीक हल कर रहा है, कोई प्रदर्शन समस्याएँ नहीं हैं, लेकिन एक बार जब आप ELB के DNS को प्राप्त करते हैं, तो प्रदर्शन समस्याएं दर्ज होती हैं आना?
SLM

@ एसएलएम - संभावित फिक्स # 1 मदद नहीं करता है। मैं इसे पद से हटाने की सिफारिश करूंगा।
उर्सुस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.