mybpm!
Скачать в формате: PDF pdf DOCX word

3) Установка Kafka по топологии Kafka1-F1

В этом руководстве кластер Kafka будет развёртываться на серверах: worker4 worker5 worker6 - в вашем случае это могут быть другие сервера.

Кафка будет устанавливать мимо kubernetes - как отдельный сервис, управляемый подсистемой systemd.

3.1) Предварительные требование

Необходимо иметь один сервер, на который будет устанавливать кафку.

Необходимо иметь ssh-доступ к этому серверу. В нашем случае доступ к серверу будет осуществляться с помощью команды:

ssh worker4

В вашем случае это может быть иначе, учтите это в дальнейшем.

3.2) Установка OpenJDK

Zookeeper написан на языке программирования Java и поэтому он нуждается в JVM-е, и её нужно установить. Для этого запустите команды:

ssh worker4 sudo apt install -y openjdk-17-jre

3.3) Скачивание и проверка дистрибутивов

Также зайдите на своём компьютере в директорию dist

cd dist

Если её нет, то создайте. И скачайте последнюю версию программы со страницы:

https://kafka.apache.org/downloads

Например, такими командами:

wget https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz
wget https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz.sha512

Проверяем скаченный дистрибутив на отсутствие ошибок скачивания:

cat kafka_2.13-3.4.0.tgz.sha512
sha512sum kafka_2.13-3.4.0.tgz

Проверьте хэш-суммы - они должны быть идентичны.

3.4) Копирование дистрибутивов на сервера

Предполагается, что на серверах уже есть директория dist в домашней директории пользователя. Если нет, то создайте:

ssh worker4 mkdir dist

Дальше нужно скопировать скаченный архив на сервера, где он будет устанавливаться:

scp kafka_2.13-3.4.0.tgz worker4:dist/

Теперь его нужно установить. Далее будет описано как установить его на один сервер. Вам нужно будут это сделать для всех серверов, кластера Kafka.

3.5) Установка на сервер

Заходим на сервер и в папку dist:

ssh worker4
cd dist

Все программы в системах Unix, которые устанавливаются вручную, устанавливаются в директорию /opt. (Ubuntu является Linux-ом, а Linux является Unix-ом)

Убедитесь, что она существует. Если нет, то создайте её.

sudo mkdir -p /opt/

Вы находитесь в директории ~/dist. Распакуйте дистрибутив:

tar xvf kafka_2.13-3.4.0.tgz

Появиться директория:

kafka_2.13-3.4.0

Перенесите её в opt:

sudo mv ./kafka_2.13-3.4.0 /opt/

Далее перейдём в папку /opt

cd /opt

Поменяйте владельца файлов на root:

sudo chown -Rv root: ./kafka_2.13-3.4.0

Делаем символическую ссылку (чтобы в последствии было проще обновлять версию)

sudo ln -s ./kafka_2.13-3.4.0 kafka

Теперь переходим в папку kafka

cd /opt/kafka/

Создаём пользователя, из под которого будет работать сервер:

sudo useradd kafka

Создаём директорию, где будут храниться данные и логи:

sudo mkdir -p /data/kafka/data
sudo mkdir -p /data/kafka/logs

У вас эта директория может оказаться где-то в другом месте. Если так, то в дальнейшем не забудьте менять эту директорию на нужную вам.

Передадим их в собственность пользователя kafka:

sudo chown -Rv kafka: /data/kafka

Перенаправим логи:

sudo ln -s /data/kafka/logs logs

Теперь нужно настроить конфиг Kafka:

sudo mcedit -b config/server.properties

И меняем его текст на следующий:

broker.id=0
listeners=PLAINTEXT://192.168.17.134:9092
#advertised.listeners=PLAINTEXT://your.host.name:9092
#listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
auto.create.topics.enable=true
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=/data/kafka/data
unclean.leader.election.enable=true
num.partitions=48
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.flush.interval.messages=10000
#log.flush.interval.ms=1000
log.retention.hours=-1
#log.retention.bytes=1073741824
#log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

zookeeper.connect=192.168.17.134:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

Также в параметре listeners=PLAINTEXT://192.168.17.134:9092 настроить IP-адрес текущего сервера

Теперь сделаем пробный запуск сервера Kafka выполнив команду:

sudo -u kafka bin/kafka-server-start.sh config/server.properties

Далее посыпятся логи - если они нормальные, значит сервер запущен. Иначе надо исправить ошибки.

Ctrl+C и сервер остановиться.

3.6) Настройка systemd

Теперь нужно настроить сервис в операционной системе. Для этого создайте файл:

sudo mcedit -b /etc/systemd/system/kafka.service

И вставьте в него текст:

[Unit]
Description=Kafka Daemon
Documentation=https://kafka.apache.org/
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/kafka
User=kafka
Group=kafka
Environment=KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

После этого запустите:

sudo systemctl daemon-reload

И активируйте новый сервис:

sudo systemctl enable kafka

Ну а теперь запустите сам сервер как сервис в операционной системе:

sudo systemctl start kafka

Посмотреть статус сервиса можно командой:

sudo systemctl status kafka

Должно вылететь что-то типа:

● kafka.service - Kafka Daemon
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2023-03-16 03:27:31 UTC; 4s ago
Docs: https://kafka.apache.org/
Process: 25408 ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties 
(code=exited, status=0/SUCCESS)
Main PID: 25747 (java)
Tasks: 73 (limit: 9402)
Memory: 318.8M
CPU: 3.768s
CGroup: /system.slice/kafka.service
└─25747 java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 
-XX:+ExplicitGCInvokesConcurrent -XX:MaxInlineLevel=15 -Djava.awt.headless=true "-Xlog:gc*>

Mar 16 03:27:31 worker4 systemd[1]: Starting Kafka Daemon...
Mar 16 03:27:31 worker4 systemd[1]: Started Kafka Daemon.