Управление дисковым пространством в кластере Managed Service for Apache Kafka®
Когда хранилище заполнено на 97% или больше, хост автоматически переходит в режим read-only. Чтобы избежать проблем с операциями записи в топик, воспользуйтесь одним из способов:
-
Настройте алерты в Yandex Monitoring, чтобы отслеживать степень заполнения хранилища.
-
Увеличьте размер хранилища, чтобы снять режим read-only автоматически.
-
Настройте автоматическое увеличение размера хранилища, чтобы предотвратить ситуации, когда место на диске заканчивается и хост переходит в режим read-only.
Настроить алерты в Yandex Monitoring
-
В консоли управления
перейдите в нужный каталог. -
Перейдите в сервис Monitoring.
-
Создайте алерт со следующими параметрами:
-
Метрики — задайте параметры метрики:
-
Облако.
-
Каталог.
-
Сервис Managed Service for Kafka.
-
Идентификатор кластера Managed Service for Apache Kafka®.
Идентификатор можно получить со списком кластеров в каталоге.
-
Метка
disk.free_bytes.
-
-
Условия срабатывания — задайте условие для заполнения свободного дискового пространства, при котором сработает алерт:
- Функция агрегации —
Минимум(минимальное значение метрики за период). - Функция сравнения —
Меньше или равно. - Warning —
95(95% от размера хранилища). - Alarm —
90(90% от размера хранилища). - Окно вычисления — желаемый период, с которым будет обновляться значение метрики.
- Задержка вычисления — предпочтительный сдвиг по времени назад в секундах. Позволяет исключить срабатывания алерта, когда в нем указано несколько метрик и они собираются с разным интервалом. Подробнее о задержке вычисления см. в документации Yandex Monitoring.
- Функция агрегации —
-
Уведомления — добавьте созданный ранее канал уведомлений.
-
Увеличить размер хранилища
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Чтобы увеличить размер хранилища для кластера:
-
В консоли управления
перейдите в нужный каталог. -
Перейдите в сервис Managed Service for Kafka.
-
В строке с нужным кластером нажмите
, затем выберите Редактировать. -
Измените настройки в блоке Хранилище.
Тип диска для кластера Apache Kafka® нельзя изменить после создания.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы увеличить размер хранилища для хостов:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-kafka cluster update --help -
Чтобы изменить объем хранилища хостов-брокеров, выполните команду:
yc managed-kafka cluster update <имя_или_идентификатор_кластера> \ --disk-size <объем_хранилища>Если не указаны единицы размера, то используются гигабайты.
-
Чтобы изменить объем хранилища хостов ZooKeeper, выполните команду:
yc managed-kafka cluster update <имя_или_идентификатор_кластера> \ --zookeeper-disk-size <размер_диска>Если не указаны единицы размера, то используются гигабайты.
Тип диска для кластера Apache Kafka® нельзя изменить после создания.
Чтобы увеличить размер хранилища для кластера:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Managed Service for Apache Kafka® значение параметра
disk_sizeв блокахkafka.resourcesиzookeeper.resourcesдля хостов Apache Kafka® и ZooKeeper соответственно:resource "yandex_mdb_kafka_cluster" "<имя_кластера>" { ... kafka { resources { disk_size = <размер_хранилища_ГБ> ... } ... } zookeeper { resources { disk_size = <размер_хранилища_ГБ> ... } } }Тип диска для кластера Apache Kafka® нельзя изменить после создания.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Apache Kafka® 60 минутами.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_kafka_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.kafka.resources.diskSize,configSpec.zookeeper.resources.diskSize", "configSpec": { "kafka": { "resources": { "diskSize": "<размер_хранилища_байт>" } }, "zookeeper": { "resources": { "diskSize": "<размер_хранилища_байт>" } } } }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую.Укажите нужные параметры:
configSpec.kafka.resources.diskSize— если нужно изменить размер хранилища хостов-брокеров.configSpec.zookeeper.resources.diskSize— если нужно изменить размер хранилища хостов ZooKeeper. Применяется только для кластеров с версией Apache Kafka® 3.5.
-
configSpec.kafka.resources.diskSize– размер хранилища хостов-брокеров в байтах. -
configSpec.zookeeper.resources.diskSize— размер хранилища хостов ZooKeeper в байтах. Применяется только для кластеров с версией Apache Kafka® 3.5.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.kafka.resources.disk_size", "config_spec.zookeeper.resources.disk_size" ] }, "config_spec": { "kafka": { "resources": { "disk_size": "<размер_хранилища_байт>" } }, "zookeeper": { "resources": { "disk_size": "<размер_хранилища_байт>" } } } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].Укажите нужные параметры:
config_spec.kafka.resources.disk_size— если нужно изменить размер хранилища хостов-брокеров.config_spec.brokers_count— если нужно изменить размер хранилища хостов ZooKeeper. Применяется только для кластеров с версией Apache Kafka® 3.5.
-
config_spec.kafka.resources.disk_size— размер хранилища хостов-брокеров в байтах. -
config_spec.zookeeper.resources.disk_size— размер хранилища хостов ZooKeeper в байтах. Применяется только для кластеров с версией Apache Kafka® 3.5.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Список доступных классов хостов с их идентификаторами был получен ранее.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Настроить автоматическое увеличение размера хранилища
Чтобы место на диске кластера не заканчивалось и хосты не переходили в режим read-only, настройте автоматическое увеличение размера хранилища.
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Важно
Размер хранилища нельзя уменьшить после автоматического увеличения.
-
В консоли управления
перейдите в нужный каталог. -
Перейдите в сервис Managed Service for Kafka.
-
В строке с нужным кластером нажмите на значок
, затем выберите Редактировать. -
В блоке Автоматическое увеличение размера хранилища задайте пороги заполненности хранилища, при достижении которых его размер будет увеличиваться:
- В поле Увеличивать размер выберите один или оба порога:
- В окно обслуживания при заполненности более — порог для планового увеличения. Когда он достигнут, объем хранилища увеличивается во время ближайшего окна обслуживания.
- Незамедлительно при заполненности более — порог для незамедлительного увеличения. Когда он достигнут, объем хранилища увеличивается немедленно.
- Задайте пороговое значение (в процентах от общего объема хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть выше, чем для планового.
- Задайте Максимальный размер хранилища.
- В поле Увеличивать размер выберите один или оба порога:
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы настроить автоматическое увеличение размера хранилища:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-kafka cluster update --help -
Укажите максимальный размер хранилища и условия для его увеличения в команде изменения кластера:
yc managed-kafka cluster update <идентификатор_или_имя_кластера> \ --disk-size-autoscaling planned-usage-threshold=<процент_для_планового_увеличения>,` `emergency-usage-threshold=<процент_для_незамедлительного_увеличения>,` `disk-size-limit=<максимальный_размер_хранилища_в_байтах>Где:
-
planned-usage-threshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно технического обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания.
-
emergency-usage-threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено). Должно быть не меньше значенияplanned-usage-threshold. -
disk-size-limit— максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.Если указать значение
0, автоматическое увеличение размера хранилища будет отключено.
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-kafka/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.diskSizeAutoscaling.plannedUsageThreshold,configSpec.diskSizeAutoscaling.plannedUsageThreshold,configSpec.diskSizeAutoscaling.plannedUsageThreshold", "configSpec": { "diskSizeAutoscaling": { "plannedUsageThreshold": "<процент_для_планового_увеличения>", "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" } } }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую.Укажите нужные параметры:
configSpec.diskSizeAutoscaling.plannedUsageThreshold— если нужно изменить процент заполнения хранилища для его планового увеличения.configSpec.diskSizeAutoscaling.emergencyUsageThreshold— если нужно изменить процент заполнения хранилища для его внепланового увеличения.configSpec.diskSizeAutoscaling.diskSizeLimit— если нужно изменить максимальный размер хранилища при его автоматическом расширении.
-
plannedUsageThreshold– процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание окна технического обслуживания.
-
emergencyUsageThreshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено). Должно быть не меньше значенияplannedUsageThreshold. -
diskSizeLimit– максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.disk_size_autoscaling.planned_usage_threshold", "config_spec.disk_size_autoscaling.emergency_usage_threshold", "config_spec.disk_size_autoscaling.disk_size_limit" ] }, "config_spec": { "disk_size_autoscaling": { "planned_usage_threshold": "<процент_для_планового_увеличения>", "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>", "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>" } } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].Укажите нужные параметры:
config_spec.disk_size_autoscaling.planned_usage_threshold— если нужно изменить процент заполнения хранилища для его планового увеличения.config_spec.disk_size_autoscaling.emergency_usage_threshold— если нужно изменить процент заполнения хранилища для его внепланового увеличения.config_spec.disk_size_autoscaling.disk_size_limit— если нужно изменить максимальный размер хранилища при его автоматическом расширении.
-
planned_usage_threshold– процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание окна технического обслуживания.
-
emergency_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено). Должно быть не меньше значенияplanned_usage_threshold. -
disk_size_limit– максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения.
Идентификатор кластера можно запросить со списком кластеров в каталоге. Список доступных классов хостов с их идентификаторами был получен ранее.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Если заданный порог достигнут, размер хранилища увеличивается по-разному в зависимости от типа диска:
-
Для сетевых HDD- и SSD-дисков — на большее из двух значений: 20 ГБ или 20% от текущего размера диска.
-
Для нереплицируемых SSD-дисков — на 93 ГБ.
-
Для локальных SSD-дисков, в кластере на платформе:
- Intel Cascade Lake — на 100 ГБ.
- Intel Ice Lake — на 368 ГБ.
Если порог срабатывания достигнут повторно, размер хранилища будет автоматически увеличиваться, пока не достигнет заданного максимума. После этого вы можете задать новый максимальный размер хранилища вручную.
Важно
Размер хранилища нельзя уменьшить после автоматического увеличения.