Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Командные инструменты

elasticsearch-node

Команда elasticsearch-node позволяет выполнять определенные небезопасные операции с узлом, которые возможны только при его остановке. Эта команда позволяет изменять роль узла, небезопасно редактировать настройки кластера и может восстановить некоторые данные после аварии или запустить узел, даже если он несовместим с данными на диске.

Синопсис

bin/elasticsearch-node repurpose|unsafe-bootstrap|detach-cluster|override-version
  [-E <KeyValuePair>]
  [-h, --help] ([-s, --silent] | [-v, --verbose])

Описание

Этот инструмент имеет несколько режимов:

  • elasticsearch-node repurpose может использоваться для удаления нежелательных данных с узла, если он ранее был узлом данных data node или узлом, пригодным для роли мастер master-eligible node, но его роль была изменена.
  • elasticsearch-node remove-settings может использоваться для удаления постоянных настроек из состояния кластера в случае, если оно содержит несовместимые настройки, которые препятствуют формированию кластера.
  • elasticsearch-node remove-index-settings может использоваться для удаления настроек индекса из состояния кластера в случае, если оно содержит несовместимые настройки индекса, которые препятствуют формированию кластера.
  • elasticsearch-node remove-customs может использоваться для удаления пользовательских метаданных из состояния кластера в случае, если оно содержит поврежденные метаданные, которые препятствуют загрузке состояния кластера.
  • elasticsearch-node unsafe-bootstrap используется для выполнения небезопасной инициализации кластера. Она принудительно заставляет один из узлов сформировать новый кластер самостоятельно, используя локальную копию метаданных кластера.
  • elasticsearch-node detach-cluster позволяет перемещать узлы из одного кластера в другой. Это можно использовать для перемещения узлов в новый кластер, созданный с помощью команды elasticsearch-node unsafe-bootstrap. Если небезопасная инициализация кластера невозможна, это также позволяет перемещать узлы в новый кластер.
  • elasticsearch-node override-version позволяет запустить узел, даже если данные в пути к данным были записаны несовместимой версией Elasticsearch. Иногда это позволяет выполнить переход на более раннюю версию Elasticsearch.

JVM параметры

Инструменты командной строки работают с 64 МБ кучи. Для большинства инструментов этого значения достаточно. Однако при необходимости это можно переопределить, установив переменную среды CLI_JAVA_OPTS. Например, следующее увеличивает размер кучи, используемой инструментом elasticsearch-node, до 1 ГБ.

export CLI_JAVA_OPTS="-Xmx1g"
bin/elasticsearch-node ...

Изменение роли узла

Возможны ситуации, когда вы хотите изменить роль узла, не следуя правильным процедурам изменения роли. Инструмент elasticsearch-node repurpose позволяет удалить любые лишние данные на диске и запустить узел после изменения его роли.

Предполагаемое использование:

  • Остановите узел
  • Обновите elasticsearch.yml, установив node.roles в соответствии с вашими потребностями.
  • Запустите elasticsearch-node repurpose на узле
  • Запустите узел

Если вы запустите elasticsearch-node repurpose на узле без роли data и с ролью master, то он удалит любые оставшиеся фрагменты данных фрагментов на этом узле, но оставит индекс и метаданные кластера без изменений. Если вы запустите elasticsearch-node repurpose на узле без ролей data и master, то он удалит любые оставшиеся фрагменты данных и метаданные индекса, но оставит метаданные кластера без изменений.

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

Инструмент предоставляет сводку данных, которые будут удалены, и запрашивает подтверждение перед внесением каких-либо изменений. Вы можете получить подробную информацию об затронутых индексах и фрагментах, передав параметр verbose (-v).

Удаление постоянных настроек кластера

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

Инструмент elasticsearch-node remove-settings позволяет принудительно удалить эти постоянные настройки из состояния кластера на диске. Инструмент принимает список настроек, которые должны быть удалены, а также поддерживает шаблоны подстановок.

Предполагаемое использование:

  • Остановите узел
  • Запустите elasticsearch-node remove-settings name-of-setting-to-remove на узле
  • Повторите для всех других узлов, пригодных для роли мастер
  • Запустите узлы

Удаление настроек индекса

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

Инструмент elasticsearch-node remove-index-settings позволяет принудительно удалить эти настройки индекса из состояния кластера на диске. Инструмент принимает список настроек индекса, которые должны быть удалены, а также поддерживает шаблоны подстановок.

