Коэффициент увеличения реплики кластера Кафки не работает - PullRequest
0 голосов
/ 30 ноября 2018

Привет Я сталкиваюсь со странной проблемой с увеличением коэффициента репликации Кафки при выполнении шагов, описанных в этом документе: https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor

Симптом выглядит так, что увеличение коэффициента реплики не работает вообще.

Пожалуйста, помогите

Моя настройка Kafka:

Версия Kafka: kafka_2.12-2.1.0

Сервер: имя хоста server-0 (192.168.0.1)

  • Идентификатор брокера Kafka: 0
  • Порт Kafka: 9092
  • Порт Zookeeper: 2181

Сервер: имя хоста сервер-1 (192.168.0.2)

  • Идентификатор брокера Kafka: 1
  • Порт Kafka: 9092
  • Нет Zookeeper на сервере-1

Темы

  • Количество тем: 1
  • Название темы: DATA
  • Количество разделов: 1

Тема DATA создается с репликой-фактором 1 с сервера 0 только сначала

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic DATA

результат выглядит как

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:1 Configs: Topic: DATA Partition: 0 Leader: 0 Replicas: 0 Isr: 0

после создания темы я выдал несколько тестовых сообщений

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic DATA message 1 message 2

Затем фактор реплики для темы DATA увеличивается до 2 путем выполнения команд только на сервере 0

ниже файла jsonиспользуется с Kafka-reassign-partitions.sh для увеличения коэффициента репликации

{ "version":1, "partitions":[ {"topic":"DATA","partition":0,"replicas":[0,1]} ] }

командной строки:

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file topics-to-expand.json --execute

НаПоверхность, результат выглядит хорошо, описывая темы

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:2 Configs: Topic: DATA Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1

Я подготовил еще несколько тестовых сообщений здесь

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic DATA message 3 message 4

Однако проблема возникает, когда я пытался провести тестирование с сервера-1

Теперь я убил процесс kafka с сервера-0

kill -9 [kafka-pid]

Проблемапроисходит, когда я запускаю консоль-потребителя с сервера-1

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic DATA --from-beginning

Нет сообщений, и консоль просто блокируется на пустом экране.

Я думаюсогласно документу, я должен видеть сообщения, потому что реплика синхронизирована?Нет?

Описание темы показывает

bin/kafka-topics.sh --zookeeper server-0:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:2 Configs: Topic: DATA Partition: 0 Leader: 1 Replicas: 0,1 Isr: 1

Затем я перезапустил процесс kafka с сервера-0, экран консоли потребителя внезапно отображает все сообщения вhistory

message 1 message 2 message 3 message 4

Похоже, что потребитель с сервера-1 не использовал локально данные с сервера-1, поскольку данные тем не реплицируются на сервер-1.Вместо этого он по-прежнему ожидает возвращения сервера 0 для предоставления данных.Даже сервер-1 помечен как лидер.

Может кто-нибудь повторить мою проблему?Я хочу прикрепить свои свойства, но я не знаю, как прикрепить файлы в stackoverflow, извините за это ...

1 Ответ

0 голосов
/ 30 ноября 2018

Вдохновленный этим постом и выяснив, почему.

Уничтожение узла с помощью __consumer_offsets не приводит к потреблению сообщений у потребителей

Причиной моего вышеупомянутого симптома является то, что по умолчаниюoffsets.topic.replication.factor=3 но у меня есть только 2 брокера (узла) в кластере.Когда Кафка впервые создал тему __consumer_offsets, он возвращается в offsets.topic.replication.factor=1 молча (якс).

Изменение offsets.topic.replication.factor=2 в файле свойств решает вышеуказанную проблему.(да проверено!)

...