2011-08-30 11 views
30

मैं अपने उत्पादन के लिए ईसी 2 पर मोंगो डीबी तैनात करना चाहता हूं। हालांकि, मुझे अपने वास्तुशिल्प प्रश्नों के उत्तर देने में सहायता के लिए ऑनलाइन पर्याप्त जानकारी नहीं मिली।उत्पादन के लिए ईसी 2 पर मोंगो डीबी तैनात करने के लिए अनुशंसित अभ्यास?

  1. सामान्य रूप से, आरंभिक क्लस्टर डब्ल्यू/एन शर्ड्स क्या होना चाहिए?
  2. अतिरिक्त शर्ट जोड़ने के लिए तैनाती योजना क्या होनी चाहिए?
  3. विफलता रणनीति क्या होनी चाहिए (क्या होता है जब एक या अधिक नोड विफल हो जाते हैं)?
  4. आपदा वसूली रणनीति क्या होनी चाहिए? मैं यूएस ईस्ट में कुछ नोड्स स्थापित करने और यूएस वेस्ट में अन्य नोड्स जैसे this powerpoint file कहने के बारे में सोच रहा हूं।

उत्तर की बहुत सराहना की जाती है।

उत्तर

23
  1. शेरिंग सक्षम के साथ प्रारंभ करें लेकिन पर आपको शोर की मात्रा सीमित करें, आपको वास्तव में आवश्यकता है। शेरिंग सक्षम से शुरू करने का अर्थ है जगह पर मोंगोस डेमन्स, प्रासंगिक संग्रहों के लिए अपनी शर्ड कुंजी का चयन करें और जब भी संभव हो तो वैश्विक के विपरीत अपने प्रश्नों को लक्षित करें। उस बिंदु से लोड बढ़ने के रूप में जोड़ें shards पर। संभावित अपवाद तब होता है जब आप लॉन्च पर बहुत अधिक ट्रैफ़िक प्रवाह की अपेक्षा करते हैं, जिसमें आप दोनों शोर जोड़ना चाहते हैं और प्री-स्प्लिट करना चाहते हैं और चंक संतुलन धीमी प्रक्रिया के बाद से अपने हिस्सों को उपयुक्त शर्ड्स में पूर्व-स्थानांतरित करना चाहते हैं।
  2. ऐसी कोई योजना आवश्यक नहीं है। फ्लाई पर शार्ड जोड़े और हटाए जा सकते हैं। ध्यान दें कि उन्हें सेवानिवृत्त करने वाले शव को हटा देना शामिल है। उस बिंदु से सभी हिस्सों में स्थानांतरित होने से पहले एक महत्वपूर्ण (महत्वपूर्ण) समय लेगा ताकि उदाहरण हटाया जा सके।
  3. प्रतिकृति सेट इसके लिए अनुमति देते हैं।यदि आपकी स्थायित्व आवश्यकताएं सुपर क्रिटिकल नहीं हैं तो आप पूर्ण 3 सदस्य प्रतिनिधि सेट करने के बजाय एकाधिक आर्बिटर्स को एक ही उदाहरण पर होस्ट करके कुछ लागत दक्षता प्राप्त कर सकते हैं। यह भी ध्यान रखें कि "गुलाम" ध्वज का उपयोग करते हुए अंतिम स्थिरता संगत क्वेरी के लिए रीसेट्स पढ़ने के प्रदर्शन में सुधार करेगा। साथ ही, आप डिस्क स्तर विफलता (उदा। RAID10) का उपयोग कर कम ओवरहेड के साथ स्थायित्व के समान स्तरों को प्राप्त करने पर विचार कर सकते हैं। स्पष्ट रूप से यह पूर्ण उदाहरण विफलताओं को पकड़ नहीं लेता है।
  4. भौगोलिक डेटासेंटर विभाजन हमेशा एक अच्छा विचार है लेकिन पर ध्यान दें कि प्रतिकृति प्रदर्शन महत्वपूर्ण रूप से भुगतना होगा। इसके लिए रणनीति किसी भी अन्य डेटाबेस से अलग नहीं है।

इसके अलावा नोट:

  • EC2 नेटवर्क परत प्रति सेकंड 100k पैकेट तक सीमित है। छोटे, उच्च थ्रूपुट प्रश्नों के लिए यह जल्दी से एक बाधा बन जाएगा।
  • अपने ईबीएस वॉल्यूम RAID। एक ईबीएस वॉल्यूम पर चलने से अत्यधिक अजीब प्रदर्शन होगा। यह अधिक स्थिर हो जाता है क्योंकि अधिक वॉल्यूम RAID सेटअप का हिस्सा हैं। होना आवश्यक है!
  • उच्च स्मृति उदाहरणों का उपयोग करें। हमने यहां महत्वपूर्ण प्रदर्शन सुधार देखा है क्योंकि आप केवल के बारे में इतना कुछ कर सकते हैं कि आप अपनी अनुक्रमणिका को संतुलित करते हैं और स्मृति में केवल प्रासंगिक डेटा रखते हैं। मोंगोस्टैट में अपने दोष/सेकंड पर नजर रखें। ये पेजफाल्ट हैं और इस प्रकार एक पृष्ठ को स्वैप करने के लिए मोंगो को डिस्क को हिट करने की मात्रा कितनी बार है।
