স্থিতিস্থাপক অনুসন্ধান: আনসাইন করা শার্ডস, কীভাবে ঠিক করবেন?


165

আমার 4 টি নোড সহ একটি ইএস ক্লাস্টার রয়েছে:

number_of_replicas: 1
search01 - master: false, data: false
search02 - master: true, data: true
search03 - master: false, data: true
search04 - master: false, data: true

আমাকে সন্ধান03 পুনরায় চালু করতে হয়েছিল এবং এটি ফিরে আসার পরে এটি ক্লাস্টারে কোনও সমস্যা হয় না, তবে un টি স্বাক্ষরিত শার্ড্ড রেখে যায়।

{
  "cluster_name" : "tweedle",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 4,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 15,
  "active_shards" : 23,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 7
}

এখন আমার গুচ্ছটি হলুদ অবস্থায় আছে। এই সমস্যাটি সমাধান করার সর্বোত্তম উপায় কী?

  • শারদগুলি মুছে ফেলুন (বাতিল করুন)?
  • শারডগুলি অন্য নোডে সরানো হবে?
  • নোডে শারডগুলি বরাদ্দ করবেন?
  • 'নাম্বার_পরে রেপ্লিকাস' 2 তে আপডেট করবেন?
  • পুরোপুরি আর কিছু?

মজার বিষয় হল, যখন একটি নতুন সূচক যুক্ত করা হয়েছিল, তখন সেই নোড এটিতে কাজ শুরু করে এবং বাকি ক্লাস্টারের সাথে খুব ভাল খেলে, এটি কেবল বিনা নিরক্ষিত শারদগুলিকে রেখে দেয়।

প্রশ্নে অনুসরণ করুন: আমি কি প্রথমে এমনটি ঘটানোর জন্য কিছু ভুল করছি? নোড পুনরায় আরম্ভ করার পরে এমন একটি ক্লাস্টারের প্রতি আমার খুব বেশি আস্থা নেই।

দ্রষ্টব্য: আপনি যদি কোনও কারণে একটি নোড ক্লাস্টার চালাচ্ছেন তবে আপনার কেবল নিম্নলিখিতটি করতে হবে:

curl -XPUT 'localhost:9200/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

উত্তর:


117

ডিফল্টরূপে, ইলাস্টিকসার্ক গতিশীলভাবে নোডগুলিতে পুনরায় বরাদ্দ করবে। তবে, যদি আপনি শারড বরাদ্দটি অক্ষম করে থাকেন (সম্ভবত আপনি কোনও রোলিং পুনঃসূচনা করেছেন এবং এটি পুনরায় সক্ষম করতে ভুলে গেছেন), আপনি শারড বরাদ্দ পুনরায় সক্ষম করতে পারবেন।

# v0.90.x and earlier
curl -XPUT 'localhost:9200/_settings' -d '{
    "index.routing.allocation.disable_allocation": false
}'

# v1.0+
curl -XPUT 'localhost:9200/_cluster/settings' -d '{
    "transient" : {
        "cluster.routing.allocation.enable" : "all"
    }
}'

স্থিতিস্থাপক অনুসন্ধানটি শারডগুলি স্বাভাবিক হিসাবে পুনরায় নিয়োগ করবে। এটি ধীর হতে পারে, উত্থাপন indices.recovery.max_bytes_per_secএবং cluster.routing.allocation.node_concurrent_recoveriesএটির গতি বাড়ানোর বিষয়ে বিবেচনা করুন ।

আপনি যদি এখনও সমস্যাগুলি দেখছেন তবে অন্য কিছু সম্ভবত ভুল, তাই ত্রুটির জন্য আপনার ইলাস্টিক অনুসন্ধান লগগুলিতে সন্ধান করুন। যদি আপনি দেখেন EsRejectedExecutionExceptionআপনার থ্রেড পুলগুলি খুব ছোট হতে পারে

শেষ অবধি, আপনি স্পষ্টতই একটি নোডকে রিও্রিট এপিআই দিয়ে স্পষ্টভাবে পুনর্নির্দিষ্ট করতে পারেন ।

