Взлетаем с управляемым кластером Kafka в #CloudMTS. Несколько советов для старта

image

Привет, Хабр!

Меня зовут Дмитрий Быстриков, я Technical Product Owner в команде Managed Service for Apache Kafka в #CloudMTS. Сегодня я расскажу, что умеет наша Kafka и чему научится в ближайшее время. Для тех, кто дочитает до конца, я приготовил несколько советов от наших инженеров по настройке кластера. Если интересно, прошу под кат.

Что такое Apache Kafka?


Apache Kafka — распределенный брокер сообщений. Это современный инструмент, который занял один из самых широких стульев в области передачи информации и построения надежных ИТ-систем. Горизонтальное масштабирование, отказоустойчивость, широкая область применения — все это у него есть.

Не буду подробно закапываться в матчасть. Для тех, кто не знаком с Apache Kafka, рекомендую заглянуть сюда, сюда и сюда.

Кто делал сервис


Запуск нового продукта — это всегда чистый лист. Каким он должен быть? Что уметь? А кто его делать будет?

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

Такой подход определил критерии, по которым мы выбирали людей в команду. В нее вошли те, у кого был реальный боевой опыт с высоконагруженными кластерами и такими процессами, как:

  1. Обновление версии Kafka кластера из десятков нод с версии 1.х до 2.х без даунтайма.
  2. Организация гибкого потока данных, который пропускает через себя огромный объем информации.
  3. Создание и эксплуатация кластера Kafka как Multi DC и как геораспределенного кластера с использованием [MirrorMaker 2.0].

Для кого продукт


Все хотят использовать лучшие практики и строить прекрасные продукты. Мы понимаем, что компаниям найти готовых специалистов, работающих с Apache Kafka, сложно и дорого, а учить с нуля — еще и долго. Поэтому мы построили решение, которое будет стабильно работать в неопытных руках начинающего инженера и не будет вставлять палки в колеса опытного спеца-экспериментатора.

Вот какие возможности доступны в сервисе прямо сейчас:

  • Выбор конфигурации кластера. 1 брокер для тестирования или отказоустойчивый кластер из 3, 4, 5, 6, 7 брокеров для продакшена. Количество Zookeeper подбирается автоматически.

    image

  • Выбор ЦОДа. Сейчас это Москва или Владивосток, но мы работаем над расширением этого списка и добавим новые площадки в европейской части России.

    image

  • Настройка топиков. Для начинающих пользователей мы сделали готовую конфигурацию, с которой кластер будет работать. Эта конфигурация универсальна и подойдет для большинства задач, решаемых с помощью Apache Kafka.

    Для опытных есть возможность изменять настройки: количество разделов, фактор репликации, максимальный размер сообщения и прочее. В перспективе появится изменение фактора репликации топика через cruise-control, а не инструментами Kafka.

    image

  • Управление ACL. Мы полностью покрыли всю функциональность Kafka в части настройки доступов пользователей к топикам.

    image

  • Высокая производительность. Мы предварительно провели нагрузочное тестирование и оставили на выбор только те конфигурации брокеров по СPU, RAM, которые хорошо себя зарекомендовали. На тестах получили 1 миллион RPS на запись (7.5 gbit/s) и думаем, что это не предел.
  • Изменение характеристик брокера. Не всегда для увеличения производительности необходимо добавлять новые брокеры. Иногда можно улучшить характеристики текущих (CPU, RAM). Изменение ресурсов происходит без даунтайма для отказоустойчивых (от 3 брокеров) конфигураций кластера.

    image

  • Алертинг. Пользователю доступен мониторинг брокеров и информация о недореплицированности топиков.

    image


А вот что планируем сделать в ближайшее время:

  • Изменение размера дисков на брокерах. Не пересоздавать же кластер, если закончилось место на брокерах?
  • Управление консьюмер-группами. Сейчас они создаются автоматически, но скоро появится инструмент для управления ими.
  • Возможность увеличивать количество брокеров. Если не хватает производительности текущего кластера, пользователь сможет добавлять в кластер дополнительные брокеры без даунтайма для отказоустойчивых конфигураций и балансировать распределение партиций.
  • Пакетный экспорт/импорт топиков для удобного и безошибочного конфигурирования кластеров.
  • Возможность использовать сразу несколько площадок в разных городах (Multi DC) и построение геораспределенных кластеров тоже есть в планах. Добавьте сюда одно из самых больших сетевых покрытий в стране и высокую скорость сетевых магистралей — будет вкусно.


Тем, кто дочитал до этого момента, в знак благодарности несколько практических советов от наших экспертов по настройке и управлению кластером Apache Kafka:

  • Следите за общим количеством партиций на каждом брокере. При нескольких тысячах партиций перезапуск брокера может занять больше времени, чем вы предполагаете.
  • Продумайте общие правила именования топиков для всех команд, которые буду использовать кластер Kafka. Например: env.project.servicename.eventname или prod.kaas.billing.clicks. В дальнейшем это позволит легко ориентироваться в принадлежности топика и его критичности, облегчит выборки метрик для построения нужных дашбордов. И самое важное: это помогает упростить управление правами доступа с помощью Prefixed ACLs.
  • Не используйте схожие названия топиков. Если вы создали топик с именем servicename.events и топик с именем servicename_events, а потом захотите удалить топик по имени servicename.event — Kafka удалит оба топика.
  • При создании топика обязательно указывайте конкретные цифры для retention.bytes и retention.ms. Это спасет вас от неприятной ситуации, когда топик внезапно «отъел» все дисковое пространство на брокерах. Обычно Kafka после такого «ложится», и, чтобы завести кластер снова, одной команды `systemctl start kafka.service` не хватит.
  • Используйте троттлинг при балансировке партиции топика. Если вы балансируете партиции топика по брокерам без троттлинга, это может привести к сильной деградации производительности всего кластера.


На этом все, ребята, спасибо за внимание! Если у вас возникли пожелания по продукту, пишите в комментарии.

Протестировать бесплатно Managed Service for Apache Kafka можно уже сейчас. Для этого подключите сервис на сайте #CloudMTS и напишите мне на почту.


gz5opfttva6zuzxinkdyakvpi1g.png

© Habrahabr.ru