একটি স্থিতিস্থাপক নোড কীভাবে বন্ধ / বন্ধ করবেন?


87

আমি একটি নতুন কনফিগারেশন সহ একটি স্থিতিস্থাপক নোড পুনরায় আরম্ভ করতে চাই। দয়া করে কোনও নোড বন্ধ করার সর্বোত্তম উপায় কী?

প্রক্রিয়াটি হ'ল সার্ভারটি বন্ধ করার সর্বোত্তম উপায়, বা নোডটি বন্ধ করতে আমি ব্যবহার করতে পারি এমন কোনও ম্যাজিক URL আছে?

উত্তর:


127

আপডেট উত্তর।

_shutdown স্থিতিস্থাপক অনুসন্ধান ২.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'

4
সুতরাং, এটি প্রদর্শিত হয় যে শাটডাউন এপিআইকে স্থিতিস্থাপক 1.6 হিসাবে দেওয়া হয়েছে (সরবরাহিত লিঙ্ক অনুসারে)। শাটডাউন করার নতুন প্রস্তাবিত উপায় কী?
মাইক 21

4
আমি মনে করি এটি অবহ্রাসিত হয়েছে কারণ আপনি এখন এটি পরিষেবা হিসাবে ইনস্টল করতে পারেন এবং পরিষেবা বন্ধ করুন স্থিতিস্থাপক অনুসন্ধান। আপনি যদি এটি কেবল পরীক্ষার জন্য চালনা করেন তবে CTRL + C চাপুন এবং আপনার কাজ শেষ।
দাদুনেট

"গ্রেসফুল" => আপনি পূর্বে রিভার্ট
টমাস ডেকাউক্স

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>


4
প্রশ্নটি পরিষেবাটি বন্ধ করার বিষয়ে, এটি পুনরায় আরম্ভ করার নয়।
জিন-

4
নতুন কনফিগারেশন প্রয়োগ করতে সার্ভারটি বন্ধ করতে হবে না। এটি কোনও উত্তর নয়, এটি তার সমস্যার সমাধান :)
ইজাজ আহমেদ খান


7

পরিষেবাটি বন্ধ করা এবং ডেমনকে হত্যা করা কোনও নোড বন্ধ করার পক্ষে সঠিক উপায়। তবে আপনি যদি রক্ষণাবেক্ষণের জন্য কোনও নোড নিতে চান তবে সরাসরি এটি করার পরামর্শ দেওয়া হয় না। আসলে, যদি আপনার প্রতিলিপি না থাকে তবে আপনি ডেটা হারাবেন।

আপনি যখন সরাসরি কোনও নোড বন্ধ করবেন, তখন ইলাস্টিকসার্ক অনলাইনে ফিরে আসার জন্য 1 মিটার (ডিফল্ট সময়) অপেক্ষা করবে। যদি এটি না হয়, তবে এটি প্রচলিত আইও নষ্ট করে সেই নোড থেকে অন্য নোডগুলিতে শারডগুলি বরাদ্দ করা শুরু করবে।

একটি সাধারণ পদ্ধতির জারি করে সাময়িকভাবে শারড বরাদ্দকে অক্ষম করা হবে:

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/references/5.5/restart-upgrade.html

আপনার সমস্ত সূচকের প্রতিরূপ যদি আপনার কাছে না থাকে তবে এই ধরণের ক্রিয়াকলাপ সম্পাদন করলে কিছু সূচকে ডাউনটাইম পড়তে পারে। এক্ষেত্রে একটি পরিষ্কার উপায় হ'ল নোডটি নেওয়ার আগে সমস্ত শার্ডগুলি অন্য নোডে স্থানান্তরিত করা:

PUT _cluster/settings
{
  "transient" : {
    "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
  }
}

এটি সমস্ত শারডগুলি 10.0.0.1অন্য নোড থেকে সরানো হবে (তথ্যের উপর নির্ভর করে সময় নেবে)। সবকিছু শেষ হয়ে গেলে আপনি নোডটি মেরে ফেলতে পারেন, রক্ষণাবেক্ষণ করতে পারেন এবং অনলাইনে ফিরে আসতে পারেন। এটি একটি ধীর অপারেশন এবং আপনার যদি প্রতিলিপি থাকে তবে এটির প্রয়োজন হয় না।

(_ আইপি, _ আইডি এর পরিবর্তে, ওয়াইল্ডকার্ড সহ _ নাম ঠিকঠাক কাজ করবে))

আরও তথ্য: https://www.elastic.co/guide/en/elasticsearch/references/5.5/allocation-filtering.html

অন্যান্য উত্তরগুলি কীভাবে একটি প্রক্রিয়া হত্যা করতে পারে তা ব্যাখ্যা করেছে।


4

ইলাস্টিকসার্কের জন্য প্রধান প্লাগইন ইলাস্টিকসার্ক প্রশাসনের জন্য নোডগুলি বন্ধ করে সহ একটি দুর্দান্ত ওয়েব ভিত্তিক ফ্রন্ট এন্ড সরবরাহ করে। এটি যে কোনও ইলাস্টিকসার্ক কমান্ডও চালাতে পারে।


3

ইতিমধ্যে চলছে নোডের পিড জানতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

কার্ল-এক্সজিইটি ' http: // লোকালহোস্ট: 9200 / _ নোড / প্রক্রিয়া '

নোডটি মারার উপায় খুঁজতে আমার এক ঘন্টা সময় লেগেছিল এবং টার্মিনাল উইন্ডোতে এই কমান্ডটি ব্যবহার করার পরে অবশেষে এটি করতে পারতাম।


2

উইন্ডোজ মেশিনে কী প্রক্রিয়াটি ইলাস্টিক অনুসন্ধান চালাচ্ছে তা যদি আপনি খুঁজে না পান তবে আপনি কনসোলে চালানোর চেষ্টা করতে পারেন:

netstat -a -n -o

পোর্ট ইলাস্টিকসার্কের সন্ধান করুন চলছে, ডিফল্ট 9200। শেষ কলামটি সেই পোর্টটি ব্যবহার করে এমন প্রক্রিয়ার জন্য পিআইডি is আপনি এটি কনসোলে সাধারণ কমান্ড দিয়ে শাটডাউন করতে পারেন

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

1

আপনি যদি লোকালহোস্টে নোড চালাচ্ছেন তবে ব্যবহার করার চেষ্টা করুন brew service stop elasticsearch

আমি আইওএস লোকালহোস্টে স্থিতিস্থাপক চালাচ্ছি।


0

ডকারের মধ্যে ইলাস্টিকের অনুসন্ধানের উত্তর:

শুধু ডকারের ধারক বন্ধ করুন। মনে হয় এটি নিখুঁতভাবে বন্ধ হচ্ছে কারণ এটি লগ হয়:

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

0

আপনার কাছে 3 টি নোড রয়েছে Cons

আপনার গুচ্ছ প্রস্তুত

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"

প্রতিটি নোডে স্থিতিস্থাপক পরিষেবা বন্ধ করুন

# 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
  }
}
'

ইলাস্টিকস্যাচ .5.৫ এ পরীক্ষিত

উৎস:

  1. https://www.elastic.co/guide/en/elasticsearch/references/6.5/stopping-elasticsearch.html
  2. https://www.elastic.co/guide/en/elasticsearch/references/6.5/rolling-upgrades.html
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.