# Suppose shard 4 of index "my-index" is unassigned, so you want to
# assign it to node search03:
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
    "commands": [{
        "allocate": {
            "index": "my-index",
            "shard": 4,
            "node": "search03",
            "allow_primary": 1
        }
    }]
}'

3
যখন আমি এটি পেয়েছিলাম: { "error" : "ElasticsearchIllegalArgumentException[[allocate] failed to find [logstash-2015.01.05][1] on the list of unassigned shards]", "status" : 400 } যদিও আমি দেখতে পাচ্ছি যে
শারডটি

ঘটনাক্রমে, অন্যান্য শারডগুলি কাজ করেছিল যা অবিকৃত হিসাবে তালিকাভুক্ত ছিল এবং তারপরে বাকীগুলি নিজেরাই স্থির হয়ে গেল।
wjimenez5271

এটি দুর্দান্ত পরামর্শ।
ইয়েহোসেফ

1
৫.০ প্রকাশের পর থেকে "বরাদ্দ" কমান্ডটি আরও বিকল্প সরবরাহ করতে পরিবর্তিত হয়েছে - উপরের উদাহরণটি এখন "বরাদ্দ_প্রেমী_প্রাইমারি" হবে, "অনুমতি_প্রাইমারি" পরামিতি বাদ দিয়ে।
জেএমবি

4
আপনার -H 'Content-Type: application/json'যদি ত্রুটিটি পাওয়া যায় তবে আপনাকে যুক্ত করতে হবেContent-Type header [application/x-www-form-urlencoded] is not supported
ভাগ্যডায়োনাল্ড

56

ঠিক আছে, আমি ES সমর্থন থেকে কিছু সহায়তায় এটি সমাধান করেছি। সমস্ত নোডগুলিতে (বা নোডগুলি যে সমস্যার কারণ হিসাবে আপনি বিশ্বাস করেন) তে নীচের আদেশটি জারি করুন:

curl -XPUT 'localhost:9200/<index>/_settings' \
    -d '{"index.routing.allocation.disable_allocation": false}'

যেখানে <index>সূচক যদি আপনি বিশ্বাস করেন অভিযুক্ত ব্যক্তি হতে হয়। আপনার যদি কোনও ধারণা না থাকে তবে কেবল সমস্ত নোডে এটি চালান:

curl -XPUT 'localhost:9200/_settings' \
    -d '{"index.routing.allocation.disable_allocation": false}'

আমি এই লাইনটি আমার ইয়ামল কনফিগারেশনেও যুক্ত করেছি এবং তার পর থেকে সার্ভার / পরিষেবায় কোনও পুনরায় আরম্ভ করার সমস্যাটি নিখরচায় রয়েছে। শারডগুলি তত্ক্ষণাত্ পুনরায় বরাদ্দ দেওয়া হয়।

এফডব্লিউআইডাব্লু, প্রশ্নের পরে জিজ্ঞাসা করা একদম উত্তর দেওয়ার জন্য, আপনার মেশিনে 60 জি র‍্যাম কম না থাকলে 30X এ MAX_HEAP_SIZE সেট করুন, এই ক্ষেত্রে এটি উপলব্ধ মেমরির অর্ধেক সেট করে।

তথ্যসূত্র


2
সংস্করণ ১.১.১ এ সমাধান করার জন্য, আমি কি ক্লাস্টার.আরউটিং.লোকেশন.এনবেবল = কিছুই ব্যবহার করব না?
ব্যবহারকারী 3175226

1
বরাদ্দ অক্ষম সেখানে আর নথিভুক্ত করা হয় না, কমপক্ষে 20 নভেম্বর হিসাবে না।

3
মনে রাখবেন যে রাউটিং বরাদ্দ একটি ক্লাস্টার-ওয়াইড সেটিংস, তাই আপনি কোন নোডটি কমান্ডটি প্রেরণ করেছেন তা বিবেচ্য নয়।
উইলফ্রেড হিউজেস

