2014-07-15 4 views
40

मेरे पास AWS EC2 पर चल रहे 3 लोचदार खोज नोड्स का समूह है। ये नोड्स ओप्सवर्क्स/शेफ का उपयोग कर सेटअप कर रहे हैं। मेरा इरादा इस क्लस्टर को बहुत लचीला और लोचदार बनाने के लिए डिज़ाइन करना है (आवश्यकता होने पर नोड्स अंदर आ सकते हैं)।लोचदार खोज अनावश्यक के साथ लोड बैलेंसर का उपयोग कर रहा है?

एलैस्टिकशर्च के बारे में मैंने जो कुछ भी पढ़ा है, उससे ऐसा लगता है कि कोई भी क्लस्टर के सामने लोड बैलेंसर डालने की सिफारिश नहीं करता है; बजाय, ऐसा लगता है सिफारिश की तरह दो चीजों में से एक करने के लिए है: URL पर

  1. प्वाइंट अपने ग्राहक/एक नोड के आईपी, ES लोड आप के लिए संतुलन करते हैं और आशा करते हैं कि नोड कभी नहीं नीचे चला जाता है।

  2. अपने क्लाइंट ऐप में अपने सभी नोड्स के यूआरएल/आईपी हार्ड-कोड करें और ऐप को फेलओवर तर्क को संभाल लें।

मेरी पृष्ठभूमि वेब खेतों जहां यह, स्वायत्त वेब सर्वर की एक विशाल पूल बनाने उनके सामने एक ईएलबी फेंक और लोड संतुलन यह तय करें कि नोड्स जीवित या मर चुके हैं यह बताने के लिए सिर्फ आम बात है में ज्यादातर है। ईएस इस वास्तुकला का समर्थन क्यों नहीं करता है?

उत्तर

12

आपको लोड बैलेंसर की आवश्यकता नहीं है - ईएस पहले से ही उस कार्यक्षमता प्रदान कर रहा है। आप बस एक और घटक चाहते हैं, जो गलत व्यवहार कर सकता है और जो एक अनावश्यक नेटवर्क हॉप जोड़ देगा।

ईएस आपके डेटा को शेड करेगा (डिफ़ॉल्ट रूप से 5 शर्ड्स में), जो आपके उदाहरणों के बीच समान रूप से वितरित करने का प्रयास करेगा। आपके मामले में 2 उदाहरणों में 2 शर्ड्स और 1 एक होना चाहिए, लेकिन आप बराबर वितरण के लिए shards को 6 में बदलना चाहेंगे।

डिफ़ॉल्ट प्रतिकृति द्वारा "number_of_replicas":1 पर सेट किया गया है, इसलिए प्रत्येक शार्ड की एक प्रतिकृति। आप 6 टुकड़े का उपयोग कर रहे मान लें, यह कुछ इस तरह दिख सकता है (आर एक दोहराया ठीकरा है):

  • node0: 1, 4, R3, R6
  • node1: 2, 6, आर 1, आर 5
  • node2: 3, 5, आर 2, R4

मान लिया जाये कि node1 मर जाता है, क्लस्टर निम्नलिखित सेटअप करने के लिए बदल जाएगा:

  • node0: 1, 4, 6, R3 + नया प्रतिकृतियां R5, आर 2
  • node2: 3, 5, 2, R4 + नया प्रतिकृतियां R1, R6

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

तो आपके लिए संतुलन लोड करने के लिए कुछ भी नहीं है, आप केवल ओवरहेड जोड़ देंगे। ऑटो क्लस्टरिंग शायद ईएस की सबसे बड़ी ताकत है।

+3

इस उत्तर के लिए धन्यवाद। मुझे लगता है कि मैं फेलओवर संतुलन के बारे में अधिक चिंतित हूं। मैं समझता हूं कि ईएस मेरे लिए भार संतुलन करेगा, लेकिन क्या होगा यदि मैं जिस नोड से कनेक्ट हो रहा हूं या सेवा से बाहर हो गया है? ईएलबी के मामले में (कम से कम जहां तक ​​वेब सर्वर जाते हैं) यह सभी इन-सर्विस नोड्स में अनुरोधों को संतुलित करेगा। क्या ईएस क्लस्टर के लिए एक समान पैटर्न है? – user2719100

+0

मैंने जोड़ा है कि ईएस – xeraa

+1

@xeraa में प्रतिकृति कैसे काम करती है तो "नोड" क्लाइंट स्वचालित रूप से प्रसारण या कुछ करके elasticsearhc नोड्स/क्लस्टर उपलब्ध कराता है? –

10

आप 'विफलता' के लिए डिजाइन करना चाहते हैं, और एडब्ल्यूएस में, मैं यह सलाह देता हूं कि आप इसे कैसे करें।

1) अपने क्लस्टर में नोड्स को सीमित करें जिसे मास्टर चुना जा सकता है। बाकी के लिए, node.client सेट करें: सत्य।फेलओवर के लिए आप कितने उपलब्ध हैं, इस पर कितने मास्टर वैकल्पिक नोड्स हैं, इस बारे में अपनी पसंद का आधार बनाएं।

2) एक ईएलबी बनाएं जिसमें केवल मास्टर वैकल्पिक नोड शामिल हों।

