Невозможно переместить осколки с использованием cluster.routing.allocation - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть кластер ElasticSearch с несколькими индексами на 2 узлах данных (es-data-0 & es-data-1) и я хочу удалить все сегменты с узла es-data-1 перед его выводом из эксплуатации.

Перемещение осколков 1 по одному работает хорошо.Следующая команда занимает несколько секунд, чтобы переместить осколок.

POST /_cluster/reroute
{
    "commands": [
        {
            "move": {
                "index" : "index_operations_log",
                "shard" : 0,
                "from_node" : "es-data-1",
                "to_node" : "es-data-0"
            }
        }
    ]
}

Но если я попытаюсь выполнить фильтрацию выделения сегментов на уровне кластера, это не повлияет.Например, следующее не оказывает видимого влияния на состояние осколка:

PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.rebalance.enable": "none"
    }
}

PUT /_cluster/settings
{
    "transient": {
        "cluster.routing.allocation.exclude._name": "es-data-1"
    }
}

, даже если возвращается

{
    "acknowledged": true,
    "persistent": {},
    "transient": {
        "cluster": {
            "routing": {
                "allocation": {
                    "exclude": {
                        "_name": "es-data-1"
                    }
                }
            }
        }
    }
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 23 сентября 2018

Разобрался.Я запустил

GET /_cluster/settings

и увидел, что ранее я установил некоторые настройки cluster.routing.allocation, которые конфликтовали с этими новыми.Я очистил конфликтующие правила, установив их значения в "", и осколки начали перемещаться.

В общем случае вызов

PUT /_cluster/settings
{
    "transient" : {
        "cluster.routing.allocation.require": "..."
    }
}

не сообщает об ошибках, поэтому я обнаружил, чтоЕдинственный способ устранения проблем, подобных описанным выше, - если осколки не движутся так, как ожидалось, попробуйте переместить осколки по 1 за раз, используя POST /_cluster/reroute.Это сообщает подробные ошибки.Затем, если вы можете перемещать отдельные осколки с помощью POST /_cluster/reroute, но перемещение осколков на уровне кластера или индекса все еще не работает, используйте GET /_cluster/settings и GET /*/settings
, чтобы проверить другие существующие правила распределения маршрутизации, которыеконфликт.Если они существуют, их можно сбросить, выполнив PUT /_cluster/settings со своими значениями = "".

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