Предполагаемое использование:

  • Остановите узел
  • Запустите elasticsearch-node remove-index-settings name-of-index-setting-to-remove на узле
  • Повторите для всех узлов
  • Запустите узлы

Удаление пользовательских метаданных из состояния кластера

Возможны ситуации, когда на узле присутствуют пользовательские метаданные, обычно предоставляемые плагинами, которые препятствуют запуску узла и загрузке кластера с диска.

Инструмент elasticsearch-node remove-customs позволяет принудительно удалить проблемные пользовательские метаданные. Инструмент принимает список имен пользовательских метаданных, которые должны быть удалены, а также поддерживает шаблоны подстановок.

Предполагаемое использование:

  • Остановите узел
  • Запустите elasticsearch-node remove-customs name-of-custom-to-remove на узле
  • Повторите для всех остальных узлов, пригодных для роли мастер
  • Запустите узлы

Восстановление данных после аварии

Иногда узлы Elasticsearch временно останавливаются, возможно, из-за необходимости выполнения задач по техническому обслуживанию или из-за сбоя оборудования. После устранения временной проблемы и перезапуска узла он присоединится к кластеру и продолжит работу нормально. В зависимости от вашей конфигурации ваш кластер может оставаться полностью доступным даже при остановке одного или нескольких узлов.

Иногда перезапуск узла после остановки может быть невозможен. Например, хост узла может иметь неполадки оборудования, которые невозможно устранить. Если кластер по-прежнему доступен, вы можете запустить новый узел на другом хосте, и Elasticsearch добавит этот узел в кластер вместо вышедшего из строя узла.

Каждый узел хранит свои данные в каталогах данных, определенных параметром path.data. Это означает, что в случае аварии вы также можете перезапустить узел, переместив его каталоги данных на другой хост, при условии, что эти каталоги данных можно восстановить с неисправного хоста.

Elasticsearch требует ответа от большинства узлов, пригодных для роли мастер, чтобы выбрать мастер и обновить состояние кластера. Это означает, что если у вас есть три узла, пригодных для роли мастер, кластер останется доступным, даже если один из них вышел из строя. Однако, если два из трех узлов, пригодных для роли мастер, выйдут из строя, кластер станет недоступным, пока хотя бы один из них не будет перезапущен.

В очень редких случаях может быть невозможно перезапустить достаточно узлов для восстановления доступности кластера. Если такая авария произойдет, вы должны создать новый кластер из последней копии резервной копии и повторно импортировать любые данные, которые были добавлены после создания этой копии резервной копии.

Однако, если авария достаточно серьёзная, то восстановление из последней резервной копии тоже может быть невозможно. К сожалению, в этом случае нет способа продолжить работу, не рискуя потерять данные, но, возможно, инструмент elasticsearch-node можно использовать для создания нового кластера, содержащего некоторые данные из вышедшего из строя кластера.

Обход проверок версий

Данные, которые Elasticsearch записывает на диск, предназначены для чтения текущей и ограниченной частью будущих версий. Их, как правило, нельзя прочитать с помощью более старых версий или версий, которые на больше чем на одну главную версию новее. Данные, хранящиеся на диске, включают версию узла, который их записал, и Elasticsearch проверяет, что она совместима с этой версией при запуске.

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

Чтобы обойти эту проверку, вы можете использовать инструмент elasticsearch-node override-version, чтобы перезаписать номер версии, хранящийся в пути к данным, на текущую версию, заставив Elasticsearch поверить, что он совместим с данными на диске.

Небезопасная инициализация кластера

Если хотя бы один узел, подходящий для роли мастер, остался, но невозможно перезапустить большинство из них, то команда elasticsearch-node unsafe-bootstrap небезопасно переопределит конфигурацию голосования кластера, как если бы выполнялся другой процесс инициализации кластера. Целевой узел может затем сформировать новый кластер самостоятельно, используя метаданные кластера, хранящиеся локально на целевом узле.

Эти действия могут привести к произвольной потере данных, так как целевой узел может не содержать последние метаданные кластера, и эти устаревшие метаданные могут сделать невозможным использование некоторых или всех индексов в кластере.

Поскольку небезопасное создание кластера формирует новый кластер, содержащий один узел, после его запуска необходимо использовать инструмент elasticsearch-node detach-cluster, чтобы мигрировать любые другие уцелевшие узлы из вышедшего из строя кластера в этот новый кластер.