3) रूट 53 में, अपने क्लस्टर के लिए एक सीएनएन बनाएं, मूल्य को आपके ईएलबी के DNS नाम पर सेट करें।

44

मेरा मानना ​​है कि भार एक Elasticsearch क्लस्टर संतुलन एक अच्छा विचार है

वास्तुकार अपने क्लस्टर आप Elasticsearch के दो मुख्य कार्य पर पृष्ठभूमि की आवश्यकता होगी करने के लिए

(एक दोष सहिष्णु प्रणाली, एकल नोड विफलता के लिए लचीला डिजाइन करने।): 1. दस्तावेज़ लिखना और अद्यतन करना और 2. प्रश्न पूछना।

elasticsearch में लेखन/अनुक्रमण दस्तावेज:

  1. एक नया दस्तावेज़ Elasticsearch अनुक्रमित करने के लिए में आता है, Elasticsearch "प्राथमिक ठीकरा" दस्तावेज़ "शार्ड रूटिंग एल्गोरिथ्म" का उपयोग करने के लिए आवंटित किया जाना चाहिए निर्धारित करता है
  2. शोर "नक्शा" दस्तावेज़ में फ़ील्ड से जुड़े ल्यूसीन प्रक्रिया;
  3. ल्यूसीन प्रक्रिया दस्तावेज़ को शर्ड के ल्यूसीन "उलटा इंडेक्स"
  4. में कोई भी "प्रतिकृति शार्ड" दस्तावेज प्राप्त करती है;

    1. डिफ़ॉल्ट रूप से, जब एक प्रश्न Elasticsearch को भेजा जाता है: प्रतिकृति ठीकरा "मानचित्र" दस्तावेज़ और "उल्टे सूचकांक" Elasticsearch में

    का पता कर दस्तावेजों प्रतिकृति ठीकरा के Lucene करने के लिए दस्तावेज़ कहते हैं इस "क्वेरी नोड" या कि क्वेरी

  5. नोड सूचकांक में हर ठीकरा करने के लिए क्वेरी का प्रसारण करता है (प्राथमिक & प्रतिकृति)
  6. प्रत्येक ठीकरा के लिए "प्रवेश द्वार क्वेरी नोड" हो जाता है -, क्वेरी एक नोड हिट शार्ड के स्थानीय लुसीन उलटा इंडेक्स पर क्वेरी करता है। , "प्रवेश द्वार क्वेरी नोड"
  7. "प्रवेश द्वार क्वेरी नोड" फिर दूसरे के टुकड़े से लौटे संयुक्त परिणामों पर किसी मर्ज-तरह प्रदर्शन करती है 20 परिणामों
  8. मर्ज एक बार
  9. -
  10. प्रत्येक ठीकरा शीर्ष 10 रिटर्न -sort समाप्त हो गया है, "प्रवेश द्वार क्वेरी नोड" और रिटर्न ग्राहक
    • मर्ज-तरह सीपीयू और मेमोरी संसाधन भारी है के लिए परिणाम

आर्किटेक्ट्स लोड/इंडेक्सिंग/अपडेट्स के लिए लोड बैलेंसर

लोचदार खोज स्वयं नोड्स पर शर्ड्स के स्थान का प्रबंधन करता है। "मास्टर नोड" "शार्ड रूटिंग टेबल" रखता है और अपडेट करता है। "मास्टर नोड" क्लस्टर रूटिंग टेबल की एक प्रति क्लस्टर में अन्य नोड्स को प्रदान करता है।

आम तौर पर, आप नहीं चाहते हैं कि आपका मास्टर नोड क्लस्टर के लिए स्वास्थ्य जांच से अधिक कर रहा है और रूटिंग टेबल अपडेट कर रहा है, और शर्ड्स प्रबंधित कर रहा है।

"डेटा नोड्स" में लिखने के लिए लोड बैलेंसर को इंगित करना शायद सबसे अच्छा है (डेटा नोड्स नोड्स हैं जिनमें डेटा = शर्ड्स होते हैं) और सही नोड्स को लिखने के लिए डेटा नोड्स अपने शर्ड रूटिंग टेबल का उपयोग करते हैं।

प्रश्नों

Elasticsearch के लिए architecting एक विशेष नोड प्रकार बनाया गया है: "ग्राहक नोड" है, जो "कोई डेटा" शामिल हैं, और एक "मास्टर नोड" नहीं बन सकता है। क्लाइंट नोड का फ़ंक्शन क्वेरी के अंत में अंतिम संसाधन भारी मर्ज-सॉर्ट करने के लिए है।

एडब्ल्यूएस के लिए आप शायद एक "ग्राहक नोड"

सर्वश्रेष्ठ अभ्यास के रूप में एक सी 3 या सी 4 उदाहरण प्रकार का उपयोग करेंगे ग्राहक नोड्स प्रश्नों के लिए लोड संतुलन बात करने के लिए है।

चीयर्स!

संदर्भ:

  1. Elasticsearch Node Types
  2. Elasticsearch: Shard Routing Algorithm
  3. Elasticsearch: Replica Shards
  4. Elasticsearch: Cluster State i.e. the Shard Routing Table
  5. ElasticHQ - Introduction to Elasticsearch Video
  6. Elasticsearch: Shard numbers and Cluster Scaling
+0

विस्तृत लिखने के लिए धन्यवाद! – Matt

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