Кафки разделы не синхронизированы на определенных узлах - PullRequest
0 голосов
/ 27 июня 2018

Я использую кластер Kafka на 3 экземплярах EC2. Каждый экземпляр запускает kafka (0.11.0.1) и zookeeper (3.4). Мои темы настроены так, что у каждого есть 20 разделов и ReplicationFactor из 3.

Сегодня я заметил, что некоторые разделы отказываются синхронизироваться со всеми тремя узлами. Вот пример:

bin/kafka-topics.sh --zookeeper "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181" --describe --topic prod-decline
Topic:prod-decline    PartitionCount:20    ReplicationFactor:3    Configs:
    Topic: prod-decline    Partition: 0    Leader: 2    Replicas: 1,2,0    Isr: 2
    Topic: prod-decline    Partition: 1    Leader: 2    Replicas: 2,0,1    Isr: 2
    Topic: prod-decline    Partition: 2    Leader: 0    Replicas: 0,1,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 3    Leader: 1    Replicas: 1,0,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 4    Leader: 2    Replicas: 2,1,0    Isr: 2
    Topic: prod-decline    Partition: 5    Leader: 2    Replicas: 0,2,1    Isr: 2
    Topic: prod-decline    Partition: 6    Leader: 2    Replicas: 1,2,0    Isr: 2
    Topic: prod-decline    Partition: 7    Leader: 2    Replicas: 2,0,1    Isr: 2
    Topic: prod-decline    Partition: 8    Leader: 0    Replicas: 0,1,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 9    Leader: 1    Replicas: 1,0,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 10    Leader: 2    Replicas: 2,1,0    Isr: 2
    Topic: prod-decline    Partition: 11    Leader: 2    Replicas: 0,2,1    Isr: 2
    Topic: prod-decline    Partition: 12    Leader: 2    Replicas: 1,2,0    Isr: 2
    Topic: prod-decline    Partition: 13    Leader: 2    Replicas: 2,0,1    Isr: 2
    Topic: prod-decline    Partition: 14    Leader: 0    Replicas: 0,1,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 15    Leader: 1    Replicas: 1,0,2    Isr: 2,0,1
    Topic: prod-decline    Partition: 16    Leader: 2    Replicas: 2,1,0    Isr: 2
    Topic: prod-decline    Partition: 17    Leader: 2    Replicas: 0,2,1    Isr: 2
    Topic: prod-decline    Partition: 18    Leader: 2    Replicas: 1,2,0    Isr: 2
    Topic: prod-decline    Partition: 19    Leader: 2    Replicas: 2,0,1    Isr: 2

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

Я не вижу каких-либо явных ошибок в журналах, поэтому мне трудно понять, как отладить ситуацию. Любые советы будут с благодарностью.

Спасибо!

РЕДАКТИРОВАТЬ: Некоторая дополнительная информация ... Если я проверяю метрики на узле 2 (тот, который содержит полные данные), он понимает, что некоторые разделы не реплицируются правильно .:

$>get -d kafka.server -b kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions *
#mbean = kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions:
Value = 930;

Узлы 0 и 1 нет. Кажется, они думают, что все в порядке:

$>get -d kafka.server -b kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions *
#mbean = kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions:
Value = 0;

Это ожидаемое поведение?

1 Ответ

0 голосов
/ 27 июня 2018

Попробуйте увеличить replica.lag.time.max.ms.

Объяснение выглядит так:

Если реплика не может отправить запрос на выборку дольше, чем replica.lag.time.max.ms, она считается мертвой и удаляется из ISR.

Если реплика начинает отставать от лидера дольше, чем replica.lag.time.max.ms, то она считается слишком медленной и удаляется из ISR. Таким образом, даже если наблюдается всплеск трафика и большие партии сообщений записываются на лидере, если реплика не остается за лидером для replica.lag.time.max.ms, она не будет перетасовываться в и из ISR.

...