Как настроить несколько брокерских узлов? - PullRequest
0 голосов
/ 02 октября 2018

Я попробовал следующее -
./confluent start, что дает -

Этот CLI предназначен только для разработки, а не для производства
https://docs.confluent.io/current/cli/index.html

ИспользованиеCONFLUENT_CURRENT: /tmp/confluent.w1S9B10m Запуск zookeeper
zookeeper is [UP] Запуск kafka
kafka is [UP]
Запуск схемы реестра реестра схемы [UP]
Запуск kafka-rest
kafka-rest is [UP]
Начальное соединение
connect is [UP] Запуск ksql-сервера
ksql-server [UP]

После этого ./kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic users создать 3 раздела для темы «пользователи».Но это дает ошибку-

Ошибка при выполнении команды раздела: Коэффициент репликации: на 3 больше, чем у доступных посредников: 1. [2018-10-03 02: 47: 19,079] ОШИБКА
org.apache.kafka.common.errors.InvalidReplicationFactorException: Коэффициент репликации: на 3 больше, чем у доступных брокеров: 1.
(kafka.admin.TopicCommand $)

Как настроить 3 брокеров? Этот пост похож, но я не знаю, как его реализовать.

Редактировать
Теперь я использую ./confluent start, а затем kafka-server-start /path/to/server-1.properties и сервер-2.properties на разных окнах терминала Linux.Но я получаю сообщение об ошибке «JVM не может выделить память» при попытке запустить сервер 2.

Предупреждение о виртуальной машине 64-разрядного сервера OpenJDK: INFO: os :: commit_memory (0x00000000c0000000, 1073741824, 0)не удалось;error = 'Невозможно выделить память' (errno = 12)

Недостаточно памяти для продолжения среды выполнения Java.
Не удалось выделить собственное выделение памяти (mmap) для отображения 1073741824 байта для фиксации зарезервированной памяти.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Есть простой пример использования terraform и ansible для раскрутки 5 экземпляров AWS, а затем развертывания кластера с 3 брокерами на нем на GitHub

Обратите внимание, что это только для игрывокруг, нам нужно проделать еще некоторую работу, чтобы сделать его более производительным с ELBs перед различными службами, которые вы хотели бы представить в Интернете (REST Proxy, C3).

0 голосов
/ 05 октября 2018

Теперь я использую ./confluent start, а затем kafka-server-start /path/to/server-1.properties и server-2.properties в разных окнах терминала Linux.Но иногда я получаю сообщение «JVM не может выделить память».

Вам не хватает памяти, потому что вы запускаете в общей сложности 3 брокера, 1 Zookeeper, 1 Registry Schema, 1 Kafka Connect Server, 1 REST-сервер Kafka, KSQL-сервер, для общего использования памяти где-то более 8 ГБ ... Если вы загрузите Confluent Enterprise, то вы получите Центр управления вместе с ним для еще большего использования.

Настоятельно рекомендуется не запускать каждую отдельную службу на одной машине, во всяком случае, или даже на нескольких брокерах Kafka на одной машине, потому что, если у вас только один диск, вы будете связаны с IOв любом случае один экземпляр

Если вам нужен только Кафка, вам не нужна команда confluent cli.Запустите команду запуска Zookeeper, затем запустите команду запуска Kafka.

Вы можете запустить любой из них в отдельных терминалах на разных портах и ​​указывать на разные места хранения , но, тем не менее, обаприложения, интенсивно использующие память, поэтому вы должны предоставить им много доступного пространства кучи (на странице Apache Kafka в рабочей среде указано не менее 6G)

0 голосов
/ 02 октября 2018

Вы получаете эту ошибку, потому что вы запросили коэффициент репликации три, но у вас есть только один брокер.Поскольку Kafka не может удовлетворить запрошенный коэффициент репликации (поскольку у вас нет> = 3 посредников), он отказывается создавать тему.

Здесь показано шагов для установки многоузловой среды.Два других соответствующих документа:

Если вы просто хотите использовать одного брокера (например, для разработчика), выможет уменьшить коэффициент репликации:

./kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic users
...