Различные настройки кластера
Настройка имени кластера
Узел может присоединиться к кластеру только в том случае, если он разделяет его cluster.name со всеми другими узлами в кластере. По умолчанию имя — elasticsearch, но вы должны изменить его на подходящее имя, описывающее назначение кластера.
cluster.name: logging-prod
Не используйте одинаковые имена кластеров в разных средах. В противном случае узлы могут присоединиться к неправильному кластеру.
Изменение имени кластера требует полной перезагрузки кластера.
Метаданные
Весь кластер можно установить в режим только для чтения с помощью следующей настройки:
-
cluster.blocks.read_only - (Динамическая) Установка всего кластера в режим только для чтения (индексы не принимают операции записи), метаданные не разрешается изменять (создание или удаление индексов). Значение по умолчанию —
false. -
cluster.blocks.read_only_allow_delete - (Динамическая) Аналогично
cluster.blocks.read_only, но позволяет удалять индексы для освобождения ресурсов. Значение по умолчанию —false.
Не полагайтесь на эту настройку для предотвращения изменений в вашем кластере. Любой пользователь с доступом к API для обновления настроек кластера может снова сделать кластер доступным для записи.
Пределы фрагментов кластера
Существует ограничение на количество фрагментов в кластере, основанное на количестве узлов в кластере. Это сделано для предотвращения бесконтрольного процесса создания слишком большого числа фрагментов, что может навредить производительности и, в крайних случаях, дестабилизировать ваш кластер.
Эти ограничения предназначены как гарантия безопасности от бесконтрольного создания фрагментов и не являются рекомендациями по настройке. Точное количество фрагментов, которое ваш кластер может безопасно поддерживать, зависит от конфигурации вашего оборудования и рабочей нагрузки и может быть меньше, чем значения по умолчанию.
Не рекомендуется увеличивать эти ограничения за пределами значений по умолчанию. Кластеры с большим количеством фрагментов могут работать хорошо в нормальной работе, но могут очень долго восстанавливаться от временных сбоев, таких как разрыв сети или неожиданная перезагрузка узла, и могут столкнуться с проблемами при выполнении задач по обслуживанию, таких как постепенная перезагрузка или обновление.
Если операция, такая как создание нового индекса, восстановление снимка индекса или открытие закрытого индекса, приведет к превышению предела количества фрагментов в кластере, операция завершится ошибкой, указывающей на ограничение фрагментов. Для решения этой проблемы масштабируйте свой кластер, добавив узлы, или удалите некоторые индексы, чтобы уменьшить количество фрагментов ниже лимита.
Если кластер уже превысил предел, возможно, из-за изменений в членстве узлов или изменений настроек, все операции, которые создают или открывают индексы, завершатся ошибкой.
Значение по умолчанию для лимита фрагментов кластера составляет 1000 фрагментов на узел данных без заморозки для обычных (не замороженных) индексов и 3000 фрагментов на узел данных с заморозкой для замороженных индексов. Оба первичных и реплицируемых фрагмента всех открытых индексов учитываются при подсчёте лимита, включая неназначенные фрагменты. Например, открытый индекс с 5 первичными фрагментами и 2 репликами учитывается как 15 фрагментов. Закрытые индексы не учитываются в подсчёте фрагментов.
Вы можете динамически изменить предел фрагментов кластера с помощью следующей настройки:
-
cluster.max_shards_per_node -
(Динамическая) Ограничивает общее количество первичных и реплицируемых фрагментов для кластера. Elasticsearch вычисляет лимит следующим образом:
cluster.max_shards_per_node * number of non-frozen data nodesФрагменты закрытых индексов не учитываются при подсчёте лимита. Значение по умолчанию —
1000. Кластер без узлов данных не имеет ограничений.Elasticsearch отклоняет любой запрос, создающий больше фрагментов, чем это позволяет лимит. Например, кластер с настройкой
cluster.max_shards_per_nodeсо значением100и тремя узлами данных имеет лимит фрагментов 300. Если в кластере уже имеется 296 фрагментов, Elasticsearch отклоняет любой запрос, который добавляет пять или более фрагментов в кластер.Обратите внимание, что если
cluster.max_shards_per_nodeустановлено выше значения по умолчанию, могут также потребоваться изменения для лимитов mmap count и открытых файловых дескрипторов.Обратите внимание, что для замороженных фрагментов есть свой независимый лимит.
-
cluster.max_shards_per_node.frozen -
(Динамическая) Ограничивает общее количество первичных и реплицируемых замороженных фрагментов для кластера. Elasticsearch вычисляет лимит следующим образом:
cluster.max_shards_per_node.frozen * number of frozen data nodesФрагменты закрытых индексов не учитываются при подсчёте лимита. Значение по умолчанию —
3000. Кластер без замороженных узлов данных не имеет ограничений.Elasticsearch отклоняет любой запрос, создающий больше замороженных фрагментов, чем это позволяет лимит. Например, кластер с настройкой
cluster.max_shards_per_node.frozenсо значением100и тремя замороженными узлами данных имеет лимит замороженных фрагментов 300. Если в кластере уже имеется 296 фрагментов, Elasticsearch отклоняет любой запрос, который добавляет пять или более замороженных фрагментов в кластер.
Эти ограничения применяются только к действиям, которые создают фрагменты, и не ограничивают количество фрагментов, назначенных каждому узлу. Чтобы ограничить количество фрагментов, назначенных каждому узлу, используйте настройку cluster.routing.allocation.total_shards_per_node.
Пользовательские метаданные кластера
Пользовательские метаданные можно сохранять и извлекать с помощью API настроек кластера. Это можно использовать для хранения произвольных данных о кластере, которые редко изменяются, без необходимости создания индекса для их хранения. Эти данные могут храниться с помощью любого ключа, начинающегося с cluster.metadata.. Например, чтобы сохранить адрес электронной почты администратора кластера под ключом cluster.metadata.administrator, выполните этот запрос:
resp = client.cluster.put_settings(
persistent={
"cluster.metadata.administrator": "sysadmin@example.com"
},
)
print(resp) response = client.cluster.put_settings(
body: {
persistent: {
'cluster.metadata.administrator' => 'sysadmin@example.com'
}
}
)
puts response const response = await client.cluster.putSettings({
persistent: {
"cluster.metadata.administrator": "sysadmin@example.com",
},
});
console.log(response); PUT /_cluster/settings
{
"persistent": {
"cluster.metadata.administrator": "sysadmin@example.com"
}
} Пользовательские метаданные кластера не предназначены для хранения конфиденциальной информации. Любая информация, хранящаяся в пользовательских метаданных кластера, будет доступна любому пользователю с доступом к API получения настроек кластера и записывается в журналы Elasticsearch.
Элементы-слепки индексов
Состояние кластера поддерживает слепки индексов, чтобы явно обозначить индексы, которые были удалены. Количество слепков, хранящихся в состоянии кластера, контролируется следующей настройкой:
-
cluster.indices.tombstones.size - (Статическая) Слепки индексов предотвращают присоединение узлов, которые не являются частью кластера при удалении, от присоединения к кластеру и повторного импорта индекса, как если бы удаление не выполнялось. Чтобы предотвратить чрезмерное разрастание состояния кластера, мы сохраняем только последние
cluster.indices.tombstones.sizeудалений, что по умолчанию равно 500. Вы можете увеличить это значение, если ожидаете, что узлы будут отсутствовать в кластере и пропустят больше 500 удалений. Мы считаем, что это редкий случай, поэтому значение по умолчанию. Слепки не занимают много места, но мы также считаем, что число 50000, вероятно, слишком велико.
Если Elasticsearch обнаруживает данные индекса, отсутствующие в текущем состоянии кластера, эти индексы считаются висящими. Например, это может произойти, если вы удалите более cluster.indices.tombstones.size индексов, в то время как узел Elasticsearch был оффлайн.
Вы можете использовать API висящих индексов, чтобы управлять этой ситуацией.
Журналирование
Настройки, управляющие ведением журнала, можно динамически обновлять с префиксом logger.. Например, чтобы увеличить уровень ведения журнала модуля indices.recovery до DEBUG, выполните этот запрос:
resp = client.cluster.put_settings(
persistent={
"logger.org.elasticsearch.indices.recovery": "DEBUG"
},
)
print(resp) response = client.cluster.put_settings(
body: {
persistent: {
'logger.org.elasticsearch.indices.recovery' => 'DEBUG'
}
}
)
puts response const response = await client.cluster.putSettings({
persistent: {
"logger.org.elasticsearch.indices.recovery": "DEBUG",
},
});
console.log(response); PUT /_cluster/settings
{
"persistent": {
"logger.org.elasticsearch.indices.recovery": "DEBUG"
}
} Распределение задач в постоянном режиме
Плагины могут создавать тип задач, называемый постоянными задачами. Эти задачи, как правило, долгоживущие и хранятся в состоянии кластера, что позволяет возродить их после полной перезагрузки кластера.
Каждый раз при создании постоянной задачи мастер-узел отвечает за назначение задачи узлу кластера, а назначенный узел затем получит задачу и выполнит ее локально. Процесс назначения постоянных задач узлам контролируется следующими настройками:
-
cluster.persistent_tasks.allocation.enable -
(Динамический) Включить или отключить распределение для постоянных задач:
-
all- (по умолчанию) Разрешает назначение постоянных задач узлам -
none- Не разрешаются никакие распределения для постоянных задач
Это настройка не влияет на постоянные задачи, которые уже выполняются. Только вновь созданные постоянные задачи или задачи, которые необходимо переназначить (например, после того, как узел покинул кластер), будут затронуты этой настройкой.
-
-
cluster.persistent_tasks.allocation.recheck_interval - (Динамический) Мастер-узел автоматически проверяет, требуется ли назначить постоянные задачи при существенном изменении состояния кластера. Однако могут быть и другие факторы, такие как использование памяти, которые влияют на возможность назначения постоянных задач узлам, но не вызывают изменения состояния кластера. Эта настройка контролирует, как часто выполняются проверки назначения для реакции на эти факторы. По умолчанию — 30 секунд. Минимальное допустимое значение — 10 секунд.
© 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/misc-cluster-settings.html