UDP सर्वर को संतुलित करना


10

मेरे पास udp सर्वर है, यह मेरी व्यावसायिक प्रक्रिया का एक केंद्रीय हिस्सा है। उत्पादन वातावरण में मैं जो भार उठा रहा हूं, उसे संभालने के लिए मुझे संभवतः सर्वर के 2 या 3 उदाहरणों की आवश्यकता होगी। सर्वर लगभग पूरी तरह से स्टेटलेस है, यह ज्यादातर डेटा एकत्र करता है, और इसके ऊपर की परत को पता है कि बासी डेटा की न्यूनतम मात्रा को कैसे संभालना है जो कई सर्वर इंस्टेंस से उत्पन्न हो सकता है।

मेरा सवाल है, मैं सर्वर के बीच लोड संतुलन कैसे लागू कर सकता हूं? मैं सर्वरों के बीच समान रूप से अनुरोधों को वितरित करना पसंद करूंगा। मैं कुछ निष्ठा भी रखना चाहूंगा, मेरा मतलब है कि अगर क्लाइंट एक्स को सर्वर वाई पर रूट किया गया था, तो मैं चाहता हूं कि सभी एक्स के बाद के अनुरोधों को सर्वर वाई पर जाएं, जब तक कि यह समझदार नहीं है और वाई को अधिभार नहीं देता है।

वैसे यह एक .NET सिस्टम है ... आप क्या सुझाएंगे?


सर्वर के भीतर स्थिति आंतरिक है, किसी प्रकार का लेनदेन नहीं है। राज्य कुछ डेटा है जो सर्वर उन्हें प्राप्त होने वाले डेटा से एकत्र करता है, और एक साधारण WCF वेब सेवा के साथ क्वारिएबल है। आवेदन यूडीपी पर आधारित है, और हालांकि मैं निर्णय से सहमत नहीं हूं, इसके "मेरे ग्रेड से ऊपर"

मैं वर्तमान में एमएस के एनएलबी की कोशिश कर रहा हूं, यह ठीक काम करता है, यह निष्ठा की बात बॉक्स से बाहर करता है, लेकिन यह पूरे नेटवर्क पर शोर उत्पन्न करता है ...

इसके अलावा कोई DNS ... ओह और यह पूरी तरह से पोशाक प्रोटोकॉल है।


भविष्य के संदर्भ के लिए बस एक नोट - मॉडरेटर्स और उच्च-प्रतिष्ठा वाले उपयोगकर्ताओं द्वारा कई मामलों में स्टैकएक्सचेंज साइटों के बीच प्रश्नों को स्थानांतरित किया जा सकता है। यह किसी भी उत्तर को सुरक्षित रखने में मदद करता है जो पहले से ही रखा गया था, इसलिए यह आमतौर पर अपने दम पर रीपोस्ट करने से बेहतर है (जब तक कि कोई उत्तर न हो, जिस स्थिति में पुराने प्रश्न को हटा दें ताकि कोई भी गलती से इसका उत्तर न दे)। यदि आप स्थानांतरित करने के सुझाव से सहमत हैं, तो उस प्रभाव के लिए एक टिप्पणी जोड़ें और (यदि संभव हो तो) अपना ध्यान मध्यस्थता के लिए पोस्ट करें, और पोस्ट को आपके लिए स्थानांतरित करना चाहिए।
bdonlan

जवाबों:


4

मेरे पास एक udp सर्वर है, [...] सर्वर लगभग पूरी तरह से स्टेटलेस है [..] कुछ निष्ठा है, मेरा मतलब है कि अगर क्लाइंट X को सर्वर y में रूट किया गया था, तो मैं चाहता हूं कि सभी X के बाद के अनुरोधों को सर्वर Y पर जाएं, जैसा कि जब तक यह समझदार है और वाई को अधिभार नहीं देता है।

