Как настроить 3 узла кафки (1 основная и 2 реплики) на 3 разных компьютерах? - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу иметь 3 реплики kafka на 3 разных машинах.

На первой машине я запускаю zookeeper со следующим файлом конфигурации:

dataDir=/root/kafka/zookeeper
clientPort=2181
clientPortAddress=172.16.1.1
maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5
server.1=0.0.0.0:2888:3888
server.2=172.16.1.2:2888:3888
server.3=172.16.1.3:2888:3888

, где dataDir содержит myid файл со значением 1.

На первом компьютере я также запускаю сервер kafka со следующим файлом конфигурации:

broker.id=1
port=9001
log.dirs=/root/logs/kafka-logs
zookeeper.connect=172.16.1.1:2181,172.16.1.2:2181,
                  172.16.1.3:2181
zookeeper.connection.timeout.ms=6000
advertised.host.name=172.16.1.1

На втором и третьем компьютере я запускаю zookeeper и kafkaсерверы с похожими конфигурационными файлами.

Затем на первой машине я запускаю продюсер, чтобы создать 1000000 сообщений.

Теперь я хочу использовать эти 1000000 сообщений у потребителя на каждой из 3 машин.

Проблема в следующем:

  • Если я уничтожу сервер kafka на первом компьютере, ни один потребитель не будет использовать сообщения на втором или третьем компьютере.Другие реплики, похоже, не играют роли в репликации созданных сообщений.

Мой вопрос: как правильно настроить сервер kafka и 2 реплики на разных компьютерах, чтобы потребители могличитать сообщения от kafka, включая случаи сбоев сервера kafka ?

1 Ответ

0 голосов
/ 26 сентября 2019

Вам нужно будет установить коэффициент репликации смещений потребителей равным 3. В противном случае потребители будут зависать при попытке поиска, откуда им следует читать, когда тема недоступна

offsets.topic.replication.factor=3

Аналогично, существуетнастройка для темы транзакции, если вы планируете использовать одноразовые функции

Также, пожалуйста, не храните данные в / tmp, если это важно для вас

...