कैसेंड्रा: रखरखाव


9

मैं कैसंड्रा के साथ अनुभवहीन हूं, लेकिन मुझे एसक्यूएल-आधारित रिलेशनल डेटाबेस के साथ कुछ अनुभव है।

मैं कैसंड्रा को एक बार तैनात रखने के तरीके के बारे में सर्वोत्तम प्रथाओं की जानकारी प्राप्त करने में असमर्थ रहा हूं। क्या डेटाबेस को रिक्त करना आवश्यक है? मुझे यह सोचना चाहिए कि भार पढ़ने / लिखने से भंडारण में विखंडन होता है।

या अधिक आम तौर पर: कैसंड्रा उत्पादन तैनाती को बनाए रखने के लिए सबसे अच्छे अभ्यास क्या हैं? प्रणाली के स्वास्थ्य को बनाए रखने के लिए नियमित अंतराल पर क्या करना है? ऑपरेशन मैनुअल वास्तव में इस पहलू पर चर्चा नहीं करता है।

धन्यवाद।


ठीक है, मैं अब समझता हूं कि संघनन एक बड़ी बात है और स्वचालित रूप से चलता है; हालांकि, क्या किसी अन्य चीज के बारे में चिंता करने की ज़रूरत है जब लंबे समय तक लिनक्स पर एक क्लस्टर चल रहा हो?
मयूर पटेल

जवाबों:


14

सामान्य तौर पर, एक अच्छी तरह से डिज़ाइन किया गया क्लस्टर बिना स्पर्श किए YEARS के लिए रह सकता है। मेरे पास क्लस्टर्स हैं जो सालों तक हाथों-हाथ चले। हालांकि, यहां कुछ दिशानिर्देश दिए गए हैं:

निगरानी बेहद महत्वपूर्ण है:

1) मॉनिटर लेटेंसी। अक्षांशों का ट्रैक रखने के लिए opscenter या अपने पसंदीदा मैट्रिक्स टूल का उपयोग करें। ऊपर जा रही समस्याएं, आने वाली समस्याओं का संकेत हो सकती हैं, जिनमें जीसी पॉज़ (कार्य वर्कलोड की तुलना में रीड वर्कलोड में अधिक सामान्य), अस्थिर समस्याएँ, और पसंद हैं।

2) मॉनिटर sstable मायने रखता है। यदि आप संघनन से आगे निकल जाते हैं तो SSTable काउंट बढ़ जाएगा (प्रत्येक सेस्टेबल को ठीक एक बार लिखा जाता है - पुराने sstables को कंप्रेशन के माध्यम से पुराने sstables के संयोजन से हटाया जाता है)।

3) मॉनिटर नोड स्थिति में परिवर्तन (ऊपर / नीचे, आदि)। यदि आप नोड्स को फड़फड़ाते हुए देखते हैं, तो जांच करें, क्योंकि यह सामान्य नहीं है।

4) अपने डिस्क उपयोग का ट्रैक रखें - परंपरागत रूप से, आपको 50% से कम रहने की आवश्यकता है (खासकर यदि आप एसटीसीएस संघनन का उपयोग करते हैं)।

कुछ बुनियादी चीजें हैं जिन्हें आपको नियमित रूप से नहीं करना चाहिए:

1) स्पष्ट रूप से न चलाएं nodetool compact। आप उल्लेख करते हैं कि आपने इसे किया है, यह घातक नहीं है, लेकिन यह बहुत बड़े sstables बनाता है, जो तब आगे बढ़ने वाले संघनन में भाग लेने की संभावना कम होती है। आपको इसे चालू रखने की आवश्यकता नहीं है, लेकिन कभी-कभी यह हटाए गए / अधिलेखित डेटा से छुटकारा पाने में मदद कर सकता है।

2) nodetool repairआम तौर पर हर gc_grace_seconds(10 दिन डिफ़ॉल्ट रूप से) की सिफारिश की जाती है । ऐसे कार्यभार हैं जहां यह कम महत्वपूर्ण है - आपके द्वारा एनईईडी मरम्मत का सबसे बड़ा कारण यह सुनिश्चित करना है कि समाप्ति tombstonesसे पहले हटाने वाले मार्कर ( ) प्रेषित किए जाते हैं (वे रहते हैं gc_grace_seconds, यदि डिलीट होने पर नोड डाउन हो जाता है, तो डेटा वापस आ सकता है। मरम्मत के बिना!)। यदि आप डिलीट जारी नहीं करते हैं, और आप पर्याप्त संगतता स्तर के साथ क्वेरी करते हैं (उदाहरण के लिए, QUORUM पर पढ़ता और लिखता है), तो आप वास्तव में मरम्मत के बिना जीवन जी सकते हैं।

3) यदि आप मरम्मत करने जा रहे हैं, तो वृद्धिशील मरम्मत का उपयोग करने पर विचार करें, और एक समय में छोटी रेंज की मरम्मत करें।

4) संघनन रणनीतियां बहुत मायने रखती हैं। एसटीसीएस लिखने के लिए महान है, एलसीएस रीड के लिए बहुत अच्छा है। DTCS के पास कुछ विचित्रताएँ हैं।

5) डेटा मॉडल मायने रखता है - जैसे कि आरडीबीएमएस / एसक्यूएल वातावरण मुश्किल में पड़ जाते हैं, क्योंकि बड़ी-बड़ी क्वेरीज़ बड़ी-बड़ी पंक्तियों में टकरा जाती हैं, कैसेंड्रा बहुत बड़ी पंक्तियों / विभाजनों के साथ समस्याग्रस्त हो सकती है।