तो, आप एक अज्ञात एप्लिकेशन प्रोटोकॉल का उपयोग कर रहे हैं जो कुछ एप्लिकेशन स्थिति रखता है, और UDP के शीर्ष पर चलता है? आप एक कठिन दिशा में जा रहे हैं। यूडीपी एक विश्वसनीय डेटा परिवहन नहीं है, इसका पूरा बिंदु यह है - विश्वसनीय डेटा परिवहन के लिए अपने लोकप्रिय मित्र टीसीपी को देखें। एक ही तरीका है जिससे आप अपनी 'निष्ठा' प्राप्त कर सकते हैं वह है लोड बैलेंसिंग प्रॉक्सी जो आपके एप्लिकेशन लेयर प्रोटोकॉल को समझता है, और जो जानता है कि आपकी वर्तमान एप्लिकेशन स्थिति क्या है और तदनुसार कार्य कर सकता है।

मुझे 3 दृष्टिकोण दिखाई देते हैं जो आप प्रदान करने के करीब आते हैं:

  • स्रोत (अंतिम उपयोगकर्ता) आईपी पते के आधार पर 3 आईपी पते पर आने वाले कनेक्शनों को सांख्यिकीय रूप से फैलाया जाता है । इस तरह किसी दिए गए उपयोगकर्ता को हमेशा एक ही सर्वर पर निर्देशित किया जाएगा। अधिकांश पेशेवर फायरवॉल आपके लिए यह कर सकते हैं। आपको 3 सर्वरों को अत्यधिक उपलब्ध कराना पड़ सकता है, क्योंकि अधिकांश फायरवॉल आपके लिए स्वास्थ्य जांच नहीं करेंगे।

  • DNS का उपयोग करें, और पहले से ही मैट सिमन्स द्वारा सुझाए गए DNS राउंड रॉबिन का उपयोग करें।

  • विंडोज के अंतर्निहित नेटवर्क लोड बैलेंसिंग (एनएलबी) का उपयोग करें । ईमानदारी से, मुझे नहीं पता कि फेलओवर परिदृश्य एनएलबी और आपकी अर्ध-स्टेटफुल यूडीपी आधारित सेवा के साथ कैसे खेलेंगे - आपको यह जांचना होगा कि आपका आवेदन राज्य कैसे संभालता है। प्लस साइड पर, एनएलबी को स्थापित करना बहुत आसान है, विंडोज लाइसेंस, परिपक्व और अच्छी तरह से प्रदर्शन के साथ नि: शुल्क।


मैंने अपने प्रश्न का संपादन किया
हेलफ्रोस्ट

6

लिनक्स वर्चुअल सर्वर एक उच्च स्केलेबल और अत्यधिक उपलब्ध सर्वर है जो वास्तविक सर्वर के क्लस्टर पर बनाया गया है। LVS ने UDP प्रोटोकॉल और स्रोत हैश एल्गोरिथ्म का समर्थन किया (इसका उपयोग तब किया जाता है जब आप चाहते हैं कि एक ग्राहक हमेशा एक ही रिएक्टर पर दिखाई दे)।

मैं DNS (rr), SIP (sh) को संतुलित करने के लिए LVM का उपयोग करता हूं।


4

दिलचस्प। ज्यादातर प्रॉक्सी सॉफ्टवेयर जो मैंने देखा है, वह टीसीपी आधारित है।

यूडीपी-विशिष्ट लोड संतुलन के अधिकांश जो मैंने अपने अल्प अनुभव में देखा है, वह डीएनएस-आधारित (यानी: समय सर्वर, डीएनएस सर्वर, आदि) रहा है। क्या एकाधिक ए रिकॉर्ड प्रदान करने का कोई तरीका है? यदि यह काम करेगा, तो सामान्य DNS राउंड रॉबिन अनुरोधों का उचित वितरण (शायद पर्याप्त रूप से, वैसे भी उचित) सुनिश्चित करेगा और ग्राहक कैशिंग सुनिश्चित करेगा कि निष्ठा बरकरार रखी गई थी (यह मानते हुए कि आप ग्राहक अंत पर कैश-आधारित प्लेटफ़ॉर्म का उपयोग कर रहे हैं)।


