Что такое Kafka, для чего используется и логика работы подробно расписана в моём телеграм канале.
Присоединяйся

Цель:
- 3 Kafka-брокера (для отказоустойчивости)
- 3 контроллера (KRaft controller nodes) будем совмещать с брокерами, но на проде лучше выделить
Требования
Для прода, для теста делить ресурсы на / 2:
- CPU: 4
- RAM: 16 GB
- Disk: SSD. Минимум 500 ГБ на брокера
- Сеть: 1 Gbps минимум
- Система: Ubuntu или CentOS
- Установленный anbible: 2.15 и выше
Создаём директорию:
Клонируем репозиторий:
1
| git clone https://github.com/dragomirr/ansible-role-kafka.git roles/kafka
|
Создаём директорию с инвентари:
1
2
| mkdir -p /roles/kafka/inventory
nano roles/kafka/inventory/hosts.ini
|
Наполняем:
1
2
3
4
| [kafka_cluster]
server-1 ansible_host=192.168.10.11 ansible_user=root kafka_node_id=1
server-2 ansible_host=192.168.10.12 ansible_user=root kafka_node_id=2
server-3 ansible_host=192.168.10.13 ansible_user=root kafka_node_id=3
|
Создаём playbook:
Наполняем:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| - name: Install Kafka
hosts: kafka_cluster
become: yes
roles:
- role: kafka
kafka_heap_size: 2G
kafka_install_dependencies: true
kafka_topics:
- name: MyFirstTopic
replication_factor: 1
partitions: 10
kafka_additional_config:
message.max.bytes: 1048576 # 1 MiB
kafka_opts:
- -XX:NewSize=256m
|
Структура каталогов:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| ├── inventory
│ └── hosts.ini
├── playbook.yaml
└── roles
└── kafka
├── CHANGELOG.md
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── molecule
│ ├── cluster
│ │ ├── converge.yml
│ │ ├── INSTALL.rst
│ │ ├── molecule.yml
│ │ └── verify.yml
│ ├── cluster_combined
│ │ ├── converge.yml
│ │ ├── INSTALL.rst
│ │ ├── molecule.yml
│ │ └── verify.yml
│ └── default
│ ├── converge.yml
│ ├── INSTALL.rst
│ ├── molecule.yml
│ └── verify.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
│ ├── kafka.service.j2
│ └── server.properties.j2
└── vars
└── main.yml
|
Запускаем установку:
1
| ansible-playbook -i inventory/hosts.ini playbook.yaml
|
Проверка установки
Заходим на одну из нод по ssh и выполняем команду:
1
| /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
|
Записываем сообщение в созданный топик (MyFirstTopic):
1
| echo "Hello, World from Kafka" | /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic MyFirstTopic
|
Читаем записанное сообщение:
1
| /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic MyFirstTopic --from-beginning
|
Hello, World from Kafka