[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for OpenSearch](../index.md) > [Пошаговые инструкции](index.md) > Кластеры > Управление хостами кластера > Управление группами хостов

# Управление группами хостов OpenSearch


{% note info %}

В [регионе Казахстан](../../overview/concepts/region.md) доступны только [платформы](../../compute/concepts/vm-platforms.md#standard-platforms) `standard-v3` (Intel Ice Lake) и `standard-v3-t4i` (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.

{% endnote %}


В кластере Managed Service for OpenSearch вы можете управлять [группами хостов](../concepts/host-roles.md):

* [Получить список групп хостов в кластере](#list-groups).
* [Создать группу хостов](#add-host-group).
* [Изменить конфигурацию группы хостов](#update-host-group), в том числе добавить в нее новые хосты или удалить их.
* [Удалить группу хостов](#delete-host-group).

Также вы можете [получить список хостов в кластере](#list-hosts).

О миграции групп хостов в кластере Managed Service for OpenSearch в другую [зону доступности](../../overview/concepts/geo-scope.md) читайте в [инструкции](host-migration.md).

## Получить список групп хостов в кластере {#list-groups}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога.
    1. Перейдите в сервис **Managed Service for&nbsp;OpenSearch**.
    1. Нажмите на имя нужного кластера, затем выберите вкладку ![host-groups.svg](../../_assets/console-icons/copy-transparent.svg) **Группы хостов**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы получить список групп хостов в кластере, запросите информацию о кластере OpenSearch:

    ```bash
    yc managed-opensearch cluster get <имя_или_идентификатор_кластера>
    ```

    Список групп хостов указан в параметрах `config.opensearch.node_groups` и `config.dashboards.node_groups`.

    Имя и идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Воспользуйтесь методом [Cluster.Get](../api-ref/Cluster/get.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

        ```bash
        curl \
            --request GET \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>'
        ```

        Идентификатор кластера можно запросить со [списком кластеров в каталоге](#list-clusters).

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/get.md#yandex.cloud.mdb.opensearch.v1.Cluster).

        Доступные группы хостов указаны в параметрах `nodeGroups`.

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
    1. Воспользуйтесь вызовом [ClusterService.Get](../api-ref/grpc/Cluster/get.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d '{
                  "cluster_id": "<идентификатор_кластера>"
                }' \
            mdb.api.yandexcloud.kz:443 \
            yandex.cloud.mdb.opensearch.v1.ClusterService.Get
        ```

        Идентификатор кластера можно запросить со [списком кластеров в каталоге](#list-clusters).

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/get.md#yandex.cloud.mdb.opensearch.v1.Cluster).

        Доступные группы хостов указаны в параметрах `nodeGroups`.

{% endlist %}

## Создать группу хостов {#add-host-group}

При создании групп хостов действуют ограничения:

* В кластере Managed Service for OpenSearch может быть только одна группа хостов `Dashboards`.
* Если вы добавляете группу хостов `OpenSearch` и назначаете хостам роль `MANAGER`, минимальное количество хостов с такой ролью — три.

{% note warning %}

Если вы добавите в кластер группу хостов с ролью `MANAGER`, где эта роль назначена хостам с ролью `DATA`, такую группу будет невозможно удалить. Вернуть прежнюю конфигурацию хостов можно только [восстановив кластер из резервной копии](cluster-backups.md#restore).

{% endnote %}

Чтобы создать группу хостов:

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога.
    1. Перейдите в сервис **Managed Service for&nbsp;OpenSearch**.
    1. Нажмите на имя нужного кластера, затем выберите вкладку ![host-groups.svg](../../_assets/console-icons/copy-transparent.svg) **Группы хостов**.
    1. Нажмите кнопку **Создать группу хостов**.
    1. Укажите параметры группы:

        * [Тип группы](../concepts/host-roles.md): `OpenSearch` или `Dashboards`.
        * Имя. Оно должно быть уникальным в кластере.
        * Для группы хостов `OpenSearch` выберите [роль хостов](../concepts/host-roles.md).
        * Платформу, тип и класс хостов.

            Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты ноды OpenSearch. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).

        * [Тип диска](../concepts/storage.md) и объем хранилища, который будет использоваться для данных.

            От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
            
            * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
            * Локальные SSD-диски:
                * для платформы **Intel Cascade Lake** — с шагом 100 ГБ;
                * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
            * Нереплицируемые SSD-диски — с шагом 93 ГБ.

        * (Опционально) Настройте автоматическое увеличение размера диска:

            * В поле **Увеличивать размер** задайте соответствующие условия, чтобы:
            
                * Размер хранилища увеличился в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window), когда хранилище окажется заполнено более чем на указанную долю (%). Если вы задали этот параметр, настройте расписание окна обслуживания.
                * Размер хранилища увеличился незамедлительно, когда хранилище окажется заполнено более чем на указанную долю (%).
                
                    {% note warning %}
            
                    Если заданы оба условия, порог для незамедлительного увеличения должен быть выше, чем для планового.
            
                    {% endnote %}
            
            * В поле **Максимальный размер хранилища** укажите максимальный размер хранилища после увеличения.
            
            
            {% note warning %}
            
            * Размер хранилища не может быть уменьшен после автоматического увеличения.
            * Во время изменения размера хранилища хосты кластера будут недоступны.
            
            {% endnote %}

        * Расположение хостов по зонам доступности и подсетям.

        * Количество создаваемых хостов.

        
        * Включите опцию **Публичный доступ**, если вы хотите, чтобы к хостам можно было [подключаться](connect/index.md) через интернет.


    1. Нажмите кнопку **Создать группу хостов**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы создать группу хостов, выполните команду:

    
    ```bash
    yc managed-opensearch node-group add --cluster-name <имя_кластера> \
       --opensearch-node-group name=<имя_группы_хостов_OpenSearch>,`
                              `resource-preset-id=<класс_хостов>,`
                              `disk-size=<размер_диска_в_байтах>,`
                              `disk-type-id=<тип_диска>,`
                              `hosts-count=<количество_хостов_в_группе>,`
                              `zone-ids=<зоны_доступности>,`
                              `subnet-names=<имена_подсетей>,`
                              `assign-public-ip=<разрешить_публичный_доступ_к_хостам>,`
                              `roles=<роли_хостов> \
       --dashboards-node-group name=<имя_группы_хостов_Dashboards>,`
                              `resource-preset-id=<класс_хостов>,`
                              `disk-size=<размер_диска_в_байтах>,`
                              `disk-type-id=<тип_диска>,`
                              `hosts-count=<количество_хостов_в_группе>,`
                              `zone-ids=<зоны_доступности>,`
                              `subnet-names=<имена_подсетей>,`
                              `assign-public-ip=<разрешить_публичный_доступ_к_хостам>
    ```


    В команде укажите нужные параметры в зависимости от того, какую группу хостов вы хотите создать:

    * `--opensearch-node-group` — конфигурация группы хостов `OpenSearch`, где:
    
       * `resource-preset-id` — класс хостов. Он определяет технические характеристики виртуальных машин, на которых будут развернуты узлы OpenSearch. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
       * `disk-size` — размер диска в байтах. Минимальное и максимальное значения зависят от выбранного класса хостов.
       * `disk-type-id` — [тип диска](../concepts/storage.md).
       * `zone-ids` — [зоны доступности](../../overview/concepts/geo-scope.md). Несколько зон указываются через запятую и в квадратных скобках. Например:
    
          ```bash
          zone-ids=[ru-central1-a,ru-central1-b,ru-central1-d]
          ```
    
       
       * `subnet-names` — имена подсетей в указанных зонах доступности. Несколько подсетей указываются через запятую и в квадратных скобках. Например:
    
          ```bash
          subnet-names=[default-ru-central1-a,default-ru-central1-b,default-ru-central1-d]
          ```
    
          Вместо параметра `subnet-names` можно указать параметр `subnet-ids` с идентификаторами подсетей. Несколько идентификаторов указываются через запятую и в квадратных скобках. Например:
    
          ```bash
          subnet-ids=[e9bp8qmchqh2********,e2l963gkhobo********,fl8klaabecc3********]
          ```
    
    
       * `roles` — [роли хостов](../concepts/host-roles.md). Возможные значения:
    
          * `data` — предоставляется только роль `DATA`;
          * `manager` — предоставляется только роль `MANAGER`;
          * `data+manager` или `manager+data` — предоставляются обе роли.
    
    * `--dashboards-node-group` — конфигурация группы хостов `Dashboards`. Настраивается так же, как группа хостов `OpenSearch`, за исключением ролей хостов. Для группы `Dashboards` роли настраивать не нужно.

- Terraform {#tf}

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        О том, как создать такой файл, в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Managed Service for OpenSearch в [документации провайдера Terraform](../../terraform/resources/mdb_opensearch_cluster.md).

    1. Чтобы создать группу хостов `OpenSearch`, добавьте блок `node_groups` в блок `opensearch`:

        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          config {
            opensearch {
              ...
              node_groups {
                name             = "<имя_группы_виртуальных_хостов>"
                assign_public_ip = <разрешить_публичный_доступ_к_хостам>
                hosts_count      = <количество_хостов>
                zone_ids         = ["<список_зон_доступности>"]
                subnet_ids       = ["<список_идентификаторов подсетей>"]
                roles            = ["<список_ролей>"]
                resources {
                  resource_preset_id = "<класс_хоста>"
                  disk_size          = <размер_хранилища_в_байтах>
                  disk_type_id       = "<тип_диска>"
                }
              }
            }
            ...
          }
        }
        ```

        Где:

        * `assign_public_ip` — публичный доступ к хосту: `true` или `false`.
        * `roles` — роли хостов: `DATA` и `MANAGER`.

    1. Чтобы создать группу хостов `Dashboards`, добавьте блок `dashboards` в блок `config`:

        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          config {
            ...
            dashboards {
              node_groups {
               name             = "<имя_группы_виртуальных_хостов>"
                assign_public_ip = <разрешить_публичный_доступ_к_хостам>
                hosts_count      = <количество_хостов>
                zone_ids         = ["<список_зон_доступности>"]
                subnet_ids       = ["<список_идентификаторов подсетей>"]
                resources {
                  resource_preset_id = "<класс_хоста>"
                  disk_size          = <размер_хранилища_в_байтах>
                  disk_type_id       = "<тип_диска>"
                }
              }
            }
          }
        }
        ```

        Где `assign_public_ip` — публичный доступ к хосту: `true` или `false`.

        В кластере может быть только одна группа хостов `Dashboards`.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        {% note warning "Ограничения по времени" %}
        
        Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:
        
        * создание, в том числе путем восстановления из резервной копии, — 30 минут;
        * изменение — 60 минут;
        * удаление — 15 минут.
        
        Операции, длящиеся дольше указанного времени, прерываются.
        
        {% cut "Как изменить эти ограничения?" %}
        
        Добавьте к описанию кластера блок `timeouts`, например:
        
        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          timeouts {
            create = "1h30m" # Полтора часа
            update = "2h"    # 2 часа
            delete = "30m"   # 30 минут
          }
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        
        ```json
        {
            "nodeGroupSpec": {
                "name": "<название_группы_хостов>",
                "resources": {
                    "resourcePresetId": "<класс_хостов>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                },
                "roles": ["<роль_1>","<роль_2>"],
                "hostsCount": "<число_хостов>",
                "zoneIds": [
                    "<зона_доступности_1>",
                    "<зона_доступности_2>",
                    "<зона_доступности_3>"
                ],
                "subnetIds": [
                    "<идентификатор_подсети_1>",
                    "<идентификатор_подсети_2>",
                    "<идентификатор_подсети_3>"
                ],
                "assignPublicIp": <разрешить_публичный_доступ_к_хостам>,
                "diskSizeAutoscaling": {
                    "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                    "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                    "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
            }
        }
        ```


        Где `nodeGroups` — настройки хостов:

        * `name` — имя группы хостов.
        * `resources` — ресурсы кластера:

            * `resourcePresetId` — [класс хостов](../concepts/instance-types.md);
            * `diskSize` — размер диска в байтах;
            * `diskTypeId` — [тип диска](../concepts/storage.md).

        * `roles` (только для хостов `OpenSearch`) — список [ролей хостов](../concepts/host-roles.md): `DATA` или `MANAGER`. На одну группу можно назначить одну или обе роли.
        * `hostsCount` — количество хостов в группе. Минимальное число хостов `DATA` и `Dashboards` — один, хостов `MANAGER` — три.
        * `zoneIds` — список зон доступности, где размещаются хосты кластера.

        
        * `subnetIds` — список идентификаторов подсетей.
        * `assignPublicIp` — разрешение на [подключение](connect/index.md) к хосту из интернета: `true` или `false`.


        * `diskSizeAutoscaling` — настройки автоматического увеличения размера хранилища:

            * `plannedUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

                Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                Если вы задали этот параметр, [настройте расписание окна технического обслуживания](update.md#change-additional-settings) перед созданием группы хостов.

            * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

                Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                {% note warning %}

                Если заданы оба порога, значение `emergencyUsageThreshold` должно быть не меньше `plannedUsageThreshold`.

                {% endnote %}

            * `diskSizeLimit` — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

            
            {% note warning %}
            
            * Размер хранилища не может быть уменьшен после автоматического увеличения.
            * Во время изменения размера хранилища хосты кластера будут недоступны.
            
            {% endnote %}


    1. Чтобы создать группу хостов `OpenSearch`:

        1. Воспользуйтесь методом [Cluster.AddOpenSearchNodeGroup](../api-ref/Cluster/addOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request POST \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --header "Content-Type: application/json" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/opensearch/node_groups' \
                --data "@body.json"
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/addOpenSearchNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы создать группу хостов `Dashboards`:

        1. Воспользуйтесь методом [Cluster.AddDashboardsNodeGroup](../api-ref/Cluster/addDashboardsNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request POST \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --header "Content-Type: application/json" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/dashboards/node_groups' \
                --data "@body.json"
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/addDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        
        ```json
        {
            "node_group_spec": {
                "name": "<название_группы_хостов>",
                "resources": {
                    "resource_preset_id": "<класс_хостов>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                },
                "roles": ["<роль_1>","<роль_2>"],
                "hosts_count": "<число_хостов>",
                "zone_ids": [
                    "<зона_доступности_1>",
                    "<зона_доступности_2>",
                    "<зона_доступности_3>"
                ],
                "subnet_ids": [
                    "<идентификатор_подсети_1>",
                    "<идентификатор_подсети_2>",
                    "<идентификатор_подсети_3>"
                ],
                "assign_public_ip": <разрешить_публичный_доступ_к_хостам>,
                "disk_size_autoscaling": {
                    "planned_usage_threshold": "<процент_для_планового_увеличения>",
                    "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                    "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
            }
        }
        ```


        Где `node_groups` — настройки хостов:

        * `name` — имя группы хостов.
        * `resources` — ресурсы кластера:

            * `resource_preset_id` — [класс хостов](../concepts/instance-types.md);
            * `disk_size` — размер диска в байтах;
            * `disk_type_id` — [тип диска](../concepts/storage.md).

        * `roles` (только для хостов `OpenSearch`) — список [ролей хостов](../concepts/host-roles.md): `DATA` или `MANAGER`. На одну группу можно назначить одну или обе роли.
        * `hosts_count` — количество хостов в группе. Минимальное число хостов `DATA` и `Dashboards` — один, хостов `MANAGER` — три.
        * `zone_ids` — список зон доступности, где размещаются хосты кластера.

        
        * `subnet_ids` — список идентификаторов подсетей.
        * `assign_public_ip` — разрешение на [подключение](connect/index.md) к хосту из интернета: `true` или `false`.


        * `disk_size_autoscaling` — настройки автоматического увеличения размера хранилища:

            * `planned_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

                Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                Если вы задали этот параметр, [настройте расписание окна технического обслуживания](update.md#change-additional-settings) перед созданием группы хостов.

            * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

                Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                {% note warning %}

                Если заданы оба порога, значение `emergency_usage_threshold` должно быть не меньше `planned_usage_threshold`.

                {% endnote %}

            * `disk_size_limit` — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

            
            {% note warning %}
            
            * Размер хранилища не может быть уменьшен после автоматического увеличения.
            * Во время изменения размера хранилища хосты кластера будут недоступны.
            
            {% endnote %}


    1. Чтобы создать группу хостов `OpenSearch`:

        1. Воспользуйтесь вызовом [ClusterService.AddOpenSearchNodeGroup](../api-ref/grpc/Cluster/addOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d @ \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.AddOpenSearchNodeGroup \
                < body.json
            ```

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/addDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы создать группу хостов `Dashboards`:

        1. Воспользуйтесь вызовом [ClusterService.AddDashboardsNodeGroup](../api-ref/grpc/Cluster/addDashboardsNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d @ \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.AddDashboardsNodeGroup \
                < body.json
            ```

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/addDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить конфигурацию группы хостов {#update-host-group}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога.
    1. Перейдите в сервис **Managed Service for&nbsp;OpenSearch**.
    1. Нажмите на имя нужного кластера, затем выберите вкладку ![host-groups.svg](../../_assets/console-icons/copy-transparent.svg) **Группы хостов**.
    1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной группы и выберите пункт **Изменить**.
    1. Измените настройки группы хостов:

        * [Роль хостов](../concepts/host-roles.md) (только для группы хостов `OpenSearch`).
        * Платформу, тип и класс хостов.

            Класс хостов определяет технические характеристики виртуальных машин, на которых будут развернуты ноды OpenSearch. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).

        * Размер диска.

            
            Шаг, с которым можно изменить размер диска, зависит от типа диска:

            * Сетевые HDD- и SSD-диски — с шагом 1 ГБ.

            * Локальные SSD-диски:
                * для платформы **Intel Cascade Lake** — с шагом 100 ГБ;
                * для платформ **Intel Ice Lake** и **AMD Zen 4** — с шагом 368 ГБ.
            * Нереплицируемые SSD-диски — с шагом 93 ГБ.


        * (Опционально) Настройте автоматическое увеличение размера диска:

            * В поле **Увеличивать размер** задайте соответствующие условия, чтобы:
            
                * Размер хранилища увеличился в следующее [окно обслуживания](../concepts/maintenance.md#maintenance-window), когда хранилище окажется заполнено более чем на указанную долю (%). Если вы задали этот параметр, настройте расписание окна обслуживания.
                * Размер хранилища увеличился незамедлительно, когда хранилище окажется заполнено более чем на указанную долю (%).
                
                    {% note warning %}
            
                    Если заданы оба условия, порог для незамедлительного увеличения должен быть выше, чем для планового.
            
                    {% endnote %}
            
            * В поле **Максимальный размер хранилища** укажите максимальный размер хранилища после увеличения.
            
            
            {% note warning %}
            
            * Размер хранилища не может быть уменьшен после автоматического увеличения.
            * Во время изменения размера хранилища хосты кластера будут недоступны.
            
            {% endnote %}

        * Расположение хостов по зонам доступности и подсетям.

        * Количество хостов.

        
        * Публичный доступ к хостам.


    1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы изменить конфигурацию группы хостов, выполните команду:

    ```bash
    yc managed-opensearch node-group update --cluster-name <имя_кластера> \
       --node-group-name <имя_группы_хостов> \
       --resource-preset-id <класс_хостов> \
       --disk-size <размер_диска_в_байтах> \
       --hosts-count <количество_хостов_в_группе> \
       --roles <роли_хостов>
    ```

    В команде укажите нужные параметры в зависимости от того, какая конфигурация группы хостов нужна:

    * `--node-group-name` — имя группы хостов, которую нужно изменить.
    * `--resource-preset-id` — новый класс хостов. Он определяет технические характеристики виртуальных машин, на которых будут развернуты узлы OpenSearch. Все доступные варианты перечислены в разделе [Классы хостов](../concepts/instance-types.md).
    * `--disk-size` — новый размер диска в байтах. Минимальное и максимальное значения зависят от выбранного класса хостов.
    * `--hosts-count` — новое количество хостов в группе.
    * `--roles` — новые [роли хостов](../concepts/host-roles.md). Возможные значения:

      * `data` — предоставляется только роль `DATA`;
      * `manager` — предоставляется только роль `MANAGER`;
      * `data+manager` или `manager+data` — предоставляются обе роли.

- Terraform {#tf}

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        О том, как создать такой файл, в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Managed Service for OpenSearch в [документации провайдера Terraform](../../terraform/resources/mdb_opensearch_cluster.md).

    1. Чтобы изменить конфигурацию группы хостов `OpenSearch`, измените параметры нужного блока `node_groups` в блоке `opensearch`:

        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          opensearch {
            ...
            node_groups {
              name             = "<имя_группы_виртуальных_хостов>"
              assign_public_ip = <разрешить_публичный_доступ_к_хостам>
              hosts_count      = <количество_хостов>
              roles            = ["<список_ролей>"]
              resources {
                resource_preset_id = "<класс_хоста>"
                disk_size          = <размер_хранилища_в_байтах>
                disk_type_id       = "<тип_диска>"
              }
            }
            ...
          }
        }
        ```

        Где:

        * `assign_public_ip` — публичный доступ к хосту: `true` или `false`.
        * `roles` — роли хостов: `DATA` и `MANAGER`.

    1. Чтобы изменить конфигурацию группы хостов `Dashboards`, измените параметры блока `dashboards`:

        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          dashboards {
            node_groups {
              name             = "<имя_группы_виртуальных_хостов>"
              assign_public_ip = <разрешить_публичный_доступ_к_хостам>
              hosts_count      = <количество_хостов>
              resources {
                resource_preset_id = "<класс_хоста>"
                disk_size          = <размер_хранилища_в_байтах>
                disk_type_id       = "<тип_диска>"
              }
            }
          }
        }
        ```

        Где `assign_public_ip` — публичный доступ к хосту: `true` или `false`.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        {% note warning "Ограничения по времени" %}
        
        Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:
        
        * создание, в том числе путем восстановления из резервной копии, — 30 минут;
        * изменение — 60 минут;
        * удаление — 15 минут.
        
        Операции, длящиеся дольше указанного времени, прерываются.
        
        {% cut "Как изменить эти ограничения?" %}
        
        Добавьте к описанию кластера блок `timeouts`, например:
        
        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          timeouts {
            create = "1h30m" # Полтора часа
            update = "2h"    # 2 часа
            delete = "30m"   # 30 минут
          }
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask` (одной строкой через запятую).
        
        {% endnote %}

        
        ```json
        {
            "updateMask": "resources,hostsCount,zoneIds,subnetIds,assignPublicIp,diskSizeAutoscaling",
            "nodeGroupSpec": {
                "resources": {
                    "resourcePresetId": "<класс_хостов>",
                    "diskSize": "<размер_хранилища_в_байтах>",
                    "diskTypeId": "<тип_диска>"
                },
                "hostsCount": "<число_хостов>",
                "zoneIds": [
                    "<зона_доступности_1>",
                    "<зона_доступности_2>",
                    "<зона_доступности_3>"
                ],
                "subnetIds": [
                    "<идентификатор_подсети_1>",
                    "<идентификатор_подсети_2>",
                    "<идентификатор_подсети_3>"
                ],
                "assignPublicIp": <разрешить_публичный_доступ_к_хостам>,
                "diskSizeAutoscaling": {
                    "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                    "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                    "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
            }
        }
        ```


        Где:

        * `updateMask` — перечень изменяемых параметров в одну строку через запятую.
        * `nodeGroups` — настройки хостов:

            * `resources` — ресурсы кластера:

                * `resourcePresetId` — [класс хостов](../concepts/instance-types.md);
                * `diskSize` — размер диска в байтах;
                * `diskTypeId` — [тип диска](../concepts/storage.md).

            * `hostsCount` — количество хостов в группе. Минимальное число хостов `DATA` и `Dashboards` — один, хостов `MANAGER` — три.
            * `zoneIds` — список зон доступности, где размещаются хосты кластера.

            
            * `subnetIds` — список идентификаторов подсетей.
            * `assignPublicIp` — разрешение на [подключение](connect/index.md) к хосту из интернета: `true` или `false`.


            * `diskSizeAutoscaling` — настройки автоматического увеличения размера хранилища:

                * `plannedUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                    Если вы задали этот параметр, [настройте расписание окна технического обслуживания](update.md#change-additional-settings) перед созданием группы хостов.

                * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                    {% note warning %}

                    Если заданы оба порога, значение `emergencyUsageThreshold` должно быть не меньше `plannedUsageThreshold`.

                    {% endnote %}

                * `diskSizeLimit` — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                
                {% note warning %}
                
                * Размер хранилища не может быть уменьшен после автоматического увеличения.
                * Во время изменения размера хранилища хосты кластера будут недоступны.
                
                {% endnote %}


    1. Чтобы изменить конфигурацию группы хостов `OpenSearch`:

        1. Воспользуйтесь методом [Cluster.UpdateOpenSearchNodeGroup](../api-ref/Cluster/updateOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request PATCH \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --header "Content-Type: application/json" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/opensearch/node_groups/<название_группы_хостов>' \
                --data "@body.json"
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/updateOpenSearchNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы изменить конфигурацию группы хостов `Dashboards`:

        1. Воспользуйтесь методом [Cluster.UpdateDashboardsNodeGroup](../api-ref/Cluster/updateDashboardsNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request PATCH \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --header "Content-Type: application/json" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/dashboards/node_groups/<название_группы_хостов>' \
                --data "@body.json"
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/updateDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        {% note warning %}
        
        Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask` (в виде массива строк `paths[]`).
        
        {% cut "Формат перечисления настроек" %}
        
        ```yaml
        "update_mask": {
            "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
            ]
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

        
        ```json
        {
            "cluster_id": "<идентификатор_кластера>",
            "name": "<название_группы_хостов>",
            "update_mask": {
                "paths": [
                    "resources",
                    "hosts_count",
                    "zone_ids",
                    "subnet_ids",
                    "assign_public_ip"
                ]
            },
            "node_group_spec": {
                "resources": {
                    "resource_preset_id": "<класс_хостов>",
                    "disk_size": "<размер_хранилища_в_байтах>",
                    "disk_type_id": "<тип_диска>"
                },
                "hosts_count": "<число_хостов>",
                "zone_ids": [
                    "<зона_доступности_1>",
                    "<зона_доступности_2>",
                    "<зона_доступности_3>"
                ],
                "subnet_ids": [
                    "<идентификатор_подсети_1>",
                    "<идентификатор_подсети_2>",
                    "<идентификатор_подсети_3>"
                ],
                "assign_public_ip": <разрешить_публичный_доступ_к_хостам>,
                "disk_size_autoscaling": {
                    "planned_usage_threshold": "<процент_для_планового_увеличения>",
                    "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                    "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
            }
        }
        ```


        Где:

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.
        * `node_groups` — настройки хостов:

            * `resources` — ресурсы кластера:

                * `resource_preset_id` — [класс хостов](../concepts/instance-types.md);
                * `disk_size` — размер диска в байтах;
                * `disk_type_id` — [тип диска](../concepts/storage.md).

            * `hosts_count` — количество хостов в группе. Минимальное число хостов `DATA` и `Dashboards` — один, хостов `MANAGER` — три.
            * `zone_ids` — список зон доступности, где размещаются хосты кластера.

            
            * `subnet_ids` — список идентификаторов подсетей.
            * `assign_public_ip` — разрешение на [подключение](connect/index.md) к хосту из интернета: `true` или `false`.


            * `disk_size_autoscaling` — настройки автоматического увеличения размера хранилища:

                * `planned_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.

                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                    Если вы задали этот параметр, [настройте расписание окна технического обслуживания](update.md#change-additional-settings) перед созданием группы хостов.

                * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.

                    Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).

                    {% note warning %}

                    Если заданы оба порога, значение `emergency_usage_threshold` должно быть не меньше `planned_usage_threshold`.

                    {% endnote %}

                * `disk_size_limit` — максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.

                
                {% note warning %}
                
                * Размер хранилища не может быть уменьшен после автоматического увеличения.
                * Во время изменения размера хранилища хосты кластера будут недоступны.
                
                {% endnote %}


    1. Чтобы изменить конфигурацию группы хостов `OpenSearch`:

        1. Воспользуйтесь вызовом [ClusterService.UpdateOpenSearchNodeGroup](../api-ref/grpc/Cluster/updateOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d @ \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.UpdateOpenSearchNodeGroup \
                < body.json
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/updateOpenSearchNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы изменить конфигурацию группы хостов `Dashboards`:

        1. Воспользуйтесь вызовом [ClusterService.UpdateDashboardsNodeGroup](../api-ref/grpc/Cluster/updateDashboardsNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d @ \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.UpdateDashboardsNodeGroup \
                < body.json
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/updateDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

{% endlist %}

## Удалить группу хостов {#delete-host-group}

При удалении группы хостов действуют следующие ограничения:

* Нельзя удалить единственную группу хостов с ролью `DATA`.
* Нельзя удалить группу хостов с ролью `MANAGER`, если в момент ее добавления в кластере была группа хостов `OpenSearch` с ролями `DATA` и `MANAGER`.

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога.
    1. Перейдите в сервис **Managed Service for&nbsp;OpenSearch**.
    1. Нажмите на имя нужного кластера, затем выберите вкладку ![host-groups.svg](../../_assets/console-icons/copy-transparent.svg) **Группы хостов**.
    1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной группы и выберите пункт **Удалить**.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы удалить группу хостов, выполните команду:

    ```bash
    yc managed-opensearch node-group delete --cluster-name <имя_кластера> \
       --node-group-name <имя_группы_хостов>
    ```

    В команде укажите группу хостов, которую нужно удалить.

- Terraform {#tf}

    Чтобы удалить группу хостов из кластера:

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        О том, как создать такой файл, в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Managed Service for OpenSearch в [документации провайдера Terraform](../../terraform/resources/mdb_opensearch_cluster.md).

    1. Чтобы удалить группу хостов `OpenSearch`, удалите блок `node_groups`, который соответствует удаляемой группе хостов, из блока `opensearch`.

    1. Чтобы удалить группу хостов `Dashboards`, удалите блок `dashboards`.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите удаление ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        {% note warning "Ограничения по времени" %}
        
        Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for OpenSearch:
        
        * создание, в том числе путем восстановления из резервной копии, — 30 минут;
        * изменение — 60 минут;
        * удаление — 15 минут.
        
        Операции, длящиеся дольше указанного времени, прерываются.
        
        {% cut "Как изменить эти ограничения?" %}
        
        Добавьте к описанию кластера блок `timeouts`, например:
        
        ```hcl
        resource "yandex_mdb_opensearch_cluster" "<имя_кластера>" {
          ...
          timeouts {
            create = "1h30m" # Полтора часа
            update = "2h"    # 2 часа
            delete = "30m"   # 30 минут
          }
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Чтобы удалить группу хостов `OpenSearch`:

        1. Воспользуйтесь методом [Cluster.DeleteOpenSearchNodeGroup](../api-ref/Cluster/deleteOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request DELETE \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/opensearch/node_groups/<название_группы_хостов>'
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/deleteOpenSearchNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы удалить группу хостов `Dashboards`:

        1. Воспользуйтесь методом [Cluster.DeleteDashboardsNodeGroup](../api-ref/Cluster/deleteDashboardsNodeGroup.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

            ```bash
            curl \
                --request DELETE \
                --header "Authorization: Bearer $IAM_TOKEN" \
                --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/dashboards/node_groups/<название_группы_хостов>'
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/deleteDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
    1. Чтобы удалить группу хостов `OpenSearch`:

        1. Воспользуйтесь вызовом [ClusterService.DeleteOpenSearchNodeGroup](../api-ref/grpc/Cluster/deleteOpenSearchNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d '{
                        "cluster_id": "<идентификатор_кластера>",
                        "name": "<название_группы_хостов>"
                    }' \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.DeleteOpenSearchNodeGroup
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/deleteOpenSearchNodeGroup.md#yandex.cloud.operation.Operation).

    1. Чтобы удалить группу хостов `Dashboards`:

        1. Воспользуйтесь вызовом [ClusterService.DeleteDashboardsNodeGroup](../api-ref/grpc/Cluster/deleteDashboardsNodeGroup.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

            ```bash
            grpcurl \
                -format json \
                -import-path ~/cloudapi/ \
                -import-path ~/cloudapi/third_party/googleapis/ \
                -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
                -rpc-header "Authorization: Bearer $IAM_TOKEN" \
                -d '{
                        "cluster_id": "<идентификатор_кластера>",
                        "name": "<название_группы_хостов>"
                    }' \
                mdb.api.yandexcloud.kz:443 \
                yandex.cloud.mdb.opensearch.v1.ClusterService.DeleteDashboardsNodeGroup
            ```

            Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters). Название группы хостов можно запросить с [детальной информацией о кластере](cluster-list.md#get-cluster).

        1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/deleteDashboardsNodeGroup.md#yandex.cloud.operation.Operation).

{% endlist %}

## Получить список хостов в кластере {#list-hosts}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите на страницу каталога.
    1. Перейдите в сервис **Managed Service for&nbsp;OpenSearch**.
    1. Нажмите на имя нужного кластера, затем выберите вкладку ![hosts](../../_assets/console-icons/cube.svg) **Хосты**.

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Воспользуйтесь методом [Cluster.ListHosts](../api-ref/Cluster/listHosts.md) и выполните запрос, например, с помощью [cURL](https://curl.se/):

      ```bash
      curl \
          --request GET \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://mdb.api.yandexcloud.kz/managed-opensearch/v1/clusters/<идентификатор_кластера>/hosts'
      ```

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/listHosts.md#yandex.cloud.mdb.opensearch.v1.ListClusterHostsResponse).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Воспользуйтесь вызовом [ClusterService.ListHosts](../api-ref/grpc/Cluster/listHosts.md) и выполните запрос, например, с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d '{
                "cluster_id": "<идентификатор_кластера>"
              }' \
          mdb.api.yandexcloud.kz:443 \
          yandex.cloud.mdb.opensearch.v1.ClusterService.ListHosts
      ```

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/listHosts.md#yandex.cloud.mdb.opensearch.v1.ListClusterHostsResponse).

{% endlist %}