আমি আমার এসইএমএল ফাইলটিতে উভয়ই যুক্ত করেছি। index.routing.allocation.disable_allocation : false cluster.routing.allocation.enable: noneতবে এখনও নিরীক্ষিত শারদগুলি দেখানো হচ্ছে .. কারণ কী হতে পারে?
বাগুই

1
সংস্করণ 6.8 এ আমি একটি ত্রুটি { "type": "illegal_argument_exception", "reason": "unknown setting [index.routing.allocation.disable_allocation] please check that any required plugins are installed, or check the breaking changes documentation for removed settings" } ],
পেয়েছি

39

এই ছোট্ট বাশ স্ক্রিপ্টটি জোর করে পুনরায় নিয়োগের জন্য প্রাণঘাতী হবে, আপনি ডেটা হারাতে পারেন।

NODE="YOUR NODE NAME"
IFS=$'\n'
for line in $(curl -s 'localhost:9200/_cat/shards' | fgrep UNASSIGNED); do
  INDEX=$(echo $line | (awk '{print $1}'))
  SHARD=$(echo $line | (awk '{print $2}'))

  curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
     "commands": [
        {
            "allocate": {
                "index": "'$INDEX'",
                "shard": '$SHARD',
                "node": "'$NODE'",
                "allow_primary": true
          }
        }
    ]
  }'
done

কবজির মতো কাজ করেছেন। ধন্যবাদ!
পাওলো পাইরেস

আমি এই ত্রুটিটি পেয়েছি: <br> error "ত্রুটি": "জসন পার্সি এক্সেকশন [অপ্রত্যাশিত বৈশিষ্ট্য r (',' (কোড 44)): একটি বৈধ মান প্রত্যাশা করেছে (সংখ্যা, স্ট্রিং, অ্যারে, অবজেক্ট, 'সত্য', 'মিথ্যা' বা 'নাল') \ n এ [উত্স: [B @ 3b1fadfb; লাইন: 6, কলাম: 27]] "," স্থিতি ": 500} <br> এটি ঠিক করার জন্য আমার কী করা উচিত
biolinh

অসংখ্য ধন্যবাদ! এটি মূল্যবান সময় বাঁচায় !!
সতীশ

স্ক্রিপ্টটি ত্রুটি ছুড়ে {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
ফেলেছে

17

আমার পক্ষে একমাত্র কাজটি ছিল_আবার_প্রতিক্রিয়া সংখ্যা পরিবর্তন করা (আমার কাছে 2 টি প্রতিলিপি ছিল, তাই আমি এটিকে 1 এ পরিবর্তন করেছি এবং তারপরে আবার 2 এ পরিবর্তন করেছি)।

প্রথম:

PUT /myindex/_settings
{
    "index" : {
        "number_of_replicas" : 1
     }
}

তারপর:

PUT /myindex/_settings
{
    "index" : {
        "number_of_replicas" : 2
     }
}

(আমি ইতিমধ্যে এই প্রশ্নের উত্তর দেওয়া হয়েছে )


9

নীচের কনফিগারেশনটি যদি সমস্তটিতে সেট করা থাকে তবে ইলাস্টিকসার্ক স্বয়ংক্রিয়ভাবে শার্ডগুলি বরাদ্দ করে। এই কনফিগারেশনটি একটি বিশ্রাম এপিআই পাশাপাশি cluster.routing.allocation.enable: সব ব্যবহার করে সেট করা যেতে পারে

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

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

নীচে অ্যারেতে নোডগুলির তালিকা রয়েছে যার মধ্যে আপনি অচিহ্নযুক্ত শারডগুলিকে ভারসাম্য বজায় রাখতে চান

#!/bin/bash
array=( node1 node2 node3 )
node_counter=0
length=${#array[@]}
IFS=$'\n'
for line in $(curl -s 'http://127.0.0.1:9200/_cat/shards'|  fgrep UNASSIGNED); do
    INDEX=$(echo $line | (awk '{print $1}'))
    SHARD=$(echo $line | (awk '{print $2}'))
    NODE=${array[$node_counter]}
    echo $NODE
    curl -XPOST 'http://127.0.0.1:9200/_cluster/reroute' -d '{
        "commands": [
        {
            "allocate": {
                "index": "'$INDEX'",
                "shard": '$SHARD',
                "node": "'$NODE'",
                "allow_primary": true
            }
        }
        ]
    }'
    node_counter=$(((node_counter)%length +1))
done

এই স্ক্রিপ্টটি কার্যকর হয়নি, এটি চালানোর পরে, আমার তখনও অনাকাঙ্খিত শার্ড ছিল।
ক্রিস এফ

@ ক্রিসএফ লাইন 1 এ: আপনাকে নোড 1, নোড 2, নোড 3 আসল নোডের সাথে প্রতিস্থাপন করতে হবে। আপনি এগুলি কার্ল লোকালহোস্টের সাথে পেতে পারেন: 9200 / _ ক্যাট / নোড।
সিডি মারি

6

আমি আজ শারড বরাদ্দ একই সমস্যা নিয়ে আটকেছি। ডাব্লু। অ্যান্ড্রু লো তৃতীয় তার উত্তরে প্রস্তাবিত স্ক্রিপ্টটি আমার পক্ষে কাজ করে না, তাই আমি এটিকে কিছুটা সংশোধন করেছিলাম এবং এটি শেষ পর্যন্ত কাজ করেছে:

#!/usr/bin/env bash

# The script performs force relocation of all unassigned shards, 
# of all indices to a specified node (NODE variable)

ES_HOST="<elasticsearch host>"
NODE="<node name>"

curl ${ES_HOST}:9200/_cat/shards > shards
grep "UNASSIGNED" shards > unassigned_shards

while read LINE; do
  IFS=" " read -r -a ARRAY <<< "$LINE"
  INDEX=${ARRAY[0]}
  SHARD=${ARRAY[1]}

  echo "Relocating:"
  echo "Index: ${INDEX}"
  echo "Shard: ${SHARD}"
  echo "To node: ${NODE}"

  curl -s -XPOST "${ES_HOST}:9200/_cluster/reroute" -d "{
    \"commands\": [
       {
         \"allocate\": {
           \"index\": \"${INDEX}\",
           \"shard\": ${SHARD},
           \"node\": \"${NODE}\",
           \"allow_primary\": true
         }
       }
     ]
  }"; echo
  echo "------------------------------"
done <unassigned_shards

rm shards
rm unassigned_shards

exit 0

এখন, আমি কোনও বাশ গুরু ধরণের নই, তবে স্ক্রিপ্টটি সত্যিই আমার ক্ষেত্রে কাজ করেছিল। দ্রষ্টব্য, আপনার "ES_HOST" এবং "NODE" ভেরিয়েবলের জন্য উপযুক্ত মান নির্দিষ্ট করতে হবে।


দুর্ভাগ্যক্রমে ES5x সামঞ্জস্যতা ভঙ্গ করেছে: elastic.co/guide/en/elasticsearch/references/5.1/…
ফওিক্স

2
ES5x সঙ্গে কাজ করার উপরে স্ক্রিপ্টের জন্য ক্রম প্রতিস্থাপন allocateসঙ্গে allocate_empty_primaryএবং প্রতিস্থাপন \"allow_primary\": trueসঙ্গে\"accept_data_loss\": true
Fawix

পথ {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}এমনকি Fawix এর পরামর্শ প্রয়োগের পরে
Janac মীনা

6

আমার ক্ষেত্রে, হার্ড ডিস্ক স্পেসের উপরের সীমানা পৌঁছে গেছে।

এই নিবন্ধটি দেখুন: https://www.elastic.co/guide/en/elasticsearch/references/current/disk-allocator.html

মূলত, আমি দৌড়েছি:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "90%",
    "cluster.routing.allocation.disk.watermark.high": "95%",
    "cluster.info.update.interval": "1m"
  }
}

যাতে এটি <90% হার্ড ডিস্ক স্পেস ব্যবহৃত হলে বরাদ্দ করা হবে, এবং> 95% হার্ড ডিস্ক স্পেস ব্যবহার করা হলে ক্লাস্টারের অন্য একটি মেশিনে একটি শারড স্থানান্তরিত হবে; এবং এটি প্রতি 1 মিনিটে যাচাই করে।


4

হতে পারে এটি কাউকে সহায়তা করে, তবে আমারও একই সমস্যা ছিল এবং এটি লগ খুব বেশি বড় হয়ে যাওয়ার কারণে সঞ্চয় স্থানের অভাবের কারণে।

আশা করি এটি কাউকে সাহায্য করবে! :)


4

আমার ক্ষেত্রে, যখন আমি একটি নতুন সূচক তৈরি করি তখন ডিফল্ট নম্বর_এফ_প্রিলিক্স 1 হিসাবে সেট করা হয় my সুতরাং যখন আমি সেটিংস বৈশিষ্ট্য সহ সূচক তৈরি করেছি এবং নম্বর_এফ_প্রিলিক্স 0 হিসাবে সেট করব Then তারপরে এটি ঠিক আছে। আশাকরি এটা সাহায্য করবে.

PUT /customer
{
    "settings": {
        "number_of_replicas": 0
    }
}

3

আমার একই সমস্যা ছিল তবে মূল কারণটি হ'ল সংস্করণ সংখ্যার মধ্যে পার্থক্য (দুটি নোডের 1.4.2 (সমস্যা সহ) এবং দুটি নোডে 1.4.4 (ঠিক আছে))। প্রথম এবং দ্বিতীয় উত্তরগুলি ("index.routing.allocation.disable_allocation" কে মিথ্যা হিসাবে সেট করে "cluster.routing.allocation.enable" "all" এ "সেট করে) কাজ করে নি।