При запуске инструмента elasticsearch-node unsafe-bootstrap он проанализирует состояние узла и запросит подтверждение перед выполнением любых действий. Перед запросом подтверждения он сообщает термин и версию состояния кластера на узле, на котором он запущен, следующим образом:

Current node cluster state (term, version) pair is (4, 12)

Если у вас есть выбор узлов, на которых запустить этот инструмент, вы должны выбрать тот, у которого термин как можно больше. Если есть более одного узла с одинаковым термином, выберите тот, у которого версия больше. Эта информация идентифицирует узел с самым свежим состоянием кластера, что сводит к минимуму количество данных, которые могут быть потеряны. Например, если первый узел сообщает (4, 12), а второй узел сообщает (5, 3), то второй узел предпочтительнее, поскольку его термин больше. Однако, если второй узел сообщает (3, 17), то предпочтительнее первый узел, поскольку его термин больше. Если второй узел сообщает (4, 10), то у него тот же термин, что и у первого узла, но меньшая версия, поэтому предпочтительнее первый узел.

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

Последовательность операций для использования этого инструмента следующая:

  1. Убедитесь, что вы действительно потеряли доступ как минимум к половине узлов, имеющих право быть мастерами, в кластере, и их нельзя исправить или восстановить, переместив их пути данных на здоровое оборудование.
  2. Остановите все оставшиеся узлы.
  3. Выберите один из оставшихся узлов, имеющих право быть мастерами, чтобы он стал новым избранным мастером, как описано выше.
  4. На этом узле выполните команду elasticsearch-node unsafe-bootstrap, как показано ниже. Убедитесь, что инструмент сообщил Master node was successfully bootstrapped.
  5. Запустите этот узел и убедитесь, что он избран мастером.
  6. Запустите инструмент elasticsearch-node detach-cluster, описанный ниже, на каждом другом узле в кластере.
  7. Запустите все остальные узлы и проверьте, что каждый из них присоединяется к кластеру.
  8. Изучите данные в кластере, чтобы выяснить, были ли потеряны какие-либо данные в ходе этого процесса.

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

Сообщение Master node was successfully bootstrapped не означает, что не было потери данных, это просто означает, что инструмент смог выполнить свою задачу.

Отсоединение узлов от их кластера

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

Для защиты от непреднамеренного присоединения к неправильному кластеру каждый кластер создает уникальный идентификатор, известный как UUID кластера, при первом запуске. Каждый узел записывает UUID своего кластера и отказывается присоединяться к кластеру с другим UUID.

Однако, если кластер узла навсегда вышел из строя, может быть желательно попытаться переместить его в новый кластер. Команда elasticsearch-node detach-cluster позволяет отсоединить узел от его кластера, сбросив его UUID кластера. Затем он может присоединиться к другому кластеру с другим UUID.

Например, после небезопасного создания кластера вам потребуется отсоединить все остальные уцелевшие узлы от их старого кластера, чтобы они могли присоединиться к новому, небезопасно созданному кластеру.

Небезопасное создание кластера возможно только в том случае, если есть как минимум один уцелевший узел, имеющий право быть мастером. Если оставшихся узлов, имеющих право быть мастерами, нет, то метаданные кластера полностью теряются. Однако отдельные узлы данных также содержат копию метаданных индекса, соответствующих их фрагментам. Это иногда позволяет новому кластеру импортировать эти фрагменты как висячие индексы. Иногда можно восстановить некоторые индексы после потери всех узлов, имеющих право быть мастерами, в кластере, создав новый кластер и затем используя команду elasticsearch-node detach-cluster для перемещения любых уцелевших узлов в этот новый кластер. После того, как новый кластер будет полностью сформирован, используйте API висячих индексов для перечисления, импорта или удаления любых висячих индексов.

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

Выполнение этой команды может привести к произвольной потере данных. Запускайте этот инструмент только в том случае, если вы понимаете и принимаете возможные последствия и исчерпали все другие возможности восстановления кластера.

