В какой-то момент времени возможно вы придёте к тому, что захотите контролировать на каком именно узле должны находиться определённые shards
. Для этого вы как раз можете использовать функцию перемещения shard
от горячего хоста к теплому. Это также поможет вам хранить уже не особо нужные данные на более дешевом оборудовании, которое обрабатывает только READ-ONLY
операции и делает это не так часто, если мы говорим о теплых узлах. Горячие узлы наоборот должны максимально быть заточены на запись и обработку данных, при этом не имея большого дискового пространства (конечно всё зависит от количества данных).
Для горячих узлов важными серверными компонентами являются CPU
и IO операции
.
Фильтрация Shard
Для того чтобы задать на каком именно узле Elasticsearch хранить shards
используются:
- node.attr - задаёт наименование узла
- index.routing.allocation - назначает на какие узлы перемещать
shards
Параметры index.routing.allocation поддерживают три типа фильтров: include, exclude и require.
тип | действие |
---|---|
include | Присвойте индекс узлу, имя (node.attr) которого имеет хотя бы одно из значений, разделенных запятыми. |
require | Присвойте индекс узлу, имя (node.attr) которого имеет все значения, разделенные запятыми. |
exclude | Присвойте индекс узлу, имя (node.attr) которого не имеет значений, разделенных запятыми. |
Представим ситуации что мы разбили наши узлы на 3 категории по дисковому месту (size) и хотим, чтобы my-index
хранился именно на среднем по месту узле (medium).
1.Для начала зададим всем атрибут size
с разными значениями для всех узлов.
sudo vim /etc/elasticsearch/elasticsearch.yml
node.attr.size: big
node.attr.size: small
node.attr.size: medium
2.Далее заставляем index my-index
храниться на узле со значением size: medium
PUT my-index
{
"settings": {
"index.routing.allocation.require.size": "medium"
}
}
У каждого узла может быть множество атрибутов заданных с помощью node.attr. Соответственно вы можете использовать множественную фильтрации для index.routing.allocation.
Также вы можете использовать и встроенные атрибуты:
- _name - Сопоставляет узлы по имени узла
- _host_ip - Сопоставление узлов по IP-адресу хоста
- _publish_ip - Сопоставление узлов по публичному IP-адресу
- _ip - Соответствует либо _host_ip, либо _publish_ip
- _host - Сопоставляет узлы по имени хоста
- _id - Сопоставляет узлы по id
В итоге
- Вы можете настраивать узлы в кластере для использования архитектуры горячего и теплого типа.
- Используйте горячие узлы для индексации
- Используйте теплые узлы для старых индексов, доступных только для чтения
- Контроль расположения index называется Shard filtering
Комментарии