যাইহোক, @ উইলফ্রেড হিউজেস ("cluster.routing.allocation.enable" "সমস্ত" ক্ষণস্থায়ী ব্যবহার করে "সক্ষম করে) এর উত্তর আমাকে নীচের বিবৃতিতে একটি ত্রুটি দিয়েছে:

[কোন (টার্গেট নোড সংস্করণ [1.4.2] উত্স নোড সংস্করণ [1.4.4] এর চেয়ে পুরানো)]

পুরানো নোডগুলি 1.4.4 এ আপডেট করার পরে এই নোডগুলি অন্যান্য ভাল নোডগুলির সাথে পুনরায় সংযোগ করতে শুরু করে।


3

আমারও এই সমস্যাটি ছিল এবং আমি এটি সমাধান করার একটি সহজ উপায় খুঁজে পেয়েছি।

  • আনসাইন করা শর্টসের সূচক পান

    $ curl -XGET http://172.16.4.140:9200/_cat/shards
    
  • কিউরেটর সরঞ্জাম ইনস্টল করুন এবং সূচক মুছতে এটি ব্যবহার করুন

    $ curator --host 172.16.4.140 delete indices --older-than 1 \
           --timestring '%Y.%m.%d' --time-unit days --prefix logstash
    

    দ্রষ্টব্য: আমার ক্ষেত্রে, সূচকটি 2016-04-21 দিনের লগস্ট্যাশ

  • তারপরে আবার শর্টগুলি পরীক্ষা করুন, সমস্ত অ-স্বাক্ষরিত শার্ডগুলি চলে যায়!

1
@ সিম, আমার উত্তরের জন্য আপনার সম্পাদনার জন্য অনেক ধন্যবাদ। আমি সম্পাদনায় খুব দরিদ্র, এতে আরও মনোযোগ দেব।
ব্যবহারকারীর 3391471

আমার জন্য, এটি ছিল:curator_cli --host 127.0.0.1 delete_indices --filter_list '[{"filtertype":"pattern","kind":"prefix","value":"logstash-"}]'
গউই

2

আমিও এই পরিস্থিতি পূরণ করে অবশেষে এটি স্থির করেছি।

প্রথমত, আমি আমার পরিস্থিতি বর্ণনা করব। আমার কাছে ইলাস্টিক অনুসন্ধান ক্লাস্টারে দুটি নোড রয়েছে, তারা একে অপরকে খুঁজে পেতে পারে, কিন্তু যখন আমি "নম্বর_ফ_রেপ্লিকাস" সেটিংস সহ একটি সূচক তৈরি করেছি : 2 , "সংখ্যা_সোফ_শার্ডস": 5 , ES হলুদ সিগন্যাল দেখায় এবং স্বাক্ষরবিহীন_শার্ডস 5 হয়।

সমস্যাটি দেখা দেয় কারণ সংখ্যা_সাম্পের রেপ্লিকাসের মান যখন আমি 1 এর সাথে মান নির্ধারণ করি তখন সব ঠিক আছে।


4
প্রতিরূপের সংখ্যাটি সর্বদা আপনার থাকা নোডের সংখ্যা N-1 হওয়া উচিত। সুতরাং আপনার দৃশ্যে 2 টি নোডের সাথে নোডের 1 টিতে প্রাথমিক শারড থাকে, যখন তার অন্য নোডের রেপ্লিকা থাকে, সুতরাং আপনার প্রতিরূপের সংখ্যা 1 সেট করা উচিত। এন = 2, এন - 1 = 1.
স্ল্যাম

1

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


1

আমি উপরের পরামর্শগুলির বেশ কয়েকটি চেষ্টা করেছিলাম এবং দুর্ভাগ্যক্রমে তাদের কোনওটিই কাজ করে নি। আমাদের নিম্ন পরিবেশে আমাদের একটি "লগ" সূচক রয়েছে যেখানে অ্যাপগুলি তাদের ত্রুটিগুলি লিখে দেয়। এটি একক নোড ক্লাস্টার। আমার জন্য এটি কী সমাধান করেছিল তা নোডের জন্য ওয়াইএমএল কনফিগারেশন ফাইলটি পরীক্ষা করে দেখছিল যে এটি এখনও ডিটেল সেটিংস "গেটওয়ে.এক্সপেক্টেড_নোডস: 2" রয়েছে। এটি আমাদের যে কোনও অন্য সেটিংস ওভাররাইড করে। যখনই আমরা এই নোডে একটি সূচক তৈরি করতাম এটি 5 টি শারডের মধ্যে 3 টি শারডকে ভুত 2 2nd নোডে ছড়িয়ে দেওয়ার চেষ্টা করবে। এগুলি তাই নিযুক্ত হিসাবে উপস্থিত হবে এবং এগুলি কখনই প্রথম এবং কেবল নোডে স্থানান্তরিত হতে পারে না।

সমাধানটি কনফিগারটি সম্পাদনা করছিল, "গেটওয়ে.এক্সপেক্টেড_নোডস" সেটিংসটি 1 এ পরিবর্তন করে, তাই এটি ক্লাস্টারে কখনও দেখা যাবে না এমন ভাইয়ের সন্ধান এবং ইলাস্টিক পরিষেবা দৃষ্টান্তটি পুনরায় আরম্ভ করবে। এছাড়াও, আমাকে সূচক মুছতে এবং একটি নতুন তৈরি করতে হয়েছিল। সূচক তৈরির পরে, সমস্ত শারডগুলি প্রথম এবং কেবল নোডে প্রদর্শিত হয়েছিল এবং কোনওটিই নিযুক্ত করা হয়নি।

# Set how many nodes are expected in this cluster. Once these N nodes
# are up (and recover_after_nodes is met), begin recovery process immediately
# (without waiting for recover_after_time to expire):
#
# gateway.expected_nodes: 2
gateway.expected_nodes: 1

1

আমার জন্য, এটি ডি কনসোল থেকে এটি চালিয়ে সমাধান করা হয়েছিল: "POST / _cluster / reroute? Retry_feda"

.....

সূচকগুলির তালিকাটি দেখে শুরু করেছিলাম কোন সূচকগুলি লাল এবং তারপরে দৌড়েছে তা দেখতে

"get /_cat/shards?h=mittedINDEXNAME দ্রষ্টব্য, প্রিপ্রেস, স্টেট, সুনির্দিষ্ট

এবং দেখেছি এটিতে ALLOCATION_FAILED অবস্থায় শর্টস আটকে আছে, সুতরাং উপরোক্ত পুনরায় চেষ্টা চালিয়ে যাওয়ার কারণে তাদের বরাদ্দটি পুনরায় চেষ্টা করতে হবে।


সংস্করণ ৫..6.৩ অনুসারে কোমন্ডটি /_cat
shards/

0

এম্বেড মোডে ইএস চালানোর চেষ্টা করার সময় আমার এই সমস্যাটি ছিল। নোডের স্থানীয় (সত্য) সেট রয়েছে তা নিশ্চিত করে ফিক্স করা হয়েছিল।


0

অ-স্বাক্ষরিত শার্ডগুলির জন্য আরেকটি সম্ভাব্য কারণ হ'ল আপনার ক্লাস্টারটি ইলাস্টিকস্যাচ বাইনারিটির একাধিক সংস্করণে চলছে।

পূর্ববর্তী সংস্করণগুলিতে অতি সাম্প্রতিক সংস্করণ থেকে তীক্ষ্ণ প্রতিরূপ কাজ করবে না

এটি অ-স্বাক্ষরিত শার্ডের মূল কারণ হতে পারে।

ইলাস্টিক ডকুমেন্টেশন - রোলিং আপগ্রেড প্রক্রিয়া


0

আমি ঠিক একই ইস্যু মধ্যে দৌড়ে। স্থিতিস্থাপক অনুসন্ধান পুনরায় আরম্ভ করার আগে অস্থায়ীভাবে শারড বরাদ্দকে মিথ্যাতে সেট করে এটি প্রতিরোধ করা যেতে পারে, তবে এটি ইতিমধ্যে স্বাক্ষরিত শার্ডগুলি সেখানে উপস্থিত থাকলে এটি ঠিক করে না।

আমার ক্ষেত্রে এটি ডেটা নোডে ফ্রি ডিস্কের জায়গার অভাবে হয়েছিল। পুনঃসূচনা হওয়ার পরে ডেটা নোডে থাকা অ-স্বাক্ষরিত শার্ডগুলি কিন্তু তারা যেখানে মাস্টার দ্বারা স্বীকৃত নয়।

কেবলমাত্র ডিস্ক থেকে নোডগুলির মধ্যে 1 টি পরিষ্কার করার জন্য আমার জন্য প্রতিলিপি প্রক্রিয়া শুরু হয়েছিল। এটি একটি বরং ধীর প্রক্রিয়া কারণ সমস্ত ডেটা 1 ডেটা নোড থেকে অন্যটিতে অনুলিপি করতে হয়।


0

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


0

আমার কাছে আনসাইন করা শार्ডযুক্ত দুটি সূচক রয়েছে যা নিজেকে নিরাময় বলে মনে হয় না। আমি শেষ পর্যন্ত সাময়িকভাবে একটি অতিরিক্ত ডেটা নোড [1] যুক্ত করে এটি সমাধান করেছি । সূচকগুলি স্বাস্থ্যকর হয়ে যাওয়ার পরে এবং সবুজ সবুজতে স্থিতিশীল হওয়ার পরে, আমি অতিরিক্ত নোডটি সরিয়ে দিয়েছি এবং সিস্টেমটি পুনরায় ভারসাম্য বজায় রাখতে সক্ষম হয়েছিল (আবার) এবং একটি সুস্থ অবস্থানে বসতি স্থাপন করতে সক্ষম হয়েছিল।

একাধিক ডেটা নোড একবারে হত্যা করা এড়ানো ভাল ধারণা (যা আমি এই অবস্থায় এলাম)। সম্ভবত, আমি কমপক্ষে একটি শারডের জন্য কোনও অনুলিপি / প্রতিলিপি সংরক্ষণ করতে ব্যর্থ হয়েছি। ভাগ্যক্রমে, কুবারনেটিস ডিস্কের সঞ্চয়স্থান প্রায় রাখে এবং আমি ডেটা-নোড পুনরায় চালু করার সময় এটি পুনরায় ব্যবহার করে।


... কিছু সময় কেটে গেছে ...

ঠিক আছে, এবার কেবল একটি নোড যুক্ত করা কাজ করছে বলে মনে হচ্ছে না (কিছু হওয়ার জন্য কয়েক মিনিট অপেক্ষা করার পরে), তাই আমি আরআরটি এপিআই-এ ঘুরে বেড়াতে শুরু করি।

GET /_cluster/allocation/explain

এটি আমার নতুন নোডটি দিয়ে দেখিয়েছে "decision": "YES"

যাইহোক, পূর্ব-বিদ্যমান সমস্ত নোডের "decision": "NO"কারণে ছিল "the node is above the low watermark cluster setting"। সুতরাং এটি সম্ভবত আমি আগে সম্বোধন করা একটি পৃথক কেস ছিল।

তারপরে আমি কোনও দেহ ছাড়াই নিম্নলিখিত সাধারণ পোস্টটি [2] তৈরি করেছিলাম , যা জিনিসগুলিকে গিয়ারে ফেলেছে ...

POST /_cluster/reroute

অন্যান্য নোট:


[1] আপনার পর্যাপ্ত হেডরুম থাকলে কুবেরনেটসে করা খুব সহজ: কেবলমাত্র ড্যাশবোর্ডের মাধ্যমে স্টেটফুল সেটটি স্কেল করুন।

[২] কিবানা "দেব সরঞ্জাম" ইন্টারফেসটি ব্যবহার করে, আমাকে এসএসএইচ / এক্সিকিউট শেলগুলি নিয়ে বিরক্ত করার দরকার নেই।


0

আমি সবে প্রথম বৃদ্ধি

"Index.number_of_replicas"

1 দ্বারা (নোডগুলি সিঙ্ক না হওয়া পর্যন্ত অপেক্ষা করুন) এরপরে 1 এর পরে এটি হ্রাস পেয়েছে, যা কার্যকরভাবে অচিহ্নযুক্ত শার্ডগুলি সরিয়ে দেয় এবং কোনও ডেটা হারানোর ঝুঁকি ছাড়াই ক্লাস্টারটি আবার সবুজ is

আমি বিশ্বাস করি আরও ভাল উপায় আছে তবে এটি আমার পক্ষে সহজ।

আশাকরি এটা সাহায্য করবে.


0

দূষিত শার্ডগুলির সাথে কাজ করার সময় আপনি প্রতিরূপ ফ্যাক্টরটিকে 0 এ সেট করতে পারেন এবং তারপরে এটিকে আবার মূল মানটিতে সেট করতে পারেন। আপনার সমস্ত কলুষিত শার্ড না থাকলে এবং ক্লাস্টারে নতুন প্রতিলিপি স্থানান্তরিত না করে এটি সর্বাধিক পরিষ্কার করা উচিত।

0-এর একটি প্রতিরূপ ফ্যাক্টরটি ব্যবহার করতে নিযুক্ত স্বতন্ত্র প্রতিলিপিগুলির সাথে সূচকগুলি সেট করা হচ্ছে:

curl -XGET http://localhost:9200/_cat/shards |\
  grep UNASSIGNED | grep ' r ' |\
  awk '{print $1}' |\
  xargs -I {} curl -XPUT http://localhost:9200/{}/_settings -H "Content-Type: application/json" \
  -d '{ "index":{ "number_of_replicas": 0}}'

এগুলিকে 1 এ পুনরায় সেট করা হচ্ছে:

curl -XGET http://localhost:9200/_cat/shards |\
  awk '{print $1}' |\
  xargs -I {} curl -XPUT http://localhost:9200/{}/_settings -H "Content-Type: application/json" \
  -d '{ "index":{ "number_of_replicas": 1}}'

দ্রষ্টব্য: যদি আপনার বিভিন্ন সূচকের জন্য বিভিন্ন প্রতিরূপের উপাদান থাকে তবে এটি চালাবেন না। এটি সমস্ত সূচকের জন্য প্রতিলিপি ফ্যাক্টরটিকে 1 এ হার্ডকোড করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.