В этой статье мы установим, настроим и запустим сервис Kafka. Установка будет выполнятся на системе Ubuntu 18.04 для Kafka 2.6.0.
Полный список статей по теме тут.
Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.
Репозитории с примерам из статей по способам аутентификаци и авторизации — https://github.com/BlockWit/kafka-security-examples.
Установка
- Заходим в свою домашнюю директорию или туда где, Вам удобно работать
- Качаем архив
1wget https://apache-mirror.rbc.ru/pub/apache/kafka/2.6.0/kafka_2.12-2.6.0.tgz - Распаковываем
1tar -xvf kafka_2.12-2.6.0.tgz - Перемещаем в /opt/kafka
1sudo mv kafka_2.12-2.6.0 /opt/kafka - Создаем пользователя kafka
1sudo useradd kafka -m - Устанавливаем ему пароль
1sudo passwd kafka - Добавляем его в группу kafka
1sudo adduser kafka kafka - Назначаем директории /opt/kafka пользователя kafka и группу kafka, чтобы этот пользователь смог запускать kafka
1sudo chown -R kafka:kafka /opt/kafka - Создаем директорию для логов Kafka
1sudo mkdir /tmp/kafka-logs - Назначаем директории /tmp/kafka-logs пользователя kafka и группу kafka, чтобы этот пользователь смог запускать работать в этой директории
1sudo chown -R kafka:kafka /tmp/kafka-logs - Создам директорию /tmp/zookeeper для рабочих файлов ZooKeeper
1sudo mkdir /tmp/zookeeper - Назначаем директории /tmp/zookeeper пользователя kafka и группу kafka, чтобы этот пользователь смог работать с директорией (ZooKeeper также будем запускать от пользователя kafka)
1sudo chown -R kafka:kafka /tmp/zookeeper - Создаем сервис ZooKeeper в /etc/systemd/system/zookeeper.servicе. Для этого открываем vim из под sudo (или удобный Вас редактор):
1sudo vim /etc/systemd/system/zookeeper.service
и помещаем туда текст
123456789101112131415[Unit]Description=zookeeperAfter=syslog.target network.target[Service]Type=simpleUser=kafkaGroup=kafkaExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.propertiesExecStop=/opt/kafka/bin/zookeeper-server-stop.sh[Install]WantedBy=multi-user.target - Создаем сервис Kafka в /etc/systemd/system/kafka.service. Для этого открываем vim из под sudo (или удобный Вас редактор):
1sudo vim /etc/systemd/system/kafka.service
и помещаем туда текст
1234567891011121314[Unit]Description=Apache KafkaRequires=zookeeper.serviceAfter=zookeeper.service[Service]Type=simpleUser=kafkaExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /tmp/kafka-logs/kafka.log 2>&1'ExecStop=/opt/kafka/bin/kafka-server-stop.shRestart=on-abnormal[Install]WantedBy=multi-user.target - Заставим демон перечитать сервисы (команда только заставляет подхватить изменения, но не перезапускает сервисы)
1sudo systemctl daemon-reload
Мы подготовили все необходимое для настройки.
Настройка
Настройка ZooKeeper
Откройте конфигурационный файл ZooKeeper с помощью vim из под sudo (или удобным Вам редактором):
1 |
sudo vim /opt/kafka/config/zookeeper.properties |
И поместите туда текст:
1 2 3 |
dataDir=/tmp/zookeeper clientPort=2181 maxClientCnxns=0 |
Настройка Kafka
Откройте конфигурационный файл Kafka с помощью vim из под sudo (или удобным Вам редактором):
1 |
sudo vim /opt/kafka/config/server.properties |
И поместите туда текст:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
broker.id=0 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=localhost:2181 zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0 delete.topic.enable=true advertised.host.name=myhost.com listeners=PLAINTEXT://localhost:9092 advertised.listeners=PLAINTEXT://localhost:9092 |
Вместо localhost укажите имя Вашего сервера или IP в последних трех строчках. Если планируете подключаться к Kafka извне, а скорее всего так и будет, то не указывайте localhost или 127.0.0.1, а укажите внешний IP или доменное имя Вашей машины.
Запуск
Для запуска достаточно выполнить две команды
1 2 |
sudo systemctl start zookeeper sudo systemctl start kafka |
Они запускают сервис ZooKeeper и Kafka соответственно.
Если хотите чтобы сервисы поднимались автоматически при каждом запуске системы то выполните:
12 sudo systemctl enable zookeepersudo systemctl enable kafka
Резюме
В этой статье мы научились установили, настроили и запустили Kafka.
Полный список статей по теме тут.
Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.
Репозитории с примерам из статей по способам аутентификаци и авторизации — https://github.com/BlockWit/kafka-security-examples.