ElasticSearch: अनचाही Shards, कैसे ठीक करें?


165

मेरे पास 4 नोड्स के साथ एक ES क्लस्टर है:

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

मुझे search03 को फिर से शुरू करना पड़ा, और जब वह वापस आया, तो उसने क्लस्टर को कोई समस्या नहीं बताई, लेकिन 7 अनसाइनड शार्क को छोड़ दिया।

{
  "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 में 'number_of_replicas' अपडेट करें?
  • पूरी तरह से कुछ और?

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

प्रश्न पर अनुसरण करें: क्या मैं पहली बार ऐसा करने के लिए कुछ गलत कर रहा हूं? मुझे उस क्लस्टर में बहुत विश्वास नहीं है जो नोड के पुनरारंभ होने पर इस तरह से व्यवहार करता है।

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

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

जवाबों:


117

डिफ़ॉल्ट रूप से, Elasticsearch डायनामिक रूप से नोड्स को पुनः असाइन करेगा। हालाँकि, यदि आपने शार्क आवंटन को निष्क्रिय कर दिया है (शायद आपने एक रोलिंग पुनरारंभ किया था और इसे फिर से सक्षम करना भूल गए थे), तो आप तीव्र आवंटन को फिर से सक्षम कर सकते हैं।

# 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आपके थ्रेड पूल बहुत छोटे हो सकते हैं

अंत में, आप स्पष्ट रूप से reroute एपीआई के साथ एक नोड के लिए एक शार्क को फिर से असाइन कर सकते हैं ।

# 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
5.0 जारी करने के बाद से, "आवंटित" आदेश अधिक विकल्प प्रदान करने के लिए बदल गया है - ऊपर का उदाहरण अब "allow_primary" पैरामीटर को छोड़ते हुए, "आवंटन_ रिक्त करें" होगा।
शाम १४

4
-H 'Content-Type: application/json'यदि आपको त्रुटि मिलती है तो आपको जोड़ना होगाContent-Type header [application/x-www-form-urlencoded] is not supported
भाग्योदयकाल

57

ठीक है, मैंने इसे 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}'

मैंने इस लाइन को अपने yaml config में भी जोड़ा है और तब से, सर्वर / सेवा के किसी भी पुनरारंभ को समस्या मुक्त किया गया है। शार्क को तुरंत वापस आवंटित किया गया।

FWIW, प्रश्न के बाद मांगी गई एक जवाब का जवाब देने के लिए, MAX_HEAP_SIZE को 30G पर सेट करें जब तक कि आपकी मशीन में 60G RAM से कम न हो, इस स्थिति में इसे उपलब्ध स्मृति के आधे हिस्से में सेट करें।

संदर्भ


2
1.1.1 में इसे हल करने के लिए, क्या मुझे क्लस्टर का उपयोग करना चाहिए।
user3175226

1
आवंटन

3
ध्यान दें कि रूट आवंटन एक क्लस्टर-वाइड सेटिंग है, इसलिए यह कोई फर्क नहीं पड़ता कि आप किस नोड को कमांड भेजते हैं।
विल्फ्रेड ह्यूजेस

