আমি একটি নতুন কনফিগারেশন সহ একটি স্থিতিস্থাপক নোড পুনরায় আরম্ভ করতে চাই। দয়া করে কোনও নোড বন্ধ করার সর্বোত্তম উপায় কী?
প্রক্রিয়াটি হ'ল সার্ভারটি বন্ধ করার সর্বোত্তম উপায়, বা নোডটি বন্ধ করতে আমি ব্যবহার করতে পারি এমন কোনও ম্যাজিক URL আছে?
আমি একটি নতুন কনফিগারেশন সহ একটি স্থিতিস্থাপক নোড পুনরায় আরম্ভ করতে চাই। দয়া করে কোনও নোড বন্ধ করার সর্বোত্তম উপায় কী?
প্রক্রিয়াটি হ'ল সার্ভারটি বন্ধ করার সর্বোত্তম উপায়, বা নোডটি বন্ধ করতে আমি ব্যবহার করতে পারি এমন কোনও ম্যাজিক URL আছে?
উত্তর:
আপডেট উত্তর।
_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'
আপনি যদি নতুন কনফিগারেশন প্রয়োগ করতে চান তবে আপনার এটি বন্ধ করার দরকার নেই।
$ 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 মিটার (ডিফল্ট সময়) অপেক্ষা করবে। যদি এটি না হয়, তবে এটি প্রচলিত আইও নষ্ট করে সেই নোড থেকে অন্য নোডগুলিতে শারডগুলি বরাদ্দ করা শুরু করবে।
একটি সাধারণ পদ্ধতির জারি করে সাময়িকভাবে শারড বরাদ্দকে অক্ষম করা হবে:
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
অন্যান্য উত্তরগুলি কীভাবে একটি প্রক্রিয়া হত্যা করতে পারে তা ব্যাখ্যা করেছে।
ইলাস্টিকসার্কের জন্য প্রধান প্লাগইন ইলাস্টিকসার্ক প্রশাসনের জন্য নোডগুলি বন্ধ করে সহ একটি দুর্দান্ত ওয়েব ভিত্তিক ফ্রন্ট এন্ড সরবরাহ করে। এটি যে কোনও ইলাস্টিকসার্ক কমান্ডও চালাতে পারে।
ইতিমধ্যে চলছে নোডের পিড জানতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।
কার্ল-এক্সজিইটি ' http: // লোকালহোস্ট: 9200 / _ নোড / প্রক্রিয়া '
নোডটি মারার উপায় খুঁজতে আমার এক ঘন্টা সময় লেগেছিল এবং টার্মিনাল উইন্ডোতে এই কমান্ডটি ব্যবহার করার পরে অবশেষে এটি করতে পারতাম।
উইন্ডোজ মেশিনে কী প্রক্রিয়াটি ইলাস্টিক অনুসন্ধান চালাচ্ছে তা যদি আপনি খুঁজে না পান তবে আপনি কনসোলে চালানোর চেষ্টা করতে পারেন:
netstat -a -n -o
পোর্ট ইলাস্টিকসার্কের সন্ধান করুন চলছে, ডিফল্ট 9200
। শেষ কলামটি সেই পোর্টটি ব্যবহার করে এমন প্রক্রিয়ার জন্য পিআইডি is আপনি এটি কনসোলে সাধারণ কমান্ড দিয়ে শাটডাউন করতে পারেন
taskkill /PID here_goes_PID /F
কেবলমাত্র যদি আপনি উদাহরণটির পিআইডি সন্ধান করতে চান এবং প্রক্রিয়াটি মুছে ফেলতে চান, ধরে নিবেন নোড পোর্ট 9300 শুনছে (ডিফল্ট পোর্ট) আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:
kill -9 $(netstat -nlpt | grep 9200 | cut -d ' ' -f 58 | cut -d '/' -f 1)
আপনি উপরে বর্ণিত কোড যেমন 58 এবং 1 এর সাথে খেলতে পারেন
আপনি যদি লোকালহোস্টে নোড চালাচ্ছেন তবে ব্যবহার করার চেষ্টা করুন brew service stop elasticsearch
আমি আইওএস লোকালহোস্টে স্থিতিস্থাপক চালাচ্ছি।
আপনার কাছে 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.৫ এ পরীক্ষিত
উৎস: