У меня есть кластер Kafka с 3-мя брокерами, настроенными следующим образом:
Broker-0 : broker.id=0 ; listeners=PLAINTEXT://localhost:9092 ; log.dirs=/opt/data/kafka/logs-0
Broker-1 : broker.id=1 ; listeners=PLAINTEXT://localhost:9093 ; log.dirs=/opt/data/kafka/logs-1
Broker-2 : broker.id=2 ; listeners=PLAINTEXT://localhost:9094 ; log.dirs=/opt/data/kafka/logs-2
Производитель нацелен на Broker-2 для публикации сообщений
sh-3.2# ./kafka-console-producer.sh --broker-list localhost:9094 --topic clusterTopic
Я начал тестирование со всеми брокерами иработает
sh-3.2# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic clusterTopic
Topic:clusterTopic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: clusterTopic Partition: 0 Leader: 0 Replicas: 0,1,2 Isr: 2,0,1
sh-3.2#
На этом этапе все сообщения, опубликованные производителем, получены потребителем
Затем я убил Broker-0 (текущего лидера)
sh-3.2# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic clusterTopic
Topic:clusterTopic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: clusterTopic Partition: 0 Leader: 1 Replicas: 0,1,2 Isr: 2,1
sh-3.2#
В этот момент потребитель не получает сообщений, опубликованных производителем.
Затем я включил обратно Broker-0
sh-3.2# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic clusterTopic
Topic:clusterTopic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: clusterTopic Partition: 0 Leader: 1 Replicas: 0,1,2 Isr: 2,1,0
sh-3.2#
. В этот момент все сообщения, опубликованные производителемполучатель получает должным образом
Затем я убил Broker-1 (текущий лидер)
sh-3.2# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic clusterTopic
Topic:clusterTopic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: clusterTopic Partition: 0 Leader: 0 Replicas: 0,1,2 Isr: 2,0
sh-3.2#
На этом этапе все сообщения, опубликованные производителем, все еще должным образом принимаются потребителем.
Почему поведение такого брокера отличается от брокера?
Обновление # 1
Я заметил кое-что полезное:
Когда я убиваю Брокера-1, я вижуна консоли потребителя появляется предупреждение (куча раз)
[2018-06-07 13:59:00,866] WARN [Consumer clientId=consumer-1, groupId=console-consumer-20882] Connection to node 1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
Но когда я убиваю Broker-0, я вижу эти предупреждения (кучу раз)
[2018-06-07 14:04:08,433] WARN [Consumer clientId=consumer-1, groupId=console-consumer-20882] Connection to node 2147483647 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2018-06-07 14:04:08,434] WARN [Consumer clientId=consumer-1, groupId=console-consumer-20882] Connection to node 0 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
IИнтересно, что это за брокер с ID = 2147483647?