|
|
Строка 1: |
Строка 1: |
| | *[[Special:PermanentLink/76241|Старая версия страницы]] |
|
| |
|
| '''Предварительные требования:''' | | '''Предварительные требования:''' 1. Не меньше 4GB RAM на сервере. Инсталляция с меньшим количеством ОЗУ может закончиться с ошибкой "out of memory" от JVM при старте. |
| *1. Не меньше 4GB RAM на сервере. Инсталляция с меньшим количеством ОЗУ может закончиться с ошибкой "out of memory" от JVM при старте.
| |
| *2. На сервере должен быть установлен OpenJDK не менее 8 версии.
| |
|
| |
|
| == Шаг 1. Создание пользователя ==
| | Так как сервер Kafka обрабатывает запросы, получаемые из сети Интернет, он создаст специального пользователя. Это сведёт к минимуму ущерб, нанесённый серверу Kafka, в случае компроментации. |
| Так как сервер Kafka обрабатывает запросы, получаемые из сети Интернет, необходимо создать специального пользователя. Это сведёт к минимуму ущерб, нанесённый серверу Kafka, в случае компроментации. | |
| Мы создадим отдельного пользователя с именем Kafka. Конечно кроме него на сервере неплохо бы иметь и другого пользователя с правами sudo, для выполнения других задач администрирования, не относящихся к обслуживанию сервера Kafka.
| |
| Установим sudo:
| |
| <pre> # apt-get install sudo </pre>
| |
| Разрешим использовать sudo только пользователяем из группы wheel
| |
| <pre> # control sudowheel enable </pre>
| |
| Создаём пользователя kafka с домашней директорией:
| |
| <pre> # useradd kafka -m </pre>
| |
| Задаём пароль:
| |
| <pre> # passwd kafka </pre>
| |
| Добавим пользователя kafka в группу wheel:
| |
| <pre> # usermod -aG wheel kafka </pre>
| |
| Ну и собственно логинимся под свежесозданным пользователем:
| |
| <pre> # su -l kafka </pre>
| |
|
| |
|
| == Шаг 2. Начало установки Kafka == | | При установке Kafka автоматически установится нужная версия Java. |
| В первую очередь установим java:
| | |
| <pre> $ sudo apt-get install java-1.8.0-openjdk </pre>
| | Установку, настройку и тестирование сервера нужно делать от суперпользователя. |
| Создадим директорию для скачивания исходников
| | |
| <pre> $ mkdir ~/Downloads && cd ~/Downloads </pre>
| | ==Установка== |
| Скачиваем актуальную версию кафки:
| | # apt-repo test 350191 |
| <pre> $ wget -O kafka.tgz https://www.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz </pre>
| | # systemctl enable --now kafka |
| Создаём каталог с именем kafka, и сразу переходим в него:
| | |
| <pre> $ mkdir ~/kafka && cd ~/kafka </pre>
| | Файлы сервера располагаются в {{path|/usr/lib/kafka}} |
| После чего распаковываем в него скачанный архив с Apache Kafka
| | |
| <pre> $ tar -xvzf ~/Downloads/kafka.tgz --strip 1 </pre>
| | == Конфигурирование сервера Kafka == |
| | Файлы конфигурации сервера располагаются в {{path|/etc/kafka}} |
|
| |
|
| == Шаг 3. Конфигурирование сервера Kafka ==
| |
| По умолчанию сервер Kafka не позволяет нам удалить тему, категории, группы, или | | По умолчанию сервер Kafka не позволяет нам удалить тему, категории, группы, или |
| имя канала в котором могут публиковаться сообщения. Для исправления такого поведения | | имя канала в котором могут публиковаться сообщения. Для исправления такого поведения |
| предлагается отредактировать конфигурационный файл server.properties. | | предлагается отредактировать конфигурационный файл server.properties. |
| Необходимо добавить в конец этого файла настройки, которые позволят удалить темы Kafka: | | Необходимо добавить в конец этого файла настройки, которые позволят удалить темы Kafka: |
| <pre> $ echo "delete.topic.enable = true" >> ~/kafka/config/server.properties </pre> | | <pre> $ echo "delete.topic.enable = true" >> /etc/kafka/kraft/server.properties </pre> |
| | |
| == Шаг 4. Создаём systemd unit файл, и запускаем сервер Kafka ==
| |
| На этом шаге необходимо создать файлы модулей sytemd для служб Kafka.
| |
| | |
| '''Создание сервиса Zookeeper'''
| |
| Поскольку для управления состоянием кластера и конфигурациями Kafka использует службу Zookeeper, то сначала необходимо сконфигурировать сервис systemd для этой службы.
| |
| Для детального изучения zookeeper лучше посетить сайт с официальной документацией - https://zookeeper.apache.org/doc/current/index.html
| |
| <pre> $ vim /etc/systemd/system/zookeeper.service </pre>
| |
| Наполняем следующим содержимым:
| |
| <pre>
| |
| [Unit]
| |
| Requires=network.target remote-fs.target
| |
| After=network.target remote-fs.target
| |
| | |
| [Service]
| |
| Type=simple
| |
| User=kafka
| |
| ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
| |
| ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
| |
| Restart=on-abnormal
| |
| | |
| [Install]
| |
| WantedBy=multi-user.target
| |
| </pre>
| |
| | |
| В секции [Service] определено использование скриптов start и stop для сервиса zookeeper, а так же
| |
| возможность автоматического рестарта при возникновении аномального поведения
| |
| Сохраняем файл и выходим из vim
| |
| | |
| '''Создание сервиса Kafka'''
| |
| <pre> $ sudo vim /etc/systemd/system/kafka.service </pre>
| |
| С следующим содержимым:
| |
| <pre>
| |
| [Unit]
| |
| Requires=zookeeper.service
| |
| After=zookeeper.service
| |
| | |
| [Service]
| |
| Type=simple
| |
| User=kafka
| |
| ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1'
| |
| ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
| |
| Restart=on-abnormal
| |
| | |
| [Install]
| |
| WantedBy=multi-user.target
| |
| </pre>
| |
| | |
| В секции [Unit] определяем зависимость от сервиса zookeeper.
| |
| В секции [Service] определяем использование скриптов start и stop, и добавляем возможность
| |
| автоматического рестарта при возникновении аномального поведения
| |
| | |
| Сохраняемся и выходим.
| |
| | |
| '''Запуск сервиса Kafka'''
| |
| <pre> $ sudo systemctl start kafka </pre>
| |
| Проверяем логи старта
| |
| <pre> $ journalct -u kafka </pre>
| |
| Если всё успешно, вывод должен быть без ошибок, и последним сообщением должно значится что-то в духе:
| |
| <pre> Jul 26 14:08:59 kafka-centos systemd[1]: Started kafka.service. </pre>
| |
| | |
| Теперь kafka готова к работе и прослушивает порт 9092, проверить это можно с помощью ss:
| |
| <pre> $ netstat -tulpn | grep LISTEN </pre>
| |
| | |
| Включим запуск сервиса kafka по умолчанию:
| |
| <pre> $ sudo systemctl enable kafka </pre>
| |
| | |
| == Шаг 5. Тестирование инсталляции ==
| |
| Попробуйте отправить на сервер Kafka сообщение "Hello World", чтобы убедиться в корректном поведении сервера Kafka:
| |
| Публикация сообщений в kafka требует двух компонентов:
| |
| 1. Producer - позволяет публиковать записи и данные по темам
| |
| 2. Consumer - читает сообщения и данные по темам.
| |
| Создадим первый тестовый topic с названием TutorialTopic
| |
| <pre> $ ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic </pre>
| |
| В случае успешного выполнения команды увидим надпись:
| |
| <pre> Created topic "TutorialTopic". </pre>
| |
| | |
| Далее вы можете создать producer из командной строки с помощью скрипта kafka-console-producer.sh он будет ожидать
| |
| в качестве аргументов имя хоста, порт и название темы.
| |
| Опубликуем строку Hello, World в тему TutorialTopic, набрав:
| |
| <pre> echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null </pre>
| |
| | |
| Далее создаем consumer, используя для этого скрипт kafka-console-consumer.sh . Он так же в качестве аргументов
| |
| будет ожидать имя хоста, порт и название темы.
| |
| Следующая команда прочтёт сообщение из TutorialTopic:
| |
| * обратите внимание на флаг --from-beginning, который позволяет прочесть сообщения опубликованные раньше, чем
| |
| consumer был запущен.
| |
| <pre> $ ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning </pre>
| |
| Если всё работает нормально, команда выведет в консоли сообщение:
| |
| <pre> Hello, World </pre>
| |
| и будет дальше продолжать работать, пока не будет остановлена принудительно через ctrl^c
| |
|
| |
|
| На этом основная часть установки сервера Kafka заканчивается.
| | == Тестирование инсталляции == |
| Для повышения удобства администрирования вы можете установить инструмент KafkaT, который позволит упростить выполнение ряда административных задач из командной строки.
| | *Создание топика |
| | /usr/lib/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092 |
| | *Вывод списка созданных топиков |
| | /usr/lib/kafka/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092 |
| | Topic: quickstart-events TopicId: NPmZHyhbR9y00wMglMH2sg PartitionCount: 1 ReplicationFactor: 1 Configs: |
| | Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0 |
| | *Создание события |
| | /usr/lib/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092 |
| | This is my first event |
| | This is my second event |
| | {{Note|Введите нужное количество строчек, нажимая {{button|Enter}} и потом завершите, нажав {{button|Ctrl}}+{{button|D}}.}} |
| | *Вывод созданных событий: |
| | /usr/lib/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092 |
| | This is my first event |
| | This is my second event |
|
| |
|
| [[Категория:HOWTO]][[Категория:Enterprise Software]] | | [[Категория:HOWTO]][[Категория:Enterprise Software]] |
| [[Категория:EnterpriseApps]] | | [[Категория:EnterpriseApps]] |
Предварительные требования: 1. Не меньше 4GB RAM на сервере. Инсталляция с меньшим количеством ОЗУ может закончиться с ошибкой "out of memory" от JVM при старте.
Так как сервер Kafka обрабатывает запросы, получаемые из сети Интернет, он создаст специального пользователя. Это сведёт к минимуму ущерб, нанесённый серверу Kafka, в случае компроментации.
При установке Kafka автоматически установится нужная версия Java.
Установку, настройку и тестирование сервера нужно делать от суперпользователя.
Установка
# apt-repo test 350191
# systemctl enable --now kafka
Файлы сервера располагаются в /usr/lib/kafka
Конфигурирование сервера Kafka
Файлы конфигурации сервера располагаются в /etc/kafka
По умолчанию сервер Kafka не позволяет нам удалить тему, категории, группы, или
имя канала в котором могут публиковаться сообщения. Для исправления такого поведения
предлагается отредактировать конфигурационный файл server.properties.
Необходимо добавить в конец этого файла настройки, которые позволят удалить темы Kafka:
$ echo "delete.topic.enable = true" >> /etc/kafka/kraft/server.properties
Тестирование инсталляции
/usr/lib/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
- Вывод списка созданных топиков
/usr/lib/kafka/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic: quickstart-events TopicId: NPmZHyhbR9y00wMglMH2sg PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0
/usr/lib/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event
Примечание: Введите нужное количество строчек, нажимая Enter и потом завершите, нажав Ctrl+D.
/usr/lib/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event