[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Apache Kafka®](../index.md) > Концепции > Взаимосвязь ресурсов сервиса

# Взаимосвязь ресурсов в Managed Service for Apache Kafka®


Apache Kafka® — это распределенная система для обмена сообщениями между приложениями по принципу «публикация-подписка».

Сервис Yandex Managed Service for Apache Kafka® помогает разворачивать и поддерживать [кластеры](../../glossary/cluster.md) серверов Apache Kafka® версий 3.6, 3.7, 3.8, 3.9 или 4.0 в инфраструктуре Yandex Cloud.


Каждый кластер Managed Service for Apache Kafka® состоит из одного или нескольких [хостов-брокеров](brokers.md), на которых размещены [топики](topics.md) и их разделы. Хосты кластера могут находиться в разных зонах доступности. Подробнее о географии Yandex Cloud в разделе [Обзор платформы](../../overview/concepts/geo-scope.md).

Если все хосты-брокеры созданы в одной зоне доступности, то их количество нельзя изменить.


К хостам кластера [подключаются](../operations/connect/clients.md) клиенты — приложения-[производители](producers-consumers.md) и [потребители](producers-consumers.md) данных. Производители отправляют сообщения в определенные топики кластера, а потребители читают сообщения из них. При таком подходе вам не понадобится заново настраивать потребителей, если производитель изменится.

При работе необходимо учитывать, что контролирует сервис, а что — клиент Yandex Cloud. Понимание этих зон контроля помогает эффективно использовать облачные ресурсы и избегать возможных проблем при работе с базами данных. Подробнее в разделе [Разграничение зон контроля пользователей сервисов управляемых баз данных (MDB) и Yandex Cloud](../../overview/concepts/mdb-responsibilities.md).

## Конфигурация хостов в зависимости от версии Apache Kafka® {#version}

В различных версиях Apache Kafka® используются разные инструменты для хранения метаданных, состояния и конфигурации кластера:

