Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
Выбор предпочтительной реплики Прежде чем пытаться выяснить причины проблемы, следует убедиться, что не- давно была выбрана предпочтительная реплика (см. главу 9). Брокеры Kafka не становятся автоматически вновь ведущими для разделов (разве что включе- на настройка для автоматического перераспределения ведущих реплик, но это не рекомендуется) после потери статуса ведущей реплики, например, в случае сбоя или останова брокера. А значит, ведущие реплики запросто могут стать не- сбалансированными. Выбор предпочтительной реплики — безопасная и простая операция, так что стоит в первую очередь выполнить его и посмотреть, не ис- чезнет ли проблема. Если.число.недореплицированных.разделов.меняется.или.оно.постоянно,.но.от- ключенных.брокеров.нет,.то.дело.обычно.в.проблеме.с.производительностью.кла- стера..Искать.причины.подобных.проблем.довольно.сложно.из-за.их.разнообразия,. но.существует.алгоритм.из.нескольких.шагов,.с.помощью.которого.можно.сузить. список.возможных.до.наиболее.вероятных..Первый.шаг.—.попытаться.выяснить,. связана.проблема.с.отдельным.брокером.или.со.всем.кластером..Иногда.ответить. на.этот.вопрос.непросто..Если.недореплицированные.разделы.находятся.на.одном. брокере,.то.обычно.причина.проблемы.именно.в.нем.и.ошибка.указывает.на.то,.что. у.других.брокеров.возникают.проблемы.при.репликации.сообщений.с.него. Если.недореплицированные.разделы.есть.на.нескольких.брокерах,.дело.может.быть. в.проблеме.с.кластером.или.с.отдельным.брокером,.поскольку.у.одного.из.брокеров. 248 Глава 10 • Мониторинг Kafka могут.возникнуть.недоразумения.с.репликацией.сообщений.из.всех.других.мест. и.придется.выяснять,.о.каком.именно.брокере.идет.речь..Для.этого.можно,.на- пример,.получить.список.недореплицированных.разделов.кластера.и.посмотреть,. не.относятся.ли.все.недореплицированные.разделы.к.одному.брокеру..А.вывести. список.недореплицированных.разделов.можно.с.помощью.утилиты. kafka-topics.sh ,. которую.мы.подробно.обсуждали.в.главе.9. Например,.выведем.список.недореплицированных.разделов.кластера: # kafka-topics.sh --zookeeper zoo1.example.com:2181/kafka-cluster --describe --under-replicated Topic: topicOne Partition: 5 Leader: 1 Replicas: 1,2 Isr: 1 Topic: topicOne Partition: 6 Leader: 3 Replicas: 2,3 Isr: 3 Topic: topicTwo Partition: 3 Leader: 4 Replicas: 2,4 Isr: 4 Topic: topicTwo Partition: 7 Leader: 5 Replicas: 5,2 Isr: 5 Topic: topicSix Partition: 1 Leader: 3 Replicas: 2,3 Isr: 3 Topic: topicSix Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1 Topic: topicSix Partition: 5 Leader: 6 Replicas: 2,6 Isr: 6 Topic: topicSix Partition: 7 Leader: 7 Replicas: 7,2 Isr: 7 Topic: topicNine Partition: 1 Leader: 1 Replicas: 1,2 Isr: 1 Topic: topicNine Partition: 3 Leader: 3 Replicas: 2,3 Isr: 3 Topic: topicNine Partition: 4 Leader: 3 Replicas: 3,2 Isr: 3 Topic: topicNine Partition: 7 Leader: 3 Replicas: 2,3 Isr: 3 Topic: topicNine Partition: 0 Leader: 3 Replicas: 2,3 Isr: 3 Topic: topicNine Partition: 5 Leader: 6 Replicas: 6,2 Isr: 6 # В.этом.примере.общий.для.всех.брокер.под.номером.2..Это.указывает.на.то,.что. у.него.есть.проблемы.с.репликацией.сообщений,.поэтому.имеет.смысл.сосредо- точиться.на.нем..Если.общего.брокера.в.списке.не.видно,.то.проблема,.вероятнее. всего,.с.кластером.в.целом. Проблемы уровня кластера Проблемы.с.кластером.обычно.относятся.к.одной.из.двух.категорий: дисбаланс.нагрузки; исчерпание.ресурсов. Источник.первой.из.них.—.дисбаланса.разделов.или.ведущих.реплик.—.найти. нетрудно,.но.решить.ее.может.оказаться.сложно..Для.диагностики.от.брокеров. кластера.понадобятся.данные.по.следующим.показателям: количество.разделов; количество.ведущих.разделов; суммарная.по.всем.темам.входящая.скорость.передачи.данных.[байт/с]; суммарная.по.всем.темам.исходящая.скорость.передачи.данных.[байт/с]; суммарная.частота.входящих.сообщений.по.всем.темам. Показатели брокеров Kafka 249 Изучите.эти.показатели..В.идеально.сбалансированном.кластере.они.будут.при- мерно.одинаковыми.для.всех.брокеров.кластера,.как.в.табл..10.2. Таблица 10.2. Показатели использования кластера Брокер Раздел Ведущая реплика Входящих байтов, Мбайт/с Исходящих байтов, Мбайт/с 1 100 50 3,56 9,45 2 101 49 3,66 9,25 3 100 50 3,23 9,82 Как.видите,.все.брокеры.получают.примерно.одинаковый.объем.входящего.тра- фика..В.предположении,.что.вы.уже.выбрали.предпочтительную.реплику,.сильное. отклонение.указывает.на.дисбаланс.трафика.в.кластере..Для.решения.этой.проблемы. необходимо.переместить.разделы.с.более.нагруженных.брокеров.на.менее.нагру- женные..Сделать.это.можно.с.помощью.утилиты. kafka-reassign-partitions.sh ,. описанной.в.главе.9. Вспомогательные утилиты для балансировки кластера Сами брокеры Kafka не позволяют автоматически перераспределять разделы в кластере. Это значит, что балансировка нагрузки в нем превращается в изну- рительный процесс просмотра длинных списков показателей в ручном режиме и попыток найти удачное распределение реплик. Чтобы упростить его, в не- которых организациях были разработаны специальные автоматизированные утилиты. Одна из них — утилита kafka-assigner, размещенная компанией LinkedIn в репозитории с открытым исходным кодом kafka-tools на GitHub (https://github.com/ linkedin/kafka-tools). Эту возможность содержат и некоторые коммерческие пред- ложения по поддержке Kafka. Еще.одна.распространенная.проблема.с.производительностью.кластера.—.превы- шение.пределов.возможностей.брокеров.по.обслуживанию.запросов..Замедлить. работу.могут.различные.узкие.места,.среди.которых.наиболее.часто.встречаются. CPU,.дисковый.ввод/вывод,.пропускная.способность.сети..К.ним.не.относится. переполнение.дисков,.поскольку.брокеры.работают.нормально.вплоть.до.запол- нения.диска,.после.чего.происходит.внезапный.отказ..Для.диагностики.подобных. проблем.существует.множество.показателей,.которые.можно.отслеживать.на.уров- не.операционной.системы,.в.том.числе: использование.CPU; пропускная.способность.сети.на.вход; пропускная.способность.сети.на.выход; среднее.время.ожидания.диска; процент.использования.диска. 250 Глава 10 • Мониторинг Kafka Исчерпание.любого.из.этих.ресурсов.будет.проявляться.одинаково.—.в.виде.недо- реплицированных.разделов..Важно.не.забывать,.что.процесс.репликации.брокеров. работает.точно.так.же,.как.и.другие.клиенты.Kafka..В.случае.проблем.с.реплика- цией.у.вашего.кластера.Kafka.становятся.неизбежными.проблемы.с.потреблением. и.генерацией.сообщений.у.ваших.заказчиков..Имеет.смысл.выработать.эталонное. значение.этих.показателей,.при.котором.кластер.работает.должным.образом,.после. чего.задать.пороговые.значения,.которые.указывали.бы.на.возникновение.пробле- мы.задолго.до.исчерпания.ресурсов..Не.помешает.также.понаблюдать.за.тенден- циями.их.изменения.при.росте.поступающего.в.кластер.трафика..Если.говорить. о.показателях.брокеров.Kafka,.то.суммарная.по.всем.темам.исходящая.скорость. передачи.данных.в.байтах.( All Topics Bytes In Rate ).отлично.иллюстрирует.ис- пользование.кластера. Проблемы уровня хоста Если.проблемами.с.производительностью.Kafka.охвачен.не.весь.кластер.—.они. возникают.на.одном.или.двух.брокерах,.то.имеет.смысл.взглянуть.на.соответству- ющий.сервер.и.разобраться,.чем.он.отличается.от.остального.кластера..Подобные. проблемы.делятся.на.следующие.общие.категории: отказы.аппаратного.обеспечения; конфликты.между.процессами; различия.локальных.настроек. Типичные серверы и проблемы Сервер и его операционная система — сложный механизм из тысяч компонентов, в любом из которых может возникнуть проблема, приводящая к полному отказу или просто снижению производительности. Охватить в нашей книге все воз- можные сбои нереально — на эту тему уже написано множество огромных томов и все время создаются новые. Но в наших силах обсудить некоторые наиболее распространенные из них. В этом разделе мы сосредоточимся на проблемах с типичным сервером под управлением операционной системы Linux. Сбои.аппаратного.обеспечения.—.вещь.очевидная,.при.этом.сервер.просто.перестает. работать,.а.снижение.производительности.бывает.вызвано.менее.очевидными.про- блемами..Обычно.они.представляют.собой.случайным.образом.возникающие.ошиб- ки,.при.которых.система.продолжает.работать,.но.менее.эффективно..В.их.числе. сбойные.участки.памяти,.обнаруженные.системой.и.требующие.обхода,.вследствие. чего.снижается.общий.доступный.объем.памяти..Аналогичная.ситуация.может. возникнуть.с.CPU..Для.решения.подобных.проблем.следует.использовать.возмож- ности,.предоставляемые.аппаратным.обеспечением,.например,.интеллектуальный. Показатели брокеров Kafka 251 интерфейс.управления.платформой.(intelligent.platform.management.interface,. IPMI).для.мониторинга.состояния.аппаратного.обеспечения..При.наличии.про- блемы.вы.сможете.с.помощью.утилиты.dmesg,.отображающей.буфер.ядра,.увидеть. поступающие.в.консоль.системы.журнальные.сообщения. Более.распространенный.тип.аппаратного.сбоя,.приводящий.к.снижению.произво- дительности.Kafka,.—.отказ.диска..Apache.Kafka.необходимы.диски.для.сохранения. сообщений,.так.что.производительность.производителей.напрямую.связана.со. скоростью.фиксации.дисками.этих.операций.записи..Любые.отклонения.в.работе. дисков.выражаются.в.проблемах.с.производительностью.производителей.и.по- токов.извлечения.данных.из.реплик..Именно.последнее.обстоятельство.приводит. к.образованию.недореплицированных.разделов..Поэтому.важно.постоянно.отсле- живать.состояние.дисков.и.быстро.решать.возникающие.проблемы. Одна паршивая овца Отказ одного-единственного диска на одном-единственном брокере может свести на нет производительность всего кластера. Дело в том, что клиенты-произво- дители подключаются ко всем брокерам, на которых располагаются ведущие разделы для темы, а если вы следовали рекомендациям, то эти разделы будут равномерно распределены по всему кластеру. Ухудшение работы одного-един- ственного брокера и замедление запросов производителей приведет к отрица- тельному обратному воздействию на производители и замедлению запросов ко всем брокерам. Прежде.всего.отслеживайте.информацию.о.состоянии.дисков.с.помощью.IPMI.или. другого.интерфейса.аппаратного.обеспечения..Кроме.того,.запустите.в.операцион- ной.системе.утилиты.SMART.(self-monitoring,.analysis.and.reporting.technology.—. технология.автоматического.мониторинга,.анализа.и.оповещения).для.мони- торинга.и.регулярного.тестирования.дисков..Благодаря.им.вы.заранее.узнаете. о.надвигающихся.отказах..Важно.также.следить.за.контроллером.диска,.особенно. если.у.него.есть.функциональность.RAID,.вне.зависимости.от.того,.используете. вы.аппаратный.RAID.или.нет..У.многих.контроллеров.имеется.встроенный.кэш,. используемый.только.при.нормальном.состоянии.контроллера.и.работающей. резервной.батарее.(battery.backup.unit,.BBU)..Отказ.BBU.может.привести.к.от- ключению.кэша.и.снижению.производительности.диска. Передача.данных.по.сети.—.еще.одна.сфера,.в.которой.частичные.сбои.могут.вы- звать.проблемы..Некоторые.из.них.вызваны.неполадками.в.аппаратном.обеспече- нии,.например,.испорченным.сетевым.кабелем.или.коннектором..Некоторые.связа- ны.с.настройками.на.стороне.сервера.или.ближе.по.конвейеру,.в.сетевом.аппаратном. обеспечении..Проблемы.настройки.сети.также.могут.выразиться.в.проблемах. операционной.системы,.например,.недостаточном.размере.сетевых.буферов.или. ситуации,.когда.слишком.много.сетевых.подключений.требуют.слишком.большой. 252 Глава 10 • Мониторинг Kafka доли.общего.объема.памяти..Один.из.ключевых.индикаторов.в.этой.сфере.—.число. зафиксированных.на.сетевых.интерфейсах.ошибок..Если.это.число.растет,.то,.ве- роятно,.имеется.нерешенная.проблема. Если.аппаратных.проблем.нет,.то.часто.имеет.смысл.поискать.работающее.в.той.же. системе.другое.приложение,.которое.потребляет.ресурсы.и.затрудняет.работу. брокера.Kafka..Это.может.быть.установленное.по.ошибке.приложение.или.про- цесс,.например.мониторинговый.агент,.который,.как.предполагается,.работает,.но. на.деле.испытывает.какие-то.проблемы..Воспользуйтесь.системными.утилитами,. например. top ,.для.поиска.процессов,.которые.используют.больше.процессорного. времени.или.оперативной.памяти,.чем.ожидается. Если.все.возможности.исчерпаны,.а.вы.так.и.не.нашли.причину.ненормальной. работы.конкретного.хоста,.то,.вероятно,.существует.разница.в.настройках.по.срав- нению.или.с.брокером,.или.самой.системой..Учитывая.количество.приложений,. работающих.на.любом.сервере,.и.количество.настроек.каждого.из.них,.поиск.раз- личий.—.поистине.титаническая.работа..Поэтому.так.важно.использовать.системы. управления.настройками,.такие.как.Chef.( https://www.chef.io/ ).или.Puppet.( https:// puppet.com ),.для.поддержания.согласованности.настроек.во.всех.ваших.операци- онных.системах.и.приложениях,.включая.Kafka. Показатели брокеров Помимо.недореплицированных.разделов.есть.и.другие.показатели.брокера.в.це- лом,.которые.желательно.отслеживать..Хотя.не.обязательно.задавать.пороговые. значения.оповещения.для.всех.них,.они.служат.источником.ценной.информации. о.брокерах.и.кластере..Их.желательно.включать.во.все.создаваемые.вами.панели. инструментов.мониторинга. Признак текущего контроллера Показатель.«признак текущего контроллера».(active.controller.count).указывает,. является.ли.данный.брокер.текущим.контроллером.кластера..Он.может.принимать. значения.0.и.1,.где.1.указывает.на.то,.что.данный.брокер.сейчас.является.контрол- лером..В.любой.момент.контроллером.может.быть.только.один.брокер,.и.наобо- рот.—.какой-то.один.брокер.всегда.обязан.быть.контроллером.кластера..Если.два. брокера.утверждают,.что.являются.текущим.контроллером.кластера,.то.имеется. проблема:.поток.выполнения.контроллера.не.завершил.работу.как.полагается,.а.за- вис..Вследствие.этого.может.оказаться.невозможно.выполнять.административные. задачи,.например,.перемещения.разделов,.должным.образом..Чтобы.исправить. ситуацию,.необходимо.как.минимум.перезапустить.оба.брокера..Однако.в.случае. появления.лишнего.контроллера.в.кластере.при.контролируемом.останове.броке- ров.зачастую.возникают.проблемы.(подробности.относительно.признака.текущего. контроллера.смотрите.в.табл..10.3). Показатели брокеров Kafka 253 Таблица 10.3. Показатель «признак текущего контроллера» Показатель Признак текущего контроллера Управляемый.компонент.(MBean).JMX kafka.controller:type=KafkaController,. name=ActiveControllerCount Диапазон.значений 0.или.1 Если.ни.один.из.брокеров.не.претендует.на.звание.контроллера.кластера,.послед- ний.не.сможет.должным.образом.реагировать.на.изменения.состояния,.включая. создание.тем/разделов.и.сбои.брокеров..В.подобном.случае.для.выяснения.того,. почему.потоки.выполнения.контроллеров.не.работают.как.полагается,.необходимо. провести.расследование..К.такой.ситуации.может.привести,.например,.нарушение. связности.сети.с.кластером.ZooKeeper..После.исправления.лежащей.в.его.основе. проблемы.имеет.смысл.перезапустить.все.брокеры.кластера.для.сброса.состояния. потоков.выполнения.контроллеров. Коэффициент простоя обработчиков запросов Kafka.использует.два.пула.потоков.выполнения.для.обработки.всех.запросов.кли- ентов:.сетевые.потоки.и.обработчики.запросов..Сетевые.потоки.отвечают.за.чтение. данных.и.их.запись.в.клиенты.по.сети..Это.не.требует.больших.вычислительных. затрат,.то.есть.шансы.исчерпать.ресурсы.сетевых.потоков.невелики..Потоки.же.об- работчиков.запросов.отвечают.за.обслуживание.самих.запросов.клиентов,.к.которо- му.относятся.чтение.сообщений.с.диска.или.их.запись.на.диск..Следовательно,.при. повышении.загруженности.брокеров.влияние.на.этот.пул.потоков.существенно. возрастает.(подробности.о.коэффициенте.простоя.обработчиков.запросов.смотрите. в.табл..10.4). Таблица 10.4. Коэффициент простоя обработчиков запросов Показатель Признак текущего контроллера Управляемый.компонент. (MBean).JMX kafka.server:type=KafkaRequestHandlerPool,.. name=RequestHandlerAvgIdlePercent Диапазон.значений Число.с.плавающей.запятой.между.0.и.1.включительно Разумное использование потоков Может показаться, что вам понадобятся сотни потоков обработчиков запросов, однако на деле нет необходимости задавать в настройках больше потоков, чем процессоров на брокере. Apache Kafka весьма разумно использует обработчики запросов, выгружая в буфер-чистилище запросы, обработка которых займет много времени. Это применяется, в частности, при ограничениях на запросы в виде квот или в случае, когда требуется более одного подтверждения запроса производителя. 254 Глава 10 • Мониторинг Kafka Показатель.«коэффициент.простоя.обработчиков.запросов».отражает.долю.вре- мени.(в.процентах),.в.течение.которого.обработчики.запросов.не.используются.. Чем.меньше.это.значение,.тем.сильнее.загружен.брокер..По.нашему.опыту,.коэф- фициент.простоя.меньше.20.%.указывает.на.потенциальную.проблему,.а.меньше. 10.%.—.на.возникшую.проблему.с.производительностью..Помимо.слишком.мало- мощного.кластера.существует.две.возможные.причины.повышенного.коэффици- ента.использования.потоков.пула..Первая.—.в.пуле.недостаточно.потоков..Вообще. говоря,.число.потоков.обработчиков.запросов.должно.быть.равно.числу.процессо- ров.системы,.включая.процессоры.с.технологией.hyper-threading. Вторая.часто.встречающаяся.причина.—.выполнение.потоками.ненужной.работы. для.каждого.запроса..До.версии.Kafka.0.10.поток.обработчика.запросов.отвечал.за. распаковку.пакетов.всех.входящих.запросов,.проверку.сообщений.и.назначение. смещений,.а.также.дальнейшую.упаковку.пакета.сообщения.со.смещениями.перед. записью.на.диск..Осложняли.ситуацию.синхронные.блокировки.всех.методов. сжатия..В.версии.0.10.появился.новый.формат.сообщений.с.относительными. смещениями.в.пакетах.сообщений..Это.значит,.что.производители.новых.версий. задают.относительные.смещения.перед.отправкой.пакетов.сообщений,.благо- даря.чему.брокер.может.пропустить.шаг.распаковки.пакета.сообщений..Одно.из. важнейших.усовершенствований,.которое.вы.можете.внести.в.свою.систему,.—. обеспечение.поддержки.клиентами.производителей.и.потребителей.формата.со- общений.0.10.и.изменение.версии.формата.сообщений.на.брокерах.тоже.на.0.10.. Это.приведет.к.колоссальному.снижению.использования.потоков.обработчиков. запросов. Суммарная входящая скорость передачи данных Суммарная.по.всем.темам.входящая.скорость.передачи.данных,.выраженная. в.байтах.в.секунду,.может.оказаться.полезной.в.качестве.показателя.количества. сообщений,.получаемых.брокерами.от.клиентов-производителей..Этот.показатель. удобен.при.определении.того,.когда.нужно.расширять.кластер.или.выполнять.дру- гие.работы,.связанные.с.масштабированием..Не.помешает.вычислить.его.и.в.случае,. когда.один.из.брокеров.кластера.получает.больше.трафика,.чем.другие,.что.может. говорить.о.необходимости.перераспределения.разделов.кластера.(подробности. в.табл..10.5). |