6

विंस्टन, क्रिस्टीना चोडोरो की 'स्केलिंग MongoDB "तुम क्या चाहते है:

http://oreilly.com/catalog/0636920018308

मैं यह समझ के रूप में,

1) आप 3 या उससे अधिक (कुछ विषम संख्या का प्रतिकृति सेट चाहते हैं) प्रत्येक शार्ड के लिए उदाहरण, साथ ही प्रत्येक शार्ड में कुछ समय-देरी वाले उदाहरण बैकअप

2) बस उन्हें क्लस्टर में जोड़ें - मोंगो धीरे-धीरे नए नोड्स पर shards को तब तक ले जायेगा जब तक क्लस्टर को फिर से संतुलित नहीं किया जाता

3) प्रतिकृति सेट आमतौर पर विफलता को अच्छी तरह से संभाल लेंगे; हालांकि, आप अपने एप्लिकेशन फ्रंटएंड को चलाने वाले सर्वरों पर मोंगो के आर्बिटर उदाहरण जोड़ना चाह सकते हैं - ये मध्यस्थ शेष उदाहरणों के लिए प्राइमरी बनने के लिए वोट देंगे, अगर कई नोड्स नीचे चले गए हैं, और यह सुनिश्चित करने में मदद मिलेगी कि कोई भी मोंगो इंस्टेंस आपके फ्रंटएंड सर्वर प्राथमिक भूमिकाएं लेने में सक्षम होंगे

4) प्रत्येक प्रतिकृति सेट में समय-देरी वाले उदाहरण जोड़ना एक अच्छा विचार है, खासकर यदि (जैसा कि आप कहते हैं) वे भौगोलिक रूप से वितरित किए जाते हैं, या यदि वे चालू हैं कई होस्टिंग प्रदाताओं (यानी, यदि आपका मुख्य सर्वर अमेज़ॅन पर है, तो आप बैकस्पेस पर बैकअप डाल सकते हैं)। यदि प्रतिकृति सेट का बहुमत नीचे चला जाता है, तो शेष नोड्स स्वचालित रूप से एक नया प्राथमिक नहीं चुनेंगे, लेकिन आप इस तरह आपदा में मैन्युअल रूप से ऐसा कर सकते हैं।

8

myNoSQL, मेरी सबसे पसंदीदा NoSQL ब्लॉग, हाल ही में Running MongoDB in the Cloud कहा जाता है एक लेख अमेज़न बादल में MongoDB की तैनाती के बारे में कई लेख लिस्टिंग पोस्ट किया। क्यों EBS:

  • EBS वॉल्यूम
  • MongoDB EC2
  • पर अमेज़न बादल
  • MongoDB प्रतिकृति स्थापना में
  • MongoDB साथ अमेज़न EC2 पर MongoDB अमेज़न EC2
  • MongoDB और अमेज़न पर सेट करता है?
  • अमेज़न EBS बनाम एसएसडी: मूल्य, प्रदर्शन, क्यूओएस
  • बहु किरायेदारी और क्लाउड संग्रहण प्रदर्शन
1

1) मैं टुकड़े के एक जोड़े के साथ शुरू जब तक आप आप निश्चित रूप से पता है कि अधिक की आवश्यकता होगी।
2) अधिक शर्ड्स जोड़ने का मुश्किल हिस्सा वह समय है जो विद्रोह के लिए होता है। आपके डेटा और लोड के आधार पर पूरे शार्ड को रीबैलेंस के लिए दिन लग सकते हैं। तो आप कम लोड
3 के दौरान शार्ड जोड़ को शेड्यूल करना चाहते हैं 3) प्रत्येक शार्ड कम से कम 2 + 1 प्रतिकृति सेट होना चाहिए जो उपलब्धता क्षेत्रों में वितरित प्रतिकृतियों के साथ होना चाहिए।
4) यदि आप आपदा रिकवरी में रुचि रखते हैं तो आपको उपलब्धता क्षेत्रों के बजाय क्षेत्रों में अपनी प्रतिकृतियां फैलाना चाहिए। यहां अधिक जानकारी - EC2 best practices। यदि आप भौगोलिक क्षेत्रों में प्रतिकृतियां वितरित करते हैं तो अपने प्रतिकृति सेट की प्राथमिकता को ठीक से कॉन्फ़िगर करना भी याद रखें।

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