Встановлення кластера Apache Kafka на Debian 12

watch 2m, 11s
views 2

08:50, 30.07.2026

Зміст статті
arrow

  • Короткий посібник: Налаштування Apache Kafka на Debian 12
  • Основні принципи та елементи архітектури Kafka
  • Встановлення Apache Kafka на Debian 12
  • Встановлення Java 8+ на Debian 12
  • Завантажте останню версію Kafka
  • Розпакуйте бінарний архів Kafka
  • Запуск Kafka у режимі Kafka Raft (KRaft)
  • Налаштуйте KRaft для кластера Kafka
  • Змінити каталог журналів
  • Створіть ідентифікатор кластера Kafka
  • Перетворення каталогу журналів Kafka у формат KRaft
  • Налаштування розміру кучі Kafka
  • Запуск брокера Kafka
  • Запуск брокера Kafka у фоновому режимі
  • Запуск брокера Kafka як служби systemd
  • Створення тем, надсилання та отримання повідомлень у Kafka
  • Створення теми вручну
  • Перегляд доступних тем Kafka
  • Запис (створення) та читання (споживання) повідомлень у темах Kafka
  • Видалення тем Kafka
  • Налаштування кластера Kafka з трьома вузлами
  • Управління кластером Kafka через графічний інтерфейс

Короткий посібник: Налаштування Apache Kafka на Debian 12

Apache Kafka — це потужна розподілена платформа потокової передачі подій, призначена для розподілу повідомлень із високою пропускною здатністю та низькою затримкою.

Налаштування Kafka на Debian 12 вимагає ретельного конфігурування для забезпечення надійної та масштабованої потокової передачі даних.

Цей посібник містить покрокову інструкцію з інсталяції та налаштування кластера Apache Kafka на Debian 12, у якій висвітлено найважливіші етапи та параметри конфігурації.

Основні принципи та елементи архітектури Kafka

Архітектура Kafka базується на кількох основних компонентах:

  • Брокери: Kafka працює як кластер, що складається з одного або кількох серверів, які називаються брокерами та керують зберіганням і розподілом повідомлень.
  • Теми: Іменовані категорії, до яких надсилаються записи та з яких вони зчитуються.
  • Виробники: Додатки, що надсилають записи до тем Kafka.
  • Споживачі: Додатки, що зчитують записи з тем.
  • Розділи: Теми Kafka, розділені на секції для кращого розподілу між декількома брокерами.
  • Реплікація: Кожен розділ реплікується, причому один з них відповідає за запити на читання та запис, а інші реплікують дані.
  • Потоки: Бібліотека потокової обробки для додатків та мікросервісів, що працюють у режимі реального часу.
  • ZooKeeper (опціонально): Раніше використовувався для управління метаданими, зараз замінений режимом Kafka Raft (KRaft) для кращого самоуправління.

Встановлення Apache Kafka на Debian 12

Встановлення Java 8+ на Debian 12

Для роботи Apache Kafka потрібна Java 8 або новіша версія. Виконайте такі кроки для встановлення Java:

  1. Оновіть індекс пакетів:
    sudo apt update
  2. Встановіть пакет OpenJDK:
    sudo apt install -y openjdk-11-jdk
  3. Перевірте встановлення Java:
    java -version

Завантажте останню версію Kafka

  1. Перейдіть за посиланням сторінку завантаження Apache Kafka, щоб завантажити останню версію.
  2. Завантажте Kafka за допомогою wget або curl:
    wget https://downloads.apache.org/kafka/3.x.x/kafka_2.13-3.x.x.tgz

Розпакуйте бінарний архів Kafka

Розпакуйте завантажений архів:

tar -xzf kafka_2.13-3.x.x.tgz

Перемістіть розпаковану папку до /opt:

sudo mv kafka_2.13-3.x.x /opt/kafka

Запуск Kafka у режимі Kafka Raft (KRaft)

Режим KRaft усуває необхідність використання ZooKeeper, спрощуючи управління кластером Kafka. Файли конфігурації KRaft можна знайти за адресою /opt/kafka/config/kraft/.

Налаштуйте KRaft для кластера Kafka

  1. Створіть новий файл конфігурації або відредагуйте існуючий server.properties:
    sudo nano /opt/kafka/config/kraft/server.properties
  2. Додайте або змініть такі властивості:
    process.roles=broker,controller node.id=1 controller.quorum.voters=1@<broker-ip>:9093 listeners=PLAINTEXT://<broker-ip>:9092,CONTROLLER://<broker-ip>:9093 log.dirs=/var/lib/kafka/data

Змінити каталог журналів

Переконайтеся, що журнали Kafka зберігаються в каталозі з достатнім обсягом дискового простору; за замовчуванням журнали зберігаються в /tmp/kraft-combined-logs” каталозі.

Щоб гарантувати збереження журналів у каталозі з достатнім обсягом вільного місця, за потреби оновіть параметр log.dirs у файлі server.properties:

log.dirs=/new/path/to/kafka-logs

Створіть ідентифікатор кластера Kafka

Ідентифікатор кластера — це те, що ідентифікує кластер у режимі KRaft.

  1. Створіть ідентифікатор кластера:
    /opt/kafka/bin/kafka-storage.sh random-uuid
  2. Збережіть згенерований ідентифікатор та відформатуйте каталог журналів:
    /opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties

