Коэффициент увеличения реплики кластера Кафки не работает
Привет, я столкнулся со странной проблемой с увеличением коэффициента репликации Кафки при выполнении шагов в этом документе: https://kafka.apache.org/documentation/
Симптом выглядит так, что увеличение коэффициента репликации не работает вообще.
Пожалуйста помоги
Моя настройка Кафки
Кафка версия: кафка_2.12-2.1.0
Сервер: имя хоста server-0 (192.168.0.1)
- Kafka Broker Id: 0
- Порт Кафка: 9092
- Порт зоопарка: 2181
Сервер: имя хоста сервер-1 (192.168.0.2)
- Kafka Broker Id: 1
- Порт Кафка: 9092
- Нет Zookeeper на сервере-1
темы
- Количество тем: 1
- Название темы: ДАННЫЕ
- Количество разделов: 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
Теперь я убил процесс кафки с сервера-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, на экране консоли потребителя неожиданно отображаются все сообщения в истории.
message 1
message 2
message 3
message 4
Похоже, что потребитель с сервера-1 не использовал локально данные с сервера-1, потому что данные тем не реплицируются на сервер-1. Вместо этого он по-прежнему ожидает возвращения сервера 0 для предоставления данных. Даже сервер-1 помечен как лидер.
Кто-нибудь может повторить мою проблему? Я хочу прикрепить свои свойства, но я не знаю, как прикрепить файлы в stackru, извините за это...
1 ответ
Вдохновленный этим постом и выяснил, почему.
Уничтожение узла с помощью __consumer_offsets не приводит к потреблению сообщений у потребителей
Причина моего вышеуказанного симптома заключается в том, что по умолчанию offsets.topic.replication.factor=3
но у меня есть только 2 брокера (узлы) в кластере. Когда Кафка впервые создал __consumer_offsets
тема, она не возвращается offsets.topic.replication.factor=1
тихо (яки).
изменения offsets.topic.replication.factor=2
в файле свойств решает вышеуказанную проблему. (да проверено!)