Последовательность операций для использования этого инструмента следующая:

  1. Убедитесь, что вы действительно потеряли доступ ко всем узлам, имеющим право быть мастерами, в кластере, и их нельзя исправить или восстановить, переместив их пути данных на здоровое оборудование.
  2. Запустите новый кластер и убедитесь, что он работает. Этот кластер может состоять из одного или нескольких совершенно новых узлов, имеющих право быть мастерами, или может быть небезопасно созданным кластером, сформированным, как описано выше.
  3. Остановите все оставшиеся узлы данных.
  4. На каждом узле данных запустите инструмент elasticsearch-node detach-cluster, как показано ниже. Убедитесь, что инструмент сообщил Node was successfully detached from the cluster.
  5. При необходимости настройте каждый узел данных для обнаружения нового кластера.
  6. Запустите каждый узел данных и проверьте, что он присоединился к новому кластеру.
  7. Дождитесь завершения всех восстановлений и изучите данные в кластере, чтобы выяснить, были ли потеряны какие-либо данные в ходе этого процесса. Используйте API висячих индексов для перечисления, импорта или удаления любых висячих индексов.

Сообщение Node was successfully detached from the cluster не означает, что не было потери данных, это просто означает, что инструмент смог выполнить свою задачу.

Параметры

repurpose
Удалить избыточные данные при изменении ролей узла.
unsafe-bootstrap
Указывает на небезопасное создание этого узла в качестве нового одноузлового кластера.
detach-cluster
Указывает на небезопасное отсоединение этого узла от его кластера, чтобы он мог присоединиться к другому кластеру.
override-version
Перезаписывает номер версии, хранящийся в пути данных, чтобы узел мог начать работу, несмотря на несовместимость с данными на диске.
remove-settings
Принудительно удаляет предоставленные постоянные настройки кластера из состояния кластера на диске.
-E <KeyValuePair>
Настройка параметра.
-h, --help
Возвращает все параметры команды.
-s, --silent
Отображает минимальный вывод.
-v, --verbose
Отображает подробный вывод.

Примеры

Переназначение узла в качестве выделенного узла-мастера

В этом примере бывший узел данных переназначается в качестве выделенного узла-мастера. Сначала обновите настройки узла на node.roles: [ "master" ] в его файле конфигурации elasticsearch.yml. Затем запустите команду elasticsearch-node repurpose, чтобы найти и удалить избыточные данные фрагментов:

node$ ./bin/elasticsearch-node repurpose

    WARNING: Elasticsearch MUST be stopped before running this tool.

Found 2 shards in 2 indices to clean up
Use -v to see list of paths and indices affected
Node is being re-purposed as master and no-data. Clean-up of shard data will be performed.
Do you want to proceed?
Confirm [y/N] y
Node successfully repurposed to master and no-data.

Переназначение узла в качестве узла только для координации

В этом примере узел, который ранее содержал данные, переназначается в качестве узла только для координации. Сначала обновите настройки узла на node.roles: [] в его файле конфигурации elasticsearch.yml. Затем запустите команду elasticsearch-node repurpose, чтобы найти и удалить избыточные данные фрагментов и метаданные индекса:

node$./bin/elasticsearch-node repurpose

    WARNING: Elasticsearch MUST be stopped before running this tool.

Found 2 indices (2 shards and 2 index meta data) to clean up
Use -v to see list of paths and indices affected
Node is being re-purposed as no-master and no-data. Clean-up of index data will be performed.
Do you want to proceed?
Confirm [y/N] y
Node successfully repurposed to no-master and no-data.

Удаление постоянных настроек кластера

Если ваши узлы содержат постоянные настройки кластера, которые препятствуют формированию кластера, т. е. их нельзя удалить с помощью API Настроек обновления кластера, вы можете запустить следующие команды, чтобы удалить одну или несколько настроек кластера.

node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.exporters.my_exporter.host

    WARNING: Elasticsearch MUST be stopped before running this tool.

The following settings will be removed:
xpack.monitoring.exporters.my_exporter.host: "10.1.2.3"

You should only run this tool if you have incompatible settings in the
cluster state that prevent the cluster from forming.
This tool can cause data loss and its use should be your last resort.

Do you want to proceed?

Confirm [y/N] y

Settings were successfully removed from the cluster state

Вы также можете использовать подстановочные знаки для удаления нескольких настроек, например, используя

node$ ./bin/elasticsearch-node remove-settings xpack.monitoring.*

Удаление настроек индекса

Если ваши индексы содержат настройки индекса, которые препятствуют формированию кластера, вы можете запустить следующую команду, чтобы удалить одну или несколько настроек индекса.

node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.foo

    WARNING: Elasticsearch MUST be stopped before running this tool.

