सेवा को रोकना और डेमॉन को मारना वास्तव में एक नोड को बंद करने के सही तरीके हैं। हालाँकि, यह सीधे ऐसा करने की अनुशंसा नहीं की जाती है यदि आप रखरखाव के लिए नोड लेना चाहते हैं। वास्तव में, यदि आपके पास प्रतिकृतियां नहीं हैं तो आप डेटा खो देंगे।
जब आप सीधे एक नोड को बंद करते हैं, तो एलीस्टेसर्च 1 एम (डिफ़ॉल्ट समय) के लिए ऑनलाइन वापस आने के लिए इंतजार करेगा। यदि ऐसा नहीं होता है, तो यह बहुत सारे IO को बर्बाद करने वाले नोड्स से दूसरे नोड्स को आवंटित करना शुरू कर देगा।
जारी करके अस्थायी आवंटन को अक्षम करने के लिए एक विशिष्ट तरीका होगा:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
अब, जब आप एक नोड लेते हैं, तो ES उस नोड से अन्य नोड्स में शार्द आवंटित करने का प्रयास नहीं करेगा और आप रखरखाव गतिविधि कर सकते हैं और फिर नोड के ऊपर होने पर, आप फिर से शार्ड आवंटन सक्षम कर सकते हैं:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
स्रोत: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/restart-upgrad.html
यदि आपके पास अपने सभी अनुक्रमितों के लिए प्रतिकृतियां नहीं हैं, तो इस प्रकार की गतिविधि करने से कुछ अनुक्रमणिकाओं पर डाउनटाइम होगा। इस मामले में एक क्लीनर तरीका नोड को नीचे ले जाने से पहले सभी नोड्स को अन्य नोड्स में स्थानांतरित करना होगा:
PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}
यह सभी शार्क 10.0.0.1
को अन्य नोड्स से ले जाएगा (डेटा के आधार पर समय लगेगा)। एक बार जब सब कुछ हो जाता है, तो आप नोड को मार सकते हैं, रखरखाव कर सकते हैं और इसे ऑनलाइन वापस प्राप्त कर सकते हैं। यह एक धीमा ऑपरेशन है और यदि आपको प्रतिकृतियां हैं तो इसकी आवश्यकता नहीं है।
(वाइल्डकार्ड के साथ _ip, _id, _name के बजाय बस ठीक काम करेगा।)
अधिक जानकारी: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/allocation-filterter.html
अन्य उत्तरों ने समझाया है कि किसी प्रक्रिया को कैसे मारना है।