मैंने अपने es yml फ़ाइल में दोनों को जोड़ा। 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> {"त्रुटि": "JsonParseException [अनपेक्षित प्रवृत्तियाँ r (',' (कोड 44)): एक मान्य मान (संख्या, स्ट्रिंग, सरणी, ऑब्जेक्ट, 'सही', 'गलत' /" [null ') \ n [स्रोत पर: [B @ ३b1fadfb; पंक्ति: ६, स्तंभ: २ "]]", "स्थिति": ५००} <br> <br> इसे ठीक करने के लिए मुझे क्या करना चाहिए
बायोलिनिह ३०'१५

अनेक अनेक धन्यवाद! इससे कीमती समय बच गया !!
सतीश

स्क्रिप्ट त्रुटि फेंकता है:{"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

यदि नीचे का विन्यास सभी के लिए सेट है, तो एलीस्टेसर्च स्वचालित रूप से शार्क को आवंटित करता है। इस कॉन्‍फ़िगर को बाकी एपीआई के साथ-साथ क्लस्टरिंग के जरिए सेट किया जा सकता है

यदि नीचे दिए गए कॉन्फिगरेशन के आवेदन के बाद भी, es अपने आप ही शार्क को असाइन करने में विफल रहता है, तो आपको अपने आप को शार्क को असाइन करना होगा। इसके लिए ईएस आधिकारिक लिंक

मैंने एक स्क्रिप्ट लिखी है जो क्लस्टर में सभी अनसाइनड शार्क को असाइन करने के लिए बाध्य करती है।

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

#!/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

यह स्क्रिप्ट काम नहीं करती थी, अर्थात, जब मैंने इसे चलाया था, तब भी मेरे पास UNASSIGNED शार्क थी।
क्रिस एफ

@ChrisF लाइन 1 में: आपको नोड 1, नोड 2, नोड 3 को वास्तविक नोड नामों से बदलने की आवश्यकता है। आप उन्हें एक कर्ल लोकलहोस्ट के साथ प्राप्त कर सकते हैं: 9200 / _cat / नोड्स।
साइडि

6

मैं आज शार्क आवंटन के एक ही मुद्दे के साथ फंस गया हूं। W. एंड्रयू लो III ने अपने उत्तर में जो स्क्रिप्ट प्रस्तावित की है वह मेरे लिए काम नहीं करती है, इसलिए मैंने इसे थोड़ा संशोधित किया और अंत में यह काम किया:

#!/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/reference/5.1/...
Fawix

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}फविक्स के सुझाव को लागू करने के बाद भी हो रही है
जनक मीणा

6

मेरे मामले में, हार्ड डिस्क स्थान ऊपरी सीमा पर पहुंच गया था।

इस लेख को देखें: https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-nococ.html.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 के रूप में सेट किया जाता है। और मेरे क्लस्टर में नोड्स की संख्या केवल एक थी इसलिए प्रतिकृति बनाने के लिए कोई अतिरिक्त नोड नहीं था, इसलिए स्वास्थ्य पीला हो रहा था। इसलिए जब मैंने सेटिंग्स प्रॉपर्टी के साथ इंडेक्स बनाया और नंबर_ऑफ_रोप्लिका को 0. के रूप में सेट किया, तो यह ठीक काम किया। उम्मीद है की यह मदद करेगा।

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

3

मुझे एक ही समस्या थी लेकिन मूल कारण संस्करण संख्याओं में अंतर था (दो नोड्स पर 1.4.2) (समस्याओं के साथ) और दो नोड्स (ओके) पर 1.4.4। पहला और दूसरा जवाब ("index.rout.allocation.disable_allocation" को झूठा और "क्लस्टर"। Chouting.allocation.enable "को" सभी "पर सेट करने) से काम नहीं चला।

हालाँकि, @Wilfred ह्यूजेस ने जवाब दिया ("क्षणिकता का उपयोग करके" "सभी के लिए" क्लस्टर "क्राउटिंग.ऑलोकेशन.एनएबल") ने मुझे एक त्रुटि दी:

[नहीं (लक्ष्य नोड संस्करण [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
@sim, मेरे उत्तर के लिए आपके संपादन के लिए बहुत धन्यवाद। मैं संपादन में बहुत गरीब हूं, इस पर अधिक ध्यान दूंगा।
user3391471

मेरे लिए, यह था:curator_cli --host 127.0.0.1 delete_indices --filter_list '[{"filtertype":"pattern","kind":"prefix","value":"logstash-"}]'
गौरी

2

मैं इस स्थिति को भी पूरा करता हूं और अंत में इसे ठीक करता हूं।

सबसे पहले, मैं अपनी स्थिति का वर्णन करूंगा। मेरे पास ElasticSearch क्लस्टर में दो नोड्स हैं, वे एक-दूसरे को खोज सकते हैं, लेकिन जब मैंने सेटिंग्स "number_of_replicas": 2 के साथ एक इंडेक्स बनाया , "number_of_shards": 5 के , तो 5, ES ने पीला संकेत दिखाया और अनसाइनड_सहार्ड 5 है।

समस्या तब होती है क्योंकि जब मैं 1 के साथ इसका मान सेट करता हूं, तो number_of_replicas का मान , सब ठीक है।


4
प्रतिकृतियों की संख्या हमेशा एन -1 आपके पास होने वाले नोड्स की संख्या होनी चाहिए। तो आपके परिदृश्य में 2 नोड्स के साथ, 1 नोड में प्राथमिक शार्प होता है, जबकि अन्य नोड में उसकी प्रतिकृति होती है, इसलिए आपके प्रतिकृतियों की संख्या 1. N = 2, N - 1 = 1.
slm

1

मेरे मामले में पुराने शेयरों के साथ एक पुराना नोड क्लस्टर में शामिल हो रहा था, इसलिए हमें पुराने नोड को बंद करना पड़ा और बिना धार वाले सूचकांकों को हटाना पड़ा।


1

मैंने ऊपर दिए गए कई सुझावों की कोशिश की और दुर्भाग्य से उनमें से कोई भी काम नहीं किया। हमारे पास अपने निचले वातावरण में "लॉग" इंडेक्स है जहां ऐप्स अपनी त्रुटियां लिखते हैं। यह एक एकल नोड क्लस्टर है। मेरे लिए इसे हल करने के लिए नोड के लिए वाईएमएल कॉन्फ़िगरेशन फ़ाइल की जांच कर रहा था और यह देख रहा था कि यह अभी भी डिफ़ॉल्ट सेटिंग "गेटवे। अप्रत्याशित_नोड्स: 2" है। यह हमारे पास मौजूद किसी भी अन्य सेटिंग को ओवरराइड कर रहा था। जब भी हम इस नोड पर एक इंडेक्स बनाएंगे, यह फैंटम 2 नोड में 5 में से 3 शार्क को फैलाने की कोशिश करेगा। इसलिए ये अप्रमाणित दिखाई देंगे और इन्हें कभी भी केवल 1 और केवल नोड में नहीं ले जाया जा सकता है।

समाधान कॉन्फ़िगरेशन को संपादित कर रहा था, सेटिंग को "गेटवे। अनपेक्षित_नोड्स" से बदलकर 1 कर दिया गया था, इसलिए यह क्लस्टर में अपने कभी-कभी पाए जाने वाले भाई की तलाश नहीं करेगा, और इलास्टिक सेवा उदाहरण को फिर से शुरू करेगा। इसके अलावा, मुझे सूचकांक को हटाना पड़ा, और एक नया निर्माण करना पड़ा। इंडेक्स बनाने के बाद, सभी 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

मेरे लिए, इसे dev कंसोल से चलाकर हल किया गया था: "POST / _cluster / reroute? Retry_fun"

.....

मैंने सूचकांक सूची को देखकर यह देखना शुरू किया कि कौन से सूचकांक लाल थे और फिर भाग गए

"get /_cat/shards?h= IsINDEXNAMEiding,shard,prirep,state,unassigned.reason"

और देखा कि यह ALLOCATION_FAILED अवस्था में शार्प्स था, इसलिए ऊपर की रिट्री को चलाने के कारण उन्हें आवंटन को फिर से आज़माने की ज़रूरत पड़ी।


संस्करण 5.6.3 के रूप में कॉमन को /_cat/shards/IINDEXNAMEiding?h=,shard,prirep,state,unassigned.reason
fasantos

0

मदद कर सकते हैं, लेकिन जब यह एम्बेडेड मोड में ES चलाने की कोशिश कर रहा था मैं इस मुद्दे था। फिक्स यह सुनिश्चित करने के लिए था कि नोड के पास स्थानीय (सच) सेट था।


0

अनसाइनड शार्क के लिए एक और संभावित कारण यह है कि आपका क्लस्टर एलिस्टिक्स खोज बाइनरी के एक से अधिक संस्करण चला रहा है।

पिछले संस्करणों के लिए अधिक हाल के संस्करण से शार्क प्रतिकृति काम नहीं करेगी

अनसाइनड शार्क के लिए यह एक मूल कारण हो सकता है।

इलास्टिक डॉक्यूमेंटेशन - रोलिंग अपग्रेड प्रक्रिया


0

मैं उसी मुद्दे पर भाग गया। इसे इलास्टिसर्च को फिर से शुरू करने से पहले अस्थायी आवंटन को झूठा करने से रोका जा सकता है, लेकिन यह पहले से ही होने पर अनसाइन किए गए शार्क को ठीक नहीं करता है।

मेरे मामले में यह डेटा नोड पर मुक्त डिस्क स्थान की कमी के कारण था। फिर से शुरू होने के बाद डेटा नोड पर जहां अभी भी मौजूद नहीं है, लेकिन वे मास्टर द्वारा मान्यता प्राप्त नहीं हैं।

डिस्क से केवल 1 नोड को साफ करने से मेरे लिए प्रतिकृति प्रक्रिया शुरू हो गई। यह एक धीमी प्रक्रिया है क्योंकि सभी डेटा को 1 डेटा नोड से दूसरे में कॉपी किया जाना है।


0

मैंने अनसाइनड शार्क को हटाने की कोशिश की या मैन्युअल रूप से उन्हें विशेष डेटा नोड में असाइन करने की कोशिश की। यह काम नहीं किया क्योंकि अनचाही शार्क दिखाई देती रहीं और स्वास्थ्य की स्थिति "लाल" से अधिक थी। तब मैंने देखा कि डेटा नोड्स में से एक "रीस्टार्ट" स्थिति में फंस गया है। मैंने डेटा नोड्स की संख्या को कम किया है, इसे मार दिया है। समस्या अब प्रजनन योग्य नहीं है।


0

मेरे पास दो ऐसे संकेत थे जो बिना सोचे-समझे शार्प थे, जो सेल्फ-हीलिंग नहीं लगते थे। मैंने अंततः इसे एक अतिरिक्त डेटा-नोड [1] अस्थायी रूप से जोड़कर हल किया । सूचक स्वस्थ होने और हरे रंग में स्थिर होने के बाद, मैंने अतिरिक्त नोड को हटा दिया और सिस्टम पुन: संतुलन (फिर से) और एक स्वस्थ स्थिति पर बसने में सक्षम था।

एक बार में कई डेटा नोड्स को मारने से बचने के लिए यह एक अच्छा विचार है (जो मुझे इस स्थिति में मिला है)। कम से कम, मैं कम से कम एक शार्क के लिए किसी भी प्रतियां / प्रतिकृतियां संरक्षित करने में विफल रहा था। सौभाग्य से, कुबेरनेट्स ने डिस्क स्टोरेज को इधर-उधर रखा, और जब मैंने डेटा-नोड को फिर से लॉन्च किया, तो इसका पुनः उपयोग किया।


... कुछ समय बीत गया ...

खैर, इस बार केवल एक नोड जोड़ने से काम नहीं लग रहा था (कुछ होने के लिए कई मिनट इंतजार करने के बाद), इसलिए मैंने REST API में इधर-उधर ताकना शुरू कर दिया।

GET /_cluster/allocation/explain

इसने मेरे नए नोड को दिखाया "decision": "YES"

वैसे, पहले से मौजूद सभी नोड्स के "decision": "NO"कारण था "the node is above the low watermark cluster setting"। तो यह शायद एक अलग मामला था, जिसे मैंने पहले संबोधित किया था।

तब मैंने बिना किसी शरीर के साथ निम्नलिखित सरल POST [2] बनाया , जिसने चीजों को गियर में डाल दिया ...

POST /_cluster/reroute

अन्य नोट:


[1] कुबेरनेट्स में करना बहुत आसान है यदि आपके पास पर्याप्त हेडरूम है: डैशबोर्ड के माध्यम से स्टेटफुल सेट को बस स्केल करें।

[२] किबाना "देव टूल्स" इंटरफ़ेस का उपयोग करते हुए, मुझे SSH / निष्पादन गोले से परेशान नहीं होना था।


0

मैंने सिर्फ पहली बार वृद्धि की है

"Index.number_of_replicas"

1 द्वारा (प्रतीक्षा करें जब तक कि नोड्स सिंक नहीं हो जाते हैं) तब 1 के बाद इसे कम कर दिया, जो प्रभावी रूप से अनचाही शार्क को हटा देता है और क्लस्टर फिर से किसी भी डेटा को खोने के जोखिम के बिना ग्रीन है।

मेरा मानना ​​है कि बेहतर तरीके हैं लेकिन मेरे लिए यह आसान है।

उम्मीद है की यह मदद करेगा।


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 कर देगा।

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