एक इलास्टिक्स खोज नोड को कैसे रोकें / बंद करें?


85

मैं एक नए कॉन्फ़िगरेशन के साथ एक इलास्टिक्स खोज नोड को पुनरारंभ करना चाहता हूं। एक नोड को शान्तिपूर्वक बंद करने का सबसे अच्छा तरीका क्या है?

क्या सर्वर को बंद करने का सबसे अच्छा तरीका प्रक्रिया को मारना है, या क्या कुछ जादू यूआरएल है जो मैं नोड को बंद करने के लिए उपयोग कर सकता हूं?

जवाबों:


126

अद्यतन उत्तर।

_shutdown एपीआई को इलास्टिसर्च 2.x में हटा दिया गया है।

कुछ विकल्प:

  • अपने टर्मिनल (मूल रूप से देव मोड) में, बस "Ctrl-C" टाइप करें

  • यदि आपने इसे एक डेमॉन के रूप में शुरू किया ( -d) पीआईडी ​​ढूंढें और इस प्रक्रिया को मार दें: SIGTERMएलियस्टीसर्च को सफाई से बंद कर देगा ( kill -15 PID)

  • यदि सेवा के रूप में चल रहा है, तो कुछ इस तरह से चलाएं service elasticsearch stop:

पिछला उत्तर अब इसे 1.6 से हटा दिया गया है।

हाँ। व्यवस्थापक क्लस्टर नोड्स शटडाउन प्रलेखन देखें

मूल रूप से:

# Shutdown local node
$ curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

# Shutdown all nodes in the cluster
$ curl -XPOST 'http://localhost:9200/_shutdown'

2
तो, ऐसा प्रतीत होता है कि शटडाउन एपीआई को इलास्टिक्स खोज 1.6 (दिए गए लिंक के अनुसार) के रूप में चित्रित किया गया है। बंद करने के लिए अनुशंसित नया तरीका क्या है?
माइक

2
मुझे लगता है कि यह पदावनत है क्योंकि अब आप इसे सेवा के रूप में स्थापित कर सकते हैं और सेवा रोक इलास्टिक्स खोज को चला सकते हैं। यदि आप इसे केवल परीक्षणों के लिए चलाते हैं, तो CTRL + C दबाएं और आपका काम हो गया।
दादूनट

"ग्रेसफुल" => आप अपने शार्प को फिर से राउट API लोचदार.co
थॉमस डेकाक्स

23

अगर आप नया कॉन्फिगरेशन लगाना चाहते हैं तो आपको इसे बंद करने की जरूरत नहीं है।

$ sudo service elasticsearch restart

लेकिन अगर आप इसे वैसे भी बंद करना चाहते हैं:

$ sudo service elasticsearch stop

या

$ sudo systemctl stop elasticsearch.service

$ sudo systemctl restart elasticsearch.service

डोकर:

docker restart <elasticsearch-container-name or id>


1
सवाल सेवा को रोकने के बारे में है, इसे पुनः आरंभ नहीं करने का।
जीन-फ्रांकोइस फाबरे

1
नया कॉन्फ़िगरेशन लागू करने के लिए सर्वर को बंद करने की आवश्यकता नहीं है। इसका जवाब नहीं है, इसकी समस्या का हल है :)
एजाज़ अहमद खान


7

सेवा को रोकना और डेमॉन को मारना वास्तव में एक नोड को बंद करने के सही तरीके हैं। हालाँकि, यह सीधे ऐसा करने की अनुशंसा नहीं की जाती है यदि आप रखरखाव के लिए नोड लेना चाहते हैं। वास्तव में, यदि आपके पास प्रतिकृतियां नहीं हैं तो आप डेटा खो देंगे।

जब आप सीधे एक नोड को बंद करते हैं, तो एलीस्टेसर्च 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

अन्य उत्तरों ने समझाया है कि किसी प्रक्रिया को कैसे मारना है।


4

Elasticsearch के लिए हेड प्लगिन, Elasticsearch प्रशासन के लिए एक शानदार वेब आधारित फ्रंट एंड प्रदान करता है, जिसमें नोड्स को बंद करना भी शामिल है। यह किसी भी Elasticsearch कमांड को भी चला सकता है।


3

पहले से चल रहे नोड का पता जानने के लिए निम्न कमांड का उपयोग करें।

कर्ल -XGET ' http: // localhost: 9200 / _nodes / प्रक्रिया '

नोड को मारने के तरीके का पता लगाने में मुझे एक घंटे का समय लगा और टर्मिनल विंडो में इस कमांड का उपयोग करने के बाद आखिरकार ऐसा कर सकते थे।


2

यदि आप नहीं पा सकते हैं कि विंडो मशीन पर इलास्टिसर्च क्या प्रक्रिया चल रही है, तो आप कंसोल में चलने की कोशिश कर सकते हैं:

netstat -a -n -o

पोर्ट इलास्टिक्स की खोज चल रही है, डिफ़ॉल्ट है 9200। अंतिम कॉलम उस पोर्ट का उपयोग करने वाली प्रक्रिया के लिए PID है। आप इसे कंसोल में सरल कमांड के साथ बंद कर सकते हैं

taskkill /PID here_goes_PID /F

1

यदि आप उदाहरण के पीआईडी ​​को ढूंढना चाहते हैं और प्रक्रिया को मारना चाहते हैं, तो यह मानते हुए कि नोड 9300 पोर्ट कर रहा है (डिफ़ॉल्ट पोर्ट) आप निम्न कमांड चला सकते हैं:

kill -9  $(netstat -nlpt | grep 9200 | cut -d ' ' -f 58 | cut -d '/' -f 1)

आपको उपर्युक्त कोड में संख्याओं जैसे 58 और 1 के साथ खेलना पड़ सकता है


डिफ़ॉल्ट पोर्ट 9200 है।
slhck

0

डॉकटर के अंदर एलियस्टिक्स का उत्तर:

बस डॉकटर कंटेनर बंद करो। यह कृपापूर्वक रोकने के लिए लगता है क्योंकि यह लॉग करता है:

[INFO ][o.e.n.Node               ] [elastic] stopping ...

0

आपको देखते हुए 3 नोड्स हैं।

अपना क्लस्टर तैयार करें

export ES_HOST=localhost:9200

# Disable shard allocation
curl -X PUT "$ES_HOST/_cluster/settings" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}
'

# Stop non-essential indexing and perform a synced flush
curl -X POST "$ES_HOST/_flush/synced"

प्रत्येक नोड में elasticsearch सेवा बंद करो

# check nodes
export ES_HOST=localhost:9200
curl -X GET "$ES_HOST/_cat/nodes"

# node 1
systemctl stop elasticsearch.service

# node 2
systemctl stop elasticsearch.service

# node 3
systemctl stop elasticsearch.service

फिर से क्लस्टर बनाना

# start
systemctl start elasticsearch.service

# Reenable shard allocation once the node has joined the cluster
curl -X PUT "$ES_HOST/_cluster/settings" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}
'

एलेस्टीचिन 6.5 पर परीक्षण किया गया

स्रोत:

  1. https://www.elastic.co/guide/en/elasticsearch/reference/6.5/stopping-elasticsearch.html
  2. https://www.elastic.co/guide/en/elasticsearch/reference/6.5/rolling-upgrades.html

0

यदि आप लोकलहोस्ट पर एक नोड चला रहे हैं, तो उपयोग करने का प्रयास करें brew service stop elasticsearch

मैं iOS लोकलहोस्ट पर elasticsearch चलाती हूं।

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