कोई DNS नहीं है।
हेलफ्रोस्ट

2

इसे निष्पादित करने के लिए आप किसी भी तरह के लोड बैलेंसर का उपयोग कर सकते हैं, हार्डवेयर या सॉफ्टवेयर, आप अपनी जरूरत के आधार पर अलग-अलग लोड बैलेंसरों से चुन सकते हैं।

लेवल 3 लोड बैलेंसर: आने वाले आईपी और उपलब्ध बैकएंड आईपी को देखकर ही बैलेंस लोड होगा, इस तरह का लोड बैलेंसर हमेशा एक ही बैकएंड पर एक ही आने वाले आईपी एड्रेस को भेजने से चिपचिपाहट सुनिश्चित करेगा, हालांकि इस तरह की रणनीति एक को ओवरलोड कर सकती है यदि बहुत सारे ग्राहक एक ही आईपी से वापस आते हैं (यह एक प्रॉक्सी या एक कॉर्पोरेट गेटवे हो)

लेवल 7 लोड बैलेंसर: एक स्तर 7 लोड बैलेंसर न केवल एक स्तर 3 बैलेंसर के रूप में संतुलन रखेगा, बल्कि यह पैकेज की सामग्री को भी देखेगा, जो आपको अपनी संतुलन नीतियों के लिए बहुत अधिक लचीलापन देगा।

यह देखते हुए कि आप यूडीपी का उपयोग कर रहे हैं, दोनों बैलेंसरों को एक अच्छा प्रदर्शन देना चाहिए, यूडीपी में भी गहरा पैकेट निरीक्षण टीसीपी की तुलना में थोड़ा अधिक सीमित है (सिर्फ प्रोटोकॉल कारणों से)।

अपने बजट के आधार पर आप एक सॉफ्टवेयर लोड बैलेंसर (उदाहरण के लिए लिनक्स + आईपीवीएस) का उपयोग करके शुरू कर सकते हैं और फिर सिस्को या नेटप्प द्वारा दिए गए हार्डवेयर लोड बैलेन्कर्स पर जा सकते हैं।


-1 L7 भाग के लिए। लेयर / लेवल 7 लोड बैलेंसर एप्लिकेशन लेयर पर काम करता है - लेकिन चूंकि ओपी यूडीपी का उपयोग कर रहा है, वह सादे पुराने एचटीटीपी का उपयोग नहीं कर रहा है, और उसने यह नहीं बताया है कि वह किस एप्लिकेशन का उपयोग कर रहा है। हम यह नहीं जान सकते कि प्रोटोकॉल ओपी का उपयोग करने के लिए एक एल 7 लोड बैलेंसर मौजूद है।
जेस्पर मॉर्टेंसन

1
मैं लोड बेलेंसरों में उनके विकल्पों पर टिप्पणी कर रहा था, और हमें नहीं पता कि वह यूडीपी पर क्या उपयोग कर रहे हैं, मुझे लगता है कि आप इसे बहुत तंग कर रहे हैं;)
lynxman

NLB / linux और Cisco / netapp: KEMP loadbalancers के बीच कुछ है। आप इसका एक आभासी संस्करण प्राप्त कर सकते हैं, जिसमें पैसे की लागत नहीं है, हम इसका उपयोग कर रहे हैं और हम बहुत खुश हैं।
पोस्का

2

खुला स्रोत NGINX और एप्लिकेशन डिलीवरी प्लेटफ़ॉर्म, NGINX Plus अब UDP लोड बैलेंसिंग का समर्थन कर रहा है। नई क्षमता हमारे मौजूदा टीसीपी और एचटीटीपी क्षमताओं पर निर्माण करती है, जिससे एनजीआईएनएक्स एक शक्तिशाली, आसान उपयोग, और इंटरनेट अनुप्रयोगों और उपकरणों की एक विस्तृत श्रृंखला के लिए निरंतर दृश्यपटल बन जाता है।

रिलीज नगीनेक्स-1.9.13 में उपलब्ध है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.