You should only run this tool if you have incompatible index settings in the
cluster state that prevent the cluster from forming.
This tool can cause data loss and its use should be your last resort.

Do you want to proceed?

Confirm [y/N] y

Index settings were successfully removed from the cluster state

Вы также можете использовать подстановочные знаки для удаления нескольких настроек индекса, например, используя

node$ ./bin/elasticsearch-node remove-index-settings index.my_plugin.*

Удаление пользовательских метаданных из состояния кластера

Если состояние кластера на диске содержит пользовательские метаданные, которые препятствуют запуску узла и загрузке состояния кластера, вы можете запустить следующие команды для удаления этих пользовательских метаданных.

node$ ./bin/elasticsearch-node remove-customs snapshot_lifecycle

    WARNING: Elasticsearch MUST be stopped before running this tool.

The following customs will be removed:
snapshot_lifecycle

You should only run this tool if you have broken custom metadata in the
cluster state that prevents the cluster state from being loaded.
This tool can cause data loss and its use should be your last resort.

Do you want to proceed?

Confirm [y/N] y

Customs were successfully removed from the cluster state

Небезопасное создание кластера

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

  • Запустите инструмент на первом оставшемся узле, но ответьте n на шаге подтверждения.
node_1$ ./bin/elasticsearch-node unsafe-bootstrap

    WARNING: Elasticsearch MUST be stopped before running this tool.

Current node cluster state (term, version) pair is (4, 12)

You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.

Do you want to proceed?

Confirm [y/N] n
  • Запустите инструмент на втором оставшемся узле и снова ответьте n на шаге подтверждения.
node_2$ ./bin/elasticsearch-node unsafe-bootstrap

    WARNING: Elasticsearch MUST be stopped before running this tool.

Current node cluster state (term, version) pair is (5, 3)

You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.

Do you want to proceed?

Confirm [y/N] n
  • Поскольку второй узел имеет больший срок, он имеет более свежий состояние кластера, поэтому лучше небезопасно запустить кластер, используя этот узел:
node_2$ ./bin/elasticsearch-node unsafe-bootstrap

    WARNING: Elasticsearch MUST be stopped before running this tool.

Current node cluster state (term, version) pair is (5, 3)

You should only run this tool if you have permanently lost half or more
of the master-eligible nodes in this cluster, and you cannot restore the
cluster from a snapshot. This tool can cause arbitrary data loss and its
use should be your last resort. If you have multiple surviving master
eligible nodes, you should run this tool on the node with the highest
cluster state (term, version) pair.

Do you want to proceed?

Confirm [y/N] y
Master node was successfully bootstrapped

Отсоединение узлов от их кластера

После небезопасного запуска нового кластера, выполните команду elasticsearch-node detach-cluster, чтобы отсоединить все оставшиеся узлы от вышедшего из строя кластера, чтобы они могли присоединиться к новому кластеру:

node_3$ ./bin/elasticsearch-node detach-cluster

    WARNING: Elasticsearch MUST be stopped before running this tool.

You should only run this tool if you have permanently lost all of the
master-eligible nodes in this cluster and you cannot restore the cluster
from a snapshot, or you have already unsafely bootstrapped a new cluster
by running `elasticsearch-node unsafe-bootstrap` on a master-eligible
node that belonged to the same cluster as this node. This tool can cause
arbitrary data loss and its use should be your last resort.

Do you want to proceed?

Confirm [y/N] y
Node was successfully detached from the cluster

Обход проверки версий

Выполните команду elasticsearch-node override-version, чтобы перезаписать версию, хранящуюся в пути к данным, чтобы узел мог начать работу, несмотря на несовместимость с данными, хранящимися в пути к данным:

node$ ./bin/elasticsearch-node override-version

    WARNING: Elasticsearch MUST be stopped before running this tool.

This data path was last written by Elasticsearch version [x.x.x] and may no
longer be compatible with Elasticsearch version [y.y.y]. This tool will bypass
this compatibility check, allowing a version [y.y.y] node to start on this data
path, but a version [y.y.y] node may not be able to read this data or may read
it incorrectly leading to data loss.

You should not use this tool. Instead, continue to use a version [x.x.x] node
on this data path. If necessary, you can use reindex-from-remote to copy the
data from here into an older cluster.

Do you want to proceed?

Confirm [y/N] y
Successfully overwrote this node's metadata to bypass its version compatibility checks.

© 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/node-tool.html

Spec-Zone.ru

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