План аварийного восстановления Apache Kafka - PullRequest
0 голосов
/ 31 января 2019

У нас есть 10 серверов приложений и 3 кластера kafka для поддержки запросов обмена сообщениями приложений.Недавно у нас возникла ситуация, когда из-за проблем с сетью вышел из строя кластер kafka, и из-за потери всех данных все приложение было остановлено на несколько часов.Поскольку я искал план аварийного восстановления kafka и обнаружил, что мы должны иметь -

  1. Fallover на другой кластер в том же центре обработки данных
  2. Fallover на другой кластер в соседнем центре обработки данных
  3. Переход на другой кластер в другой зоне дата-центра

Поскольку у нас есть некоторые ограничения на наличие другого центра обработки данных, поэтому мы думали о подходе -

  1. Всесервер приложений записывает данные в файл
  2. Filebeat читает файл и отправляет в kafka

В случае возникновения проблемы в конце kafka данные будут доступны в файлах и могут быть восстановлены.Итак, мой вопрос: хорош ли этот подход?Есть ли существенная проблема в этой архитектуре?Любое другое предложение?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Хотя у меня не было такого сценария резервирования с одним постоянным током, но я вижу, что это может быть интересно для некоторых клиентов.Так что это гипотетическое решение.

На мой взгляд, было бы плохой идеей рассматривать инфраструктуру не-Kafka в качестве решения для резервного копирования.Ваши программисты будут плакать во время кодирования, поскольку API-интерфейсы зависят от множества метаданных, связанных с Kafka, для получения соответствующих сообщений из тем и разделов.Как приложение найдет последнюю запись, которую оно обрабатывает из темы-1: Раздел 27?куда пойдут будущие записи, поскольку производители также используют API-интерфейсы Kafka.

Я бы построил вторичный кластер Kafka, меньший по сравнению с вашим основным кластером с изолированными брокерами, zookeeper и дисками.Используйте средство для создания зеркал или репликатор (https://docs.confluent.io/current/multi-dc-replicator/mirrormaker.html), чтобы заполнить этот кластер фактическими данными. Вы можете сократить время хранения, чтобы управлять дисковым пространством и т. Д., Но при этом все ваши приложения реального времени будут работать гладко.

Когда ваш основной кластер выйдет из строя, приложения должны будут использовать посредников этого кластера для регулярной обработки.

Потребительские приложения должны будут сохранять смещения за пределами Kafka, чтобы иметь возможность просто перезапускать с последней контрольной точки.изменить идентификатор брокера. Этот переключатель может быть запрограммирован в прокси или независимом микросервисе, поддерживающем соединения Kafka, если вы хотите перейти на этот уровень.

0 голосов
/ 01 февраля 2019

Работали ли ваши брокеры kafka на отдельном сервере стойки *

Ожидается, что сервер стойки может быть отключен в течение нескольких минут в целях обслуживания.https://kafka.apache.org/documentation/#basic_ops_racks

Не рекомендуется распределять кафка-кластер по разным дата-центрам.При этом у вас могут начаться проблемы, связанные с сетью.

https://kafka.apache.org/documentation/#datacenters

Что если весь центр обработки данных недоступен?

Подавать в суд на поставщика услуг передачи данных, если он не доставил свой SLA.Напишите производителю, предполагая, что брокеры могут быть недоступны.Вы также можете посмотреть на нечистого лидера выборы.

Альтернативной стратегией может быть: как только ваш продюсер заметит, что брокер kafka не отвечает.Поместите данные вasticsearch / другую базу данных.Так что у вас есть к чему вернуться.

Если вы правильно спроектировали свою среду kafka, то минимальное количество синхронизированных реплик и ack = all должны гарантировать, что данные существуют на машине, если несколько брокеров вышли из строя.По своему дизайну, если количество синхронизированных реплик> минимальное количество синхронизированных реплик;брокер не примет сообщение от производителя.

Кроме того, если данные отражены в разных кластерах в разных дата-центрах, это также даст вам больше уверенности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...