2008-11-04 25 views
45

हम अमेज़ॅन ईसी 2 में कुछ दिनों के लिए HAProxy के साथ लड़ रहे हैं; अनुभव अब तक बहुत अच्छा रहा है, लेकिन हम सॉफ़्टवेयर लोड बैलेंसर से अधिक प्रदर्शन निचोड़ने पर फंस गए हैं। हम वास्तव में लिनक्स नेटवर्किंग whizzes नहीं हैं (हम सामान्य रूप से एक .NET दुकान हैं), लेकिन हमने अभी तक अपना खुद का आयोजन किया है, किसी भी अनियमितताओं के लिए कर्नेल संदेशों और tcpdumps का निरीक्षण, उचित ulimits सेट करने का प्रयास किया है। अभी तक, हम लगभग 1,700 अनुरोध/सेक के पठार तक पहुंच गए हैं, जिस बिंदु पर क्लाइंट टाइमआउट बहुत अधिक हैं (हम इस उद्देश्य के लिए httperf का उपयोग और tweaking कर रहे हैं)। एक सहकर्मी और मैं सबसे हालिया स्टैक ओवरफ्लो पॉडकास्ट को सुन रहा था, जिसमें रेडडिट संस्थापक नोट करते हैं कि उनकी पूरी साइट एक हैप्रोक्सी नोड से निकलती है, और यह अब तक एक बाधा नहीं बन गई है। एसीके! या तो किसी भी तरह से कई समवर्ती अनुरोध नहीं देख रहे हैं, हम कुछ गलत कर रहे हैं, या ईसी 2 की साझा प्रकृति Ec2 इंस्टेंस के नेटवर्क स्टैक को सीमित कर रही है (हम एक बड़े उदाहरण प्रकार का उपयोग कर रहे हैं)। इस तथ्य को ध्यान में रखते हुए कि जोएल और रेडडिट संस्थापक दोनों सहमत हैं कि नेटवर्क सीमित कारक होगा, क्या यह संभव है कि हम जिस सीमा को देख रहे हैं?अमेज़ॅन ईसी 2 में लोड संतुलन?

किसी भी विचार की बहुत सराहना की जाती है!

संपादित करें ऐसा लगता है कि वास्तव में लोड बैलेंसर नोड के साथ वास्तविक समस्या नहीं थी! अपराधी वास्तव में इस उदाहरण में, fansperf चलाने वाले नोड्स थे। जैसा कि प्रेजिफर्ड प्रत्येक अनुरोध के लिए एक सॉकेट बनाता है और आँसू देता है, यह कर्नेल में CPU समय की एक अच्छी मात्रा खर्च करता है। चूंकि हमने अनुरोध दर को ऊंचा कर दिया, टीसीपी एफआईएन टीटीएल (डिफ़ॉल्ट रूप से 60 वें स्थान पर) बहुत लंबे समय तक सॉकेट रख रहा था, और ip_local_port_range का डिफ़ॉल्ट इस उपयोग परिदृश्य के लिए बहुत कम था। असल में, कुछ मिनटों के बाद ग्राहक (हस्पॉर्टर) नोड लगातार नए सॉकेट बनाने और नष्ट करने के बाद, अप्रयुक्त बंदरगाहों की संख्या समाप्त हो गई, और बाद में 'अनुरोध' इस चरण में गलती हुई, कम अनुरोध/सेकंड संख्याएं और बड़ी राशि त्रुटियों का

हमने भी nginx पर देखा था, लेकिन हम RighScale के साथ काम कर रहे हैं, और उन्हें HAPROxy के लिए ड्रॉप-इन स्क्रिप्ट मिल गई हैं। ओह, और जब तक यह पूरी तरह से साबित नहीं होता है तब तक हमें घटकों को स्विच करने के लिए [निश्चित रूप से] समय सीमा बहुत सख्त हो गई है। दयालुता से, एडब्ल्यूएस पर होने से हम समानांतर (अगर वांछित) में nginx का उपयोग करके एक और सेटअप का परीक्षण करने की अनुमति देते हैं, और बाद में स्विच को रात भर बनाते हैं।

This page प्रत्येक sysctl चर का वर्णन काफी अच्छी तरह से करता है (ip_local_port_range और tcp_fin_timeout इस मामले में ट्यून किया गया था)।

+3

मार्क, आपको इस सामग्री को कॉन्फ़िगर करने के साथ अपने अनुभव लिखना चाहिए, और उन्हें कहीं पोस्ट करना चाहिए (क्या आपकी कंपनी का ब्लॉग है?)। लगता है जैसे यह बहुत से लोगों के लिए उपयोगी हो सकता है। आपके प्रश्न को ऊपर उठाया। – SquareCog

+0

आपका लिंक टूटा हुआ है। – Ztyx

+0

@Ztyx धन्यवाद! बस इसे अद्यतन किया। मैं एक नए, अधिक अद्यतित स्रोत के लिए चारों ओर खुदाई कर रहा था, ऐसा लगता है कि मूल साइट पर अभी भी एक सुंदर उच्च पेजरैंक है, और सामग्री अभी भी सभ्य है, इसलिए मैं इसे नए यूआरएल को प्रतिबिंबित करने के लिए बस इसे ठीक कर रहा हूं। –

उत्तर

9

वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन nginx और पाउंड दोनों में लोड-बैलेंसर्स के रूप में अच्छे प्रतिष्ठा हैं। अच्छे परिणाम के साथ वर्डप्रेस बस switched to nginx