6) स्नैपशॉट सस्ते हैं। बहुत सस्ता। लगभग तुरंत, केवल हार्ड लिंक, वे लगभग कोई डिस्क स्थान तुरंत खर्च करते हैं। संस्करण, विशेष रूप से प्रमुख संस्करणों को अपग्रेड करने से पहले स्नैपशॉट का उपयोग करें।

7) डिलीट से सावधान रहें। जैसा कि # 2 में संकेत दिया गया है, डिलीट डिस्क पर अधिक डेटा बनाता है, और इसे AT LEAST के लिए मुक्त नहीं करता है gc_grace_seconds

जब सब कुछ नाकामयाब हो:

मैंने उन लेखों को देखा है जो सुझाव देते हैं कि कैसेंड्रा को ठेस पहुंचाने के लिए किसी भी आकार के क्लस्टर का प्रबंधन करने के लिए एक समर्पित सिर की आवश्यकता होती है - मुझे नहीं पता कि यह आवश्यक रूप से सच है, लेकिन अगर आप चिंतित हैं, तो आप किसी तीसरे पक्ष के सलाहकार (TheLastPickle, Pythian) को नियुक्त करना चाहते हैं ) या आपको मानसिक शांति देने के लिए एक समर्थन अनुबंध (डेटास्टैक्स) है।


1
जेफ यह देर हो चुकी है, कुछ नींद की कली प्राप्त करें!
एरोन

1
यार, मैंने इस पर तारीख नहीं देखी। वास्तव में देर हो चुकी थी, है ना?
जेफ जिरसा

2

कैसेंड्रा मरम्मत प्रलेखन के अनुसार , nodetool repairनिम्नलिखित स्थितियों में चलाया जाना चाहिए:

  • सर्वोत्तम अभ्यास के रूप में, आपको साप्ताहिक रूप से मरम्मत का समय निर्धारित करना चाहिए। नोट: यदि विलोपन कभी नहीं होता है, तो आपको अभी भी नियमित मरम्मत का समय निर्धारित करना चाहिए। ध्यान रखें कि एक कॉलम को अशक्त करने के लिए एक हटाना है।
  • नोड रिकवरी के दौरान। उदाहरण के लिए, जब विफलता के बाद क्लस्टर में एक नोड वापस लाया जाता है।
  • डेटा वाले नोड्स पर जो अक्सर पढ़ा नहीं जाता है।
  • एक नोड पर डेटा अद्यतन करने के लिए जो नीचे रहा है।

मुझे यह सोचना चाहिए कि भार पढ़ने / लिखने से भंडारण में विखंडन होता है।

कैसेंड्रा में डेटा उस तरह से "टुकड़ा" नहीं करता है जो आप सोच रहे हैं। हालाँकि, हटाता है tombstones की स्थापना को ट्रिगर, और सामान्य कॉम्पैक्ट प्रक्रिया tombstones समाप्त करता है।

मैं अब समझता हूं कि संघनन एक बड़ी बात है और स्वचालित रूप से चलता है

सही बात। मुझे एक DataStax प्रतिनिधि द्वारा बताया गया था कि एक बार जब आप compactमैन्युअल रूप से चलाते हैं , तो आपको इसे हमेशा मैन्युअल रूप से चलाना होगा। कारण यह है कि संघनन एक कुंजी क्षेत्र में सभी मौजूदा SSTABLES को "SSTAB फ़ाइल में" कॉम्पैक्ट करके काम करता है। उस SSTABLE फ़ाइल में आपके कुछ स्तंभ परिवार हो सकते हैं, जो छोटे हैं, और संघनन सीमा से आगे बढ़ने में इतना लंबा समय लेगा, कि स्वत: संघनन की फिर से चलने की संभावना बहुत कम है।

अनिवार्य रूप से nodetool repair, नियमित रूप से शेड्यूल न करें, कभी भी रन न करें nodetool compactऔर बैकअप रणनीति (स्नैपशॉट, वृद्धिशील बैकअप, या दोनों) लागू करें।


इसलिए, अगर मैंने भाग लिया है, तो क्या nodetool compactमैं हमेशा के लिए बर्बाद हो जाता हूं, जब तक कि मैं अपने क्लस्टर को नहीं मारता? या क्या फिर से काम शुरू करने के लिए स्वचालित संघनन प्राप्त करने का एक तरीका है?
2rs2ts

1
@ 2rs2ts ठीक है, "हमेशा के लिए" नहीं। एक बार जब आप एक मैनुअल संघनन चला लेते हैं ... "हाँ," आपको इसे समय-समय पर चलाते रहना होगा (हम अपनी साप्ताहिक मरम्मत के बाद हमेशा इसे सही करेंगे)। इसे एक DataStax प्रतिनिधि के साथ स्पष्ट करें, लेकिन मुझे लगता है कि यदि आपके पास एक ऐसी घटना है जो SSTABLE फ़ाइलों को फिर से लिखती है (जैसे upgradesstablesकि आप चलाते समय अपग्रेड करना ) जो आपको "मैनुअल कंपैक्शन नरक" से बचाने के लिए पर्याप्त चीजों को रीसेट कर सकती है।
हारून

धन्यवाद, समझ में आता है कि मुझे लगता है। हालांकि दुर्भाग्यपूर्ण है।
2rs2ts

1
ऑटो संघनन अंततः sstables बनाएगा जो कि उत्पादन के साथ स्वाभाविक रूप से कॉम्पैक्ट करने के लिए पर्याप्त बड़े हैं nodetool compact। इसके अलावा, आप अब उस अप्राकृतिक रूप से बड़े अस्थिर से छुटकारा पाने के लिए sstablesplit का उपयोग कर सकते हैं, ताकि आप "पूर्ववत" कर सकें nodetool compact
जेफ जिरसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.