Смена лидера Kafka Broker без эффекта - PullRequest
0 голосов
/ 16 января 2020

У меня есть 3 брокера кафки, с 3 разделами:

broker.id 1001: 10.18.0.73:9092 LEADER

broker.id 1002: 10.18.0.73:9093

broker.id 1005: 10.18.0.73:9094

Zookeeper установлен с 127.0.0.1:2181

Запуск с:

1001 -> .\kafka-server-start.bat ..\..\config\server.properties
1002 -> .\kafka-server-start.bat ..\..\config\server1.properties
1005 -> .\kafka-server-start.bat ..\..\config\server2.properties

Это server.properties

broker.id=-1
listeners=PLAINTEXT://10.18.0.73:9092
advertised.listeners=PLAINTEXT://10.18.0.73:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.18.0.73:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
advertised.port=9092
advertised.host.name=10.18.0.73
port=9092

Это server1.properties

broker.id=-1
listeners=PLAINTEXT://10.18.0.73:9093
advertised.listeners=PLAINTEXT://10.18.0.73:9093
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs4
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
advertised.port=9093
advertised.host.name=10.18.0.73
port=9093

Это server2.properties

broker.id=-1
listeners=PLAINTEXT://10.18.0.73:9094
advertised.listeners=PLAINTEXT://10.18.0.73:9094
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs2
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
advertised.port=9094
advertised.host.name=10.18.0.73
port=9094

в папке C: \ kafka_2 .12-2.4.0 \ config

Run All

enter image description here

Run Producer

.\kafka-console-producer.bat --broker-list 10.18.0.73:9092,10.18.0.73:9093,10.18.0.73:9094 --topic clinicaleventmanager

Run Consumer

.\kafka-console-consumer.bat --bootstrap-server 10.18.0.73:9092,10.18.0.73:9093,10.18.0.73:9094 --topic clinicaleventmanager

Я запускаю тестовое сообщение

enter image description here

Получите нормально!

Теперь я выключаю брокер 1001 (лидер)

enter image description here

Новый лидер - 1002

enter image description here

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

[2020-01-16 15:33:35,802] WARN [Consumer clientId=consumer-console-consumer-56669-1, groupId=console-consumer-56669] Connection to node 2147482646 (/10.18.0.73:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

, если я попытаюсь отправить ано Это сообщение не читается потребителем enter image description here

Новый лидер 1002, похоже, не отправляет сообщения. Почему ?

Если я запускаю 1001 broker.id, все работает. Спасибо

1 Ответ

1 голос
/ 17 января 2020

Во-первых, Кафка никогда не «отправляет (толкает) сообщения», потребитель просит их.

Во-вторых, может показаться, что вы ничего не изменили, кроме слушателей, порта и каталога журнала.

Вы не создаете явно ни одной топи c, поэтому вы получите значения по умолчанию для одного раздела и одной реплики. Для вашего topi c и внутренних смещений потребителя topi c

Если какая-либо реплика отключена от остановленного вами брокера, то никакой другой процесс не сможет прочитать (или записать) в него реплика, независимо от того, какой посредник является контроллером.

Итак, измените коэффициент репликации смещений (и транзакций) на 3 и повторите попытку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...