Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API ›API кластера

API предварительной проверки удаления узла

Эта функция предназначена для косвенного использования Elasticsearch Service, Elastic Cloud Enterprise и Elastic Cloud на Kubernetes. Прямое использование не поддерживается.

Новая справка по API

Для получения самых последних данных об API см. API кластера.

Предварительная проверка удаления узла.

Запрос

POST /_internal/prevalidate_node_removal

Предварительные условия

  • Если включены функции безопасности Elasticsearch, необходимо иметь monitor или manage право доступа к кластеру для использования этого API.

Описание

Этот API проверяет, приведет ли попытка удалить указанный узел(ы) из кластера к успеху или нет. Для кластера без неназначенных фрагментов удаление любого узла считается безопасным, что означает, что удаление узлов, вероятно, пройдет успешно.

В случае, если у кластера есть red состояние здоровья кластера, он проверяет, что удаление узла(ов) не приведет к риску удаления последней копии неназначенного фрагмента. Если в кластере есть красные индексы, API проверяет, являются ли красные индексы индексами поисковых снимков, и если нет, то отправляет запрос на каждый из узлов, указанных в вызове API, чтобы проверить, могут ли узлы содержать локальные копии фрагментов красных индексов, которые не являются индексами поисковых снимков. Этот запрос обрабатывается на каждом принимающем узле путем проверки наличия каталога фрагментов для любого из фрагментов красного индекса.

Ответ включает общую безопасность удаления указанных узлов и подробный ответ для каждого узла. Специфическая для узла часть ответа также содержит более подробную информацию о том, почему удаление этого узла может не удаться.

Обратите внимание, что должен использоваться только один из параметров запроса (names, ids или external_ids) для указания набора узлов.

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

Параметры запроса

master_timeout
(Необязательно, единицы измерения времени) Период ожидания узла-мастера. Если узел-мастер недоступен до истечения срока ожидания, запрос завершается ошибкой и возвращает ошибку. По умолчанию 30s. Также может быть установлен на -1, чтобы указать, что запрос никогда не должен истекать.
timeout
(Необязательно, единицы измерения времени) Период ожидания ответа от всех соответствующих узлов в кластере после обновления метаданных кластера. Если ответ не получен до истечения срока ожидания, обновление метаданных кластера все равно применяется, но ответ будет указывать, что оно не было полностью подтверждено. По умолчанию 30s. Также может быть установлен на -1, чтобы указать, что запрос никогда не должен истекать.
names
(Необязательно, строка) Список имён узлов, разделённых запятыми.
ids
(Необязательно, строка) Список идентификаторов узлов, разделённых запятыми.
external_ids
(Необязательно, строка) Список внешних идентификаторов узлов, разделённых запятыми.

Тело ответа

is_safe
(boolean) Безопасно ли удаление всех указанных узлов.
message
(строка) Сообщение, содержащее более подробную информацию о том, почему операция считается безопасной или нет.
nodes

(объект) Результат предварительной проверки удаления каждого из указанных узлов.

Свойства nodes
<node>

(объект) Содержит информацию о предварительной проверке удаления определенного узла.

Свойства <node>
id
(строка) Идентификатор узла
name
(строка) Имя узла
external_id
(строка) Внешний идентификатор узла
result

(объект) Содержит результат предварительной проверки удаления узла.

Свойства result
is_safe
(boolean) Считается ли удаление узла безопасным или нет.
reason

(строка) Строка, которая указывает причину, по которой результат предварительной проверки считается безопасным или нет. Она может иметь следующие значения:

  • no_problems: Предварительная проверка не обнаружила никаких проблем, которые могли бы помешать безопасному удалению узла.
  • no_red_shards_except_searchable_snapshots: Узел может быть безопасно удалён, так как все красные индексы являются индексами поисковых снимков, и поэтому удаление узла не ставит под угрозу удаление последней копии этого индекса из кластера.
  • no_red_shards_on_node: Узел не содержит копий фрагментов красных индексов, не являющихся индексами поисковых снимков.
  • red_shards_on_node: Узел может содержать копии фрагментов некоторых красных индексов, не являющихся индексами поисковых снимков. Список фрагментов, которые могут находиться на узле, указан в поле message.
  • unable_to_verify_red_shards: Связь с узлом не удалась или истекло время ожидания. Более подробная информация приведена в поле message.
message
(Необязательно, строка) Подробная информация о результате предварительной проверки удаления.

Примеры

В этом примере проверяется, безопасно ли удалить узлы node1 и node2. Ответ указывает, что безопасно удалить node1, но возможно, не безопасно удалить node2, так как он может содержать копии указанных фрагментов красных индексов. Поэтому общая предварительная проверка удаления двух узлов возвращает false.

resp = client.perform_request(
    "POST",
    "/_internal/prevalidate_node_removal",
    params={
        "names": "node1,node2"
    },
)
print(resp)
const response = await client.transport.request({
  method: "POST",
  path: "/_internal/prevalidate_node_removal",
  querystring: {
    names: "node1,node2",
  },
});
console.log(response);
POST /_internal/prevalidate_node_removal?names=node1,node2

API возвращает следующий ответ:

{
  "is_safe": false,
  "message": "removal of the following nodes might not be safe: [node2-id]",
  "nodes": [
    {
      "id": "node1-id",
      "name" : "node1",
      "external_id" : "node1-externalId",
      "result" : {
        "is_safe": true,
        "reason": "no_red_shards_on_node",
        "message": ""
      }
    },
    {
      "id": "node2-id",
      "name" : "node2",
      "external_id" : "node2-externalId",
      "result" : {
        "is_safe": false,
        "reason": "red_shards_on_node",
        "message": "node contains copies of the following red shards: [[indexName][0]]"
      }
    }
  ]
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/prevalidate-node-removal-api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API