लेकिन अधिक विशेष रूप से, आपकी समस्या को डीबग करने के लिए। यदि आप 100% सीपीयू उपयोग नहीं देख रहे हैं (I/O प्रतीक्षा सहित), तो आप नेटवर्क बाध्य हैं, हां। ईसी 2 आंतरिक रूप से एक गीगाबिट नेटवर्क का उपयोग करता है, एक्सएल इंस्टेंस का उपयोग करने का प्रयास करें, इसलिए आपके पास अंतर्निहित हार्डवेयर है, और उस गीगाबिट नेटवर्क पोर्ट को साझा करने की आवश्यकता नहीं है।

1

मैं क्लाउड में नहीं, ऑफ-साइट लोड बैलेंसर में स्विच करने और इसके ऊपर आईपीवीएस जैसे कुछ चलाने के लिए देखता हूं। [अमेज़ॅन के क्लाउड से यह क्यों बंद होगा कारण कर्नेल सामान की वजह से है] यदि अमेज़ॅन आपके द्वारा आने वाले पैकेट के स्रोत आईपी को सीमित नहीं करता है तो आप एक यूनिडायरेक्शनल लोड बैलेंसिंग तंत्र के साथ जा सकते हैं। हम ऐसा कुछ करते हैं, और यह हमें 800,000 एक साथ अनुरोध प्राप्त करता है [हालांकि हम विलंबता से निपट नहीं पाते हैं]। मैं यह भी कहूंगा कि "ab2" (अपाचे बैंच) का उपयोग करें, क्योंकि यह थोड़ा और अधिक उपयोगकर्ता के अनुकूल है, और मेरी विनम्र राय में उपयोग करना आसान है।

+0

क्या आप जानते हैं कि आपने अपना पूरा संदेश बोल्ड में लिखा है? पढ़ने के लिए काफी मुश्किल है। –

20

सीधे सवाल का जवाब नहीं दे रहा है, लेकिन ईसी 2 अब ईसी 2 उदाहरण में अपना लोड बैलेंसर चलाने के बजाय Elastic Load Balancing के माध्यम से भार संतुलन का समर्थन करता है।

संपादित करें: अमेज़ॅन के रूट 53 डीएनएस सेवा अब ईएलबी पर "उपनाम" रिकॉर्ड के साथ एक शीर्ष-स्तरीय डोमेन को इंगित करने का एक तरीका प्रदान करता है। चूंकि अमेज़ॅन ईएलबी के वर्तमान आईपी पते को जानता है, इसलिए यह समय-समय पर आईपी को बदलने के लिए स्वतंत्र होने के बावजूद, सीएनएन रिकॉर्ड का उपयोग करने के बजाए उस मौजूदा आईपी के लिए एक रिकॉर्ड वापस कर सकता है।

+0

सिर के लिए धन्यवाद, मैं वास्तव में इस समय इसका मूल्यांकन कर रहा हूं। कूल सामान बहुत अधिक है (हालांकि कमांड लाइन उपकरण वांछित होने के लिए थोड़ा छोड़ देते हैं)! –

+3

दुर्भाग्य से, एडब्लूएस लोड संतुलन (ईएलबी) समाधान में एक बड़ी खामियां हैं। यह CNAMES का उपयोग करने के लिए डिज़ाइन किया गया है जो उपयोगकर्ताओं को लोड बैलेंसर पर सीधे शीर्ष-स्तरीय डोमेन को इंगित करने से रोकता है। दूसरे शब्दों में आप www.mydomain.com को ईएलबी पर इंगित कर सकते हैं लेकिन mydomain.com नहीं। कई लोगों के लिए जो एक शोस्टॉपर है। – kpw

+0

क्या आप सभी कॉल को अपनी वेबसाइट पर रीडायरेक्ट नहीं कर सके ताकि www। में टाइप किया जाएगा? –

3

हां, आप ऑफ-साइट लोड बैलेंसर का उपयोग कर सकते हैं .. और नंगे धातु एलवीएस पर एक बढ़िया विकल्प है, लेकिन आपकी विलंबता भयानक होगी! अफवाह यह है कि अमेज़ॅन सीएनएन मुद्दे को ठीक करने जा रहा है। हालांकि, वे https, इंडिपथ या कस्टम हेल्थ चेक, फीडबैक एजेंट, यूआरएल मिलान, कुकी सम्मिलन (और अच्छे आर्किटेक्चर वाले कुछ लोग भी सही कहेंगे) जोड़ने की संभावना नहीं है। हालांकि, स्केलर, राइटस्केल और अन्य आमतौर पर हैप्रोक्सी का उपयोग कर रहे हैं उन्हें एक गोल रॉबिन DNS प्रविष्टि के पीछे। यहां Loadbalancer.org पर हम अपने स्वयं के ईसी 2 लोड संतुलन को लॉन्च करने वाले हैं: http://blog.loadbalancer.org/ec2-load-balancer-appliance-rocks-and-its-free-for-now-anyway/ हम एसएसएच स्क्रिप्ट का उपयोग करने की योजना बना रहे हैं, उसी तरह अधिकारों के साथ ऑटोस्केलिंग में अंतर करने के लिए, ब्लॉग पर किसी भी टिप्पणी की सराहना की जाती है। धन्यवाद

0

भले ही आपकी समस्या हल हो गई। केईएमपी टेक्नोलॉजीज में एडब्ल्यूएस के लिए अब पूरी तरह से उड़ा हुआ लोड बैलेंसर है। आपको कुछ परेशानी बचा सकती है।

संबंधित मुद्दे