Настройка политики индексов в Yandex Managed Service for OpenSearch
С помощью политик можно автоматически выполнять определенные операции с индексами. Например, чтобы повысить безопасность и доступность данных, вы можете установить политику, которая будет создавать новый индекс при выполнении хотя бы одного из условий:
- размер индекса превышает 50 ГБ;
- возраст индекса превышает 30 дней.
Чтобы настроить такую политику:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Подготовьте инфраструктуру:
ВручнуюС помощью Terraform-
Создайте кластер-приемник Managed Service for OpenSearch нужной вам конфигурации с публичный доступом к группе хостов с ролью
DATA
. -
Если вы используете группы безопасности в кластере, убедитесь, что они настроены правильно и допускают подключение к кластеру Managed Service for OpenSearch.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации opensearch-index-policy.tf
. В файле описаны:- сеть;
- подсеть;
- группа безопасности и правила, необходимые для подключения к кластеру Managed Service for OpenSearch;
- кластер Managed Service for OpenSearch.
-
Укажите в файле
opensearch-index-policy.tf
переменные:version
— версия OpenSearch.admin_password
— пароль администратора OpenSearch.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
-
Проверьте подключение к кластеру с помощью утилиты cURL
:curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --request GET 'https://<FQDN_хоста_OpenSearch_с_ролью_DATA>:9200/'
FQDN хоста можно получить со списком хостов в кластере.
При успешном подключении будет выведено похожее сообщение:
{ "name" : "....mdb.yandexcloud.net", "cluster_name" : "...", "cluster_uuid" : "...", "version" : { "distribution" : "opensearch", ... }, "tagline" : "The OpenSearch Project: https://opensearch.org/" }
Создайте политику
-
Создайте политику, которая переносит псевдоним в новый индекс (rollover):
curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/_plugins/_ism/policies/rollover_policy' \ --data ' { "policy": { "description": "Example rollover policy", "default_state": "rollover", "schema_version": 1, "states": [ { "name": "rollover", "actions": [ { "rollover": { "min_index_age": "1h", "min_primary_shard_size": "500b" } } ], "transitions": [] } ], "ism_template": { "index_patterns": ["log*"], "priority": 100 } } }'
Где:
min_index_age
— возраст индекса, по достижении которого будет создан новый индекс. Рекомендуемое значение — 30 дней (30d
).min_primary_shard_size
— размер одного из основных сегментов в индексе. По достижении этого размера будет создан новый индекс. Рекомендуемое значение — 50 ГБ (50gb
).index_patterns
— шаблон имени для нового индекса.
Чтобы быстро проверить работу политики, в примере запроса рекомендуемые значения уменьшены до 1 часа и 500 байт.
-
Настройте шаблон индекса, в котором назначьте политике псевдоним
log
:curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/_index_template/ism_rollover?pretty' \ --data ' { "index_patterns": ["log*"], "template": { "settings": { "plugins.index_state_management.rollover_alias": "log" } } }'
Прикрепите политику к индексу
-
Создайте индекс
log-000001
с псевдонимомlog
:curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request PUT 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/log-000001?pretty' \ --data ' { "aliases": { "log": { "is_write_index": true } } }'
-
Проверьте, прикреплена ли политика к индексу:
curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request GET 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/_plugins/_ism/explain/log-000001?pretty'
В результатах будет выведено похожее сообщение:
{ "log-000001" : { "index.plugins.index_state_management.policy_id" : "rollover_policy", "index.opendistro.index_state_management.policy_id" : "rollover_policy", "index" : "log-000001", "index_uuid" : "...", "policy_id" : "rollover_policy", "enabled" : true }, "total_managed_indices" : 1 }
Проверьте работу политики
-
Добавьте в индекс документ:
curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request POST 'https://<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/log/_doc?pretty' \ --data ' { "num": "101", "name": "Valya", "age": "25" }'
-
Через 5 минут после создания документа получите список индексов:
curl \ --user admin:<пароль> \ --cacert ~/.opensearch/root.crt \ --header 'Content-Type: application/json' \ --request GET '<адрес_хоста_OpenSearch_с_ролью_DATA>:9200/_cat/indices?pretty'
5 минут — это время по умолчанию, через которое повторяется проверка условий политики.
В результатах вывода должны отображаться индексы
log-000001
иlog-000002
:yellow open log-000001 ... 1 1 0 0 5.1kb 5.1kb yellow open log-000002 ... 1 1 0 0 208b 208b
-
(Опционально) Через час после создания индекса снова получите список индексов.
В результатах вывода должны отображаться индексы
log-000001
,log-000002
,log-000003
:yellow open log-000001 ... 1 1 0 0 5.1kb 5.1kb yellow open log-000002 ... 1 1 0 0 208b 208b yellow open log-000003 ... 1 1 0 0 0b 0b
1 час — это условие политики для создания нового индекса.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
В терминале перейдите в директорию с планом инфраструктуры.
-
Удалите конфигурационный файл
opensearch-index-policy.tf
. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в конфигурационном файле
opensearch-index-policy.tf
, будут удалены. -