Перетворення каталогу журналів Kafka у формат KRaft

Використовуючи ідентифікатор кластера, який ми створили на попередньому кроці, ми можемо відформатувати каталоги журналів. Це робиться для кожного брокера Kafka, щоб у нього був каталог для збереження своїх логів (якщо у кластері є кілька вузлів).

  1. Використовуючи ідентифікатор кластера та наведену нижче команду, відформатуйте каталог журналів:
    /opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties
  2. Замініть UUID на URaeRekUQAyy8wLMNX2Q-w, щоб команда мала такий вигляд:
    /opt/kafka/bin/kafka-storage.sh format -t URaeRekUQAyy8wLMNX2Q-w \ -c /opt/kafka/config/kraft/server.properties

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

/opt/kafka/bin/kafka-storage.sh format \ -t /opt/kafka/bin/kafka-storage.sh random-uuid \ -c /opt/kafka/config/kraft/server.properties

Налаштування розміру кучі Kafka

Щоб забезпечити стабільну продуктивність Kafka, можна відповідно налаштувати розмір кучі; розмір кучі — це, по суті, обсяг пам’яті, що належить віртуальній машині Java (JVM), на якій працює Kafka. Необхідно переконатися, що розмір купи достатній для обробки обсягу трафіку, який доведеться обробляти вашому серверу.

Одним із параметрів, що використовує пам’ять і впливає на тривалість зберігання даних у Kafka, є log.retention.hours, який за замовчуванням встановлено на 7 днів. Також можна використовувати інші параметри, такі як log.retention.minutes, log.retention.ms, або log.retention.bytes, також можуть бути використані; ці параметри можна змінити у файлі /opt/kafka/config/kraft/server.properties.

Наприклад, щоб зберігати дані протягом 8 годин, використовуйте такий рядок:

log.retention.hours=8

Потім збережіть файл і закрийте його.

Запуск брокера Kafka

Запуск брокера Kafka у фоновому режимі

Запустіть брокера Kafka вручну:

/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties

Запуск брокера Kafka як служби systemd

  • Створіть файл служби kafka.service:

sudo nano /etc/systemd/system/kafka.service

  • Додайте таку конфігурацію:

[Unit] Description=Apache Kafka Service After=network.target

[Service] Type=simple ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties Restart=on-failure User=kafka

[Install] WantedBy=multi-user.target

  • Перезавантажте systemd та запустіть Kafka:

sudo systemctl daemon-reload sudo systemctl start kafka sudo systemctl enable kafka

Створення тем, надсилання та отримання повідомлень у Kafka

За умови правильної конфігурації ваші виробники можуть публікувати повідомлення у темах Kafka, а споживачі — підписуватися на кілька тем та читати записи з них.

Створення теми вручну

Щоб створити тестову тему на сервері/брокера Kafka, скористайтеся командою:

/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server <broker-ip>:9092 --partitions 1 --replication-factor 1

Перегляд доступних тем Kafka

Щоб переглянути доступні теми Kafka, скористайтеся командою:

/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server <broker-ip>:9092

Запис (створення) та читання (споживання) повідомлень у темах Kafka

  • Щоб створити повідомлення, скористайтеся такою командою:

/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \ --topic kafka-topic-test

Після запуску з’явиться такий запит: >

  • Введіть своє повідомлення та натисніть ENTER:

>Hello Kafka, this is my message

  • Щоб прочитати повідомлення, скористайтеся командою:

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-topic-test

Видалення тем Kafka

Щоб видалити одну тему, скористайтеся командою:

/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <назва-теми>

Щоб видалити всі теми, скористайтеся командою:

for i in /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092;do /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic $i; done

Налаштування кластера Kafka з трьома вузлами

Налаштуйте кілька брокерів, створивши окремі файли server.properties для кожного вузла з унікальними значеннями node.id, listeners та log. Налаштуйте параметр controller.quorum.voters так, щоб він включав усі вузли.

Управління кластером Kafka через графічний інтерфейс

Такі інструменти, як Kafka Manager, Conduktor та Lenses.io, надають графічні інтерфейси для моніторингу та управління кластерами Kafka. З нашого досвіду, ці інструменти спрощують адміністрування.

Налаштування Apache Kafka на Debian 12 із використанням KRaft забезпечує надійну, децентралізовану передачу повідомлень та масштабовані конвеєри даних, що є необхідним для сучасних додатків, які працюють на основі даних.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-10%

CPU
CPU
10 Epyc Cores
RAM
RAM
64GB
Space
Space
400 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 65536
OS
CentOS
Software
Software
Keitaro

149.04

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45

При оплаті за рік

-9.7%

CPU
CPU
10 Epyc Cores
RAM
RAM
64 GB
Space
Space
300 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 65536 Windows

139.49

При оплаті за рік

-5%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 1024 Windows

12.1

При оплаті за рік

-10%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
25 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 2048 Windows

9.9

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

18.1

При оплаті за рік

-21%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
8 TB
wKVM-SSD 8192 Metered Windows

65

При оплаті за рік

-9.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 4096 Windows

72

При оплаті за рік

-9.5%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 8192 Windows

121.5

При оплаті за рік

-15.6%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 512 Metered Linux

5.33

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.