ElasticSearch Node Failure - PullRequest
       5

ElasticSearch Node Failure

0 голосов
/ 08 ноября 2019

Мой кластер Elasticsearch уменьшен с 2B документов до 900M Records, на AWS он показывает

Перемещение осколков: 4

, в то время как отображается

Активные осколки: 35

и

Активные первичные осколки: 34

(может не иметь отношения, но вот остальные характеристики):

Количество узлов: 9

Количество узлов данных: 6

Неназначенные осколки: 17

При работе

GET /_cluster/allocation/explain

возвращает:

{
  "index": "datauwu",
  "shard": 6,
  "primary": true,
  "current_state": "unassigned",
  "unassigned_info": {
    "reason": "NODE_LEFT",
    "at": "2019-10-31T17:02:11.258Z",
    "details": "node_left[removedforsecuritybecimparanoid1]",
    "last_allocation_status": "no_valid_shard_copy"
  },
  "can_allocate": "no_valid_shard_copy",
  "allocate_explanation": "cannot allocate because a previous copy of the primary shard existed but can no longer be found on the nodes in the cluster",
  "node_allocation_decisions": [
    {
      "node_id": "removedforsecuritybecimparanoid2",
      "node_name": "removedforsecuritybecimparanoid2",
      "node_decision": "no",
      "store": {
        "found": false
      }
    },
    {
      "node_id": "removedforsecuritybecimparanoid3",
      "node_name": "removedforsecuritybecimparanoid3",
      "node_decision": "no",
      "store": {
        "found": false
      }
    },
    {
      "node_id": "removedforsecuritybecimparanoid4",
      "node_name": "removedforsecuritybecimparanoid4",
      "node_decision": "no",
      "store": {
        "found": false
      }
    },
    {
      "node_id": "removedforsecuritybecimparanoid5",
      "node_name": "removedforsecuritybecimparanoid5",
      "node_decision": "no",
      "store": {
        "found": false
      }
    },
    {
      "node_id": "removedforsecuritybecimparanoid6",
      "node_name": "removedforsecuritybecimparanoid6",
      "node_decision": "no",
      "store": {
        "found": false
      }
    },
    {
      "node_id": "removedforsecuritybecimparanoid7",
      "node_name": "removedforsecuritybecimparanoid7",
      "node_decision": "no",
      "store": {
        "found": false
      }
    }
  ]
}

Я немного запутался в том, что именно это означает, означает ли это, что мой кластер эластичного поиска не потерял данные, а вместо этого переместил его в другие сегменты или не можетэто не найти осколки?

Если он не может найти осколки, значит ли это, что мои данные были потеряны? Если да, то в чем может быть причина, как я могу предотвратить это в будущем?

Я не настроил реплики, так как я индексировал данные, и реплики замедляют их во время индексации.

также не считая, мое количество записей уменьшилось до 400 м в одной точке, но затем случайно поднялось до 900 м. я не знаю, что это значит, и любая оценка будет принята с благодарностью.

1 Ответ

0 голосов
/ 08 ноября 2019

"причина": "NODE_LEFT"

И:

Я не настроил реплики, так как я индексировал данные, и реплики замедляют егопри индексации.

Если узел, содержащий первичные осколки, исчез, то да, ваши данные исчезли. В конце концов, если нет реплик, то откуда кластер будет получать данные, если первичные (и единственные) сегменты больше не являются частью кластера? Вам нужно либо вернуть узел, содержащий эти сегменты, обратно и добавить его в кластер, либо данные исчезнут.

В сообщении об ошибке говорится: «Вы хотите, чтобы я выделил основной сегмент для этого индекса, которыйЯ знаю, что существует, но раньше была другая версия этого первичного осколка, который больше не может быть найден, я не буду выделять его снова в случае возвращения предыдущего первичного осколка. "

Вы можете заставить Elasticsearchперераспределите основной шард (и явно примите, что данные в предыдущем основном шарде пропали), выполнив перенаправление с помощью allocate_stale_primary ( doc ):

curl -XPOST '127.0.0.1:9200/_cluster/reroute?pretty' -d '{
    "commands" : [ {
        "allocate_stale_primary" :
            {
              "index" : "datauwu", "shard" : 6,
              "node" : "target-data-node-id",
              "accept_data_loss" : true
            }
        }
    ]
}'

Отключение реплик длячто-либо, кроме разработки с использованием одноразовых данных, обычно является плохой идеей.

Кроме того, нет, мое количество записей упало до 400 м в какой-то момент, но затем случайно поднялось до 900 м. я не знаю, что это значит, и любая оценка будет принята с благодарностью.

Это происходит потому, что в кластере не видны осколки. Это может произойти, если все копии осколка были выделены, перемещены или восстановлены. Это соответствует КРАСНОМУ состоянию кластера. Вы можете уменьшить его, убедившись, что у вас есть по крайней мере 1 реплика (хотя в идеале у вас есть достаточное количество реплик, настроенных для того, чтобы выдержать потерю N узлов данных в кластере). Это позволяет Elasticsearch сохранять один осколок в качестве основного, в то время как он перемещает другие.

Если у вас есть только основной и нет реплик, то, если основной объект восстанавливается или перемещается, данные в этом фрагменте не будут видныв кластере. Как только осколок снова активен, документы в нем становятся видимыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...