* в версиях 3.5 и ниже поддерживается [ZooKeeper](index.md#zookeeper);
* в версии 3.6 и до версии 3.9 (включительно) поддерживаются ZooKeeper и [Apache Kafka® Raft](index.md#kraft);
* в версиях 4.0 и выше поддерживается только [Apache Kafka® Raft](index.md#kraft).

{% note info %}

## Окружение {#environment}

Выберите окружение, в котором нужно создать кластер Managed Service for Apache Kafka® (после создания кластера изменить окружение невозможно):
  * `PRODUCTION` — для стабильных версий приложений.
  * `PRESTABLE` — для тестирования. Prestable-окружение аналогично Production-окружению, и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.

## Класс хостов {#broker-class}

В блоке **Класс хоста** выберите [платформу](../../compute/concepts/vm-platforms.md), тип и класс хостов.

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

При [изменении класса хостов](../operations/cluster-update.md#change-brokers) для кластера Managed Service for Apache Kafka® меняются характеристики всех уже созданных экземпляров.

## Конфигурация хостов по умолчанию {#default-config}

По умолчанию для хостов ZooKeeper и KRaft задаются следующие характеристики:

* [класс хоста](instance-types.md) — `s3-c2-m8`;
* объем диска — `10` ГБ;
* [тип диска](storage.md) — `network-ssd`.

## Автоматическое увеличение размера хранилища {#auto-rescale}

Чтобы в кластере не заканчивалось место на диске, создайте кластер с [автоматическим увеличением размера хранилища](storage.md#auto-rescale):

```bash
yc managed-kafka cluster create \
...
--disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,`
                        `planned-usage-threshold=<процент_для_планового_увеличения>,`
                        `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
...
```

Где:

* `planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](maintenance.md#maintenance-window).

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

   Если вы задали этот параметр, настройте расписание технического обслуживания.

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

   Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned-usage-threshold`.

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

   Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.

{% note warning %}

Размер хранилища нельзя уменьшить после автоматического увеличения.

{% endnote %}

## Статус кластера {#status}

Дождитесь, когда кластер Managed Service for Apache Kafka® будет готов к работе: его статус на панели Managed Service for Apache Kafka® сменится на `Running`, а состояние — на `Alive`. Это может занять некоторое время.

## Предупреждение про зоны доступности и создание кластера {#note-warning}

{% note warning %}
        
Если создать кластер Managed Service for Apache Kafka® с одной [зоной доступности](../../overview/concepts/geo-scope.md), в дальнейшем увеличить количество зон и хостов-брокеров будет невозможно.
        
{% endnote %}

## Настройка времени технического обслуживания {#maintenance}

Чтобы настроить время [технического обслуживания](maintenance.md) (в т. ч. для выключенных кластеров Managed Service for Apache Kafka®), передайте нужное значение в параметре `--maintenance-window` при создании кластера:

```bash
yc managed-kafka cluster create \
...
--maintenance-window type=<тип_технического_обслуживания>,`
                    `day=<день_недели>,`
                    `hour=<порядковый_номер_часового_интервала> \
...
```

Где `type` — тип технического обслуживания:

* `anytime` (по умолчанию) — в любое время.
* `weekly` — по расписанию. Для этого значения дополнительно укажите:
    * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
    * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.

      > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

## Предупреждение про комбинированный режим и передачу конфигурации хостов {#note-warning-combined-mode}

{% note warning %}
                    
Если вы создаете кластер с [KRaft (комбинированный режим)](kraft.md#cluster-topology), не передавайте конфигурацию хостов KRaft.
                    
{% endnote %}

## Защита кластера от удаления {#protect-from-deletion}

{% note info %}

Включенная защита кластера от удаления не помешает удалить пользователя или топик, а также подключиться вручную и удалить данные.

{% endnote %}

{% endnote %}

### Конфигурация хостов в кластерах с ZooKeeper {#zookeeper}

ZooKeeper автоматически настраивается и размещается в кластере в зависимости от количества хостов-брокеров:

* Если кластер Apache Kafka® состоит из одного хоста-брокера, то ZooKeeper размещается на этом же хосте.
* Если кластер Apache Kafka® состоит из более чем одного хоста, то ZooKeeper размещается отдельно от брокеров на трех дополнительных хостах. Эти хосты добавляются в кластер автоматически.

Хосты ZooKeeper нельзя удалить. Количество хостов ZooKeeper фиксировано.

Подробнее о создании кластера Managed Service for Apache Kafka® с ZooKeeper в [инструкции](../operations/cluster-create.md#create-cluster).

### Конфигурация хостов в кластерах с Apache Kafka® Raft {#kraft}

[Протокол Apache Kafka® Raft](kraft.md) (сокращенно KRaft) используется для хранения метаданных вместо ZooKeeper.

KRaft автоматически настраивается и размещается в кластере в зависимости от выбранного режима работы и количества хостов-брокеров:

* **KRaft (комбинированный режим)** — на одном хосте Apache Kafka® одновременно размещаются [брокер](brokers.md) и контроллер метаданных KRaft. При этом в кластере создаются только три хоста-брокера Apache Kafka®.

  
  Задать количество хостов-брокеров вручную нельзя.

* **KRaft (на отдельных хостах)** — брокер и контроллер метаданных KRaft размещаются на отдельных хостах. При создании кластера с несколькими хостами-брокерами, в него добавляются три отдельных хоста KRaft.

  Количество хостов-брокеров задается вручную.

Хосты KRaft нельзя удалить. Количество хостов KRaft фиксировано.

Подробнее о создании кластера Managed Service for Apache Kafka® с протоколом KRaft читайте в [инструкции](../operations/cluster-create.md#create-cluster-kraft).

Более подробная информация приведена [в документации Apache Kafka®](https://kafka.apache.org/42/operations/kraft/).