Управление дисковым пространством в кластере 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. Вы можете указать другой каталог с помощью параметра --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.cloud.yandex.net/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.cloud.yandex.net: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. Вы можете указать другой каталог с помощью параметра --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.cloud.yandex.net/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.cloud.yandex.net: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 ГБ.
Если порог срабатывания достигнут повторно, размер хранилища будет автоматически увеличиваться, пока не достигнет заданного максимума. После этого вы можете задать новый максимальный размер хранилища вручную.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.