Как лучше в Apache Kafka изменить состав кворума в хранилище метаданных?

Ссылка скопирована
1 ответ

По вводным: подскажите, как изменить состав кворума в кластере Apache Kafka 3.9.1, зафиксированный в хранилище метаданных без потери данных (возможно ли такое в принципе)? Кластер разделен на две части: ч.1 и ч.2. Нужно поднять ч.2 после отключения из сети ч.1.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

В Kafka 3.9.1 с KRaft-кворумом состав контроллеров нельзя менять так же свободно, как список обычных брокеров. Метаданные кворума завязаны на controller.quorum.voters и storage metadata. Если одна часть кластера отключена, а вторая не имеет большинства контроллеров, “просто поднять ч.2” без потери данных может быть невозможно: кворум не сможет легитимно выбрать лидера.

Главное правило: для KRaft нужен majority quorum. Если было 3 controller voter, то для нормальной работы нужно 2. Если было 5 - нужно 3. Если в отключенной части осталась большая часть voter-ов, вторая часть не должна самовольно продолжать работу, иначе возможен split-brain.

Сначала нужно понять текущую конфигурацию:

grep -R "controller.quorum.voters" /path/to/kafka/config
grep -R "process.roles" /path/to/kafka/config
 
kafka-metadata-quorum.sh --bootstrap-server broker:9092 describe --status
kafka-metadata-quorum.sh --bootstrap-server broker:9092 describe --replication

grep -R "controller.quorum.voters" /path/to/kafka/config grep -R "process.roles" /path/to/kafka/config kafka-metadata-quorum.sh --bootstrap-server broker:9092 describe --status kafka-metadata-quorum.sh --bootstrap-server broker:9092 describe --replication

Если кворум доступен, изменение состава нужно делать штатной процедурой для KRaft reconfiguration, с поэтапным добавлением/удалением voter-ов и сохранением большинства на каждом шаге. Если кворума уже нет, это аварийное восстановление, и там сначала выбирают: сохранить данные любой ценой или поднять часть кластера с риском потери последних metadata changes.

Чего не стоит делать: вручную править meta.properties, копировать storage directory между узлами без понимания cluster.id/node.id, запускать две независимые половины с одинаковым cluster.id и разными метаданными. Это прямой путь к трудноисправимому состоянию.

Если задача - плановая миграция контроллеров, делайте ее при живом большинстве: добавили новый controller, дождались синхронизации, удалили старый voter, проверили quorum status. Если это авария после отключения ч.1, сначала восстановите связь хотя бы с большинством старых controller-ов. Если это невозможно, готовьтесь к процедуре disaster recovery из бэкапа metadata log и четко фиксируйте, какие данные могут быть потеряны.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно