Как установить Apache Kafka в Ubuntu 14.04

Вступление

Apache Kafka - это популярный распределенный брокер сообщений, разработанный для эффективной обработки больших объемов данных в реальном времени. Кластер Kafka не только обладает высокой масштабируемостью и отказоустойчивостью, но также имеет гораздо более высокую пропускную способность по сравнению с другими брокерами сообщений, такими как ActiveMQ и RabbitMQ. Хотя он обычно используется в качестве системы обмена сообщениями «публикация / подписка», многие организации также используют его для агрегирования журналов, поскольку он предлагает постоянное хранилище для опубликованных сообщений.

Из этого руководства вы узнаете, как установить и использовать Apache Kafka 0.8.2.1 в Ubuntu 14.04.

Предпосылки

Чтобы следовать, вам понадобится:

  • Ubuntu 14.04 Droplet

  • Не менее 4 ГБswap space

[[step-1 -—- create-a-user-for-kafka]] == Шаг 1. Создайте пользователя для Kafka

Поскольку Kafka может обрабатывать запросы по сети, вы должны создать для нее выделенного пользователя. Это сводит к минимуму ущерб вашей машине с Ubuntu, если в нее входит сервер Kafka.

[.note] #Note: После настройки Apache Kafka рекомендуется создать другого пользователя без полномочий root для выполнения других задач на этом сервере.
#

Как root создайте пользователя с именемkafka с помощью командыuseradd:

useradd kafka -m

Установите его пароль, используяpasswd:

passwd kafka

Добавьте его в группуsudo, чтобы у него были права, необходимые для установки зависимостей Kafka. Это можно сделать с помощью командыadduser:

adduser kafka sudo

Ваш пользователь Kafka теперь готов. Войдите в него, используяsu:

su - kafka

[[step-2 -—- install-java]] == Шаг 2. Установите Java

Перед установкой дополнительных пакетов обновите список доступных пакетов, чтобы установить последние версии, доступные в репозитории:

sudo apt-get update

Поскольку Apache Kafka требуется среда выполнения Java, используйтеapt-get для установки пакетаdefault-jre:

sudo apt-get install default-jre

[[step-3 -—- install-zookeeper]] == Шаг 3. Установите ZooKeeper

Apache ZooKeeper - это сервис с открытым исходным кодом, созданный для координации и синхронизации информации о конфигурации узлов, принадлежащих распределенной системе. Кластер Kafka зависит от ZooKeeper для выполнения, среди прочего, таких операций, как обнаружение неисправных узлов и выбор лидеров.

Поскольку пакет ZooKeeper доступен в репозиториях Ubuntu по умолчанию, установите его с помощьюapt-get.

sudo apt-get install zookeeperd

После завершения установки ZooKeeper будет автоматически запущен как демон. По умолчанию он будет прослушивать порт2181.

Чтобы убедиться, что он работает, подключитесь к нему через Telnet:

telnet localhost 2181

В командной строке Telnet введитеruok и нажмитеENTER.

Если все в порядке, ZooKeeper скажетimok и завершит сеанс Telnet.

[[step-4 -—- download-and-extract-kafka-binaries]] == Шаг 4. Скачивание и извлечение двоичных файлов Kafka

Теперь, когда Java и ZooKeeper установлены, пришло время загрузить и извлечь Kafka.

Для начала создайте каталог с именемDownloads для хранения всех ваших загрузок.

mkdir -p ~/Downloads

Используйтеwget, чтобы загрузить двоичные файлы Kafka.

wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

Создайте каталог с именемkafka и перейдите в этот каталог. Это будет базовый каталог установки Kafka.

mkdir -p ~/kafka && cd ~/kafka

Распакуйте загруженный вами архив с помощью командыtar.

tar -xvzf ~/Downloads/kafka.tgz --strip 1

[[step-5 -—- configure-the-kafka-server]] == Шаг 5. Настройте сервер Kafka

Следующим шагом является настройка сервера Kafka.

Откройтеserver.properties, используяvi:

vi ~/kafka/config/server.properties

По умолчанию Kafka не позволяет вам удалять темы. Чтобы иметь возможность удалять темы, добавьте следующую строку в конец файла:

~/kafka/config/server.properties

delete.topic.enable = true

Сохраните файл и выйдите изvi.

[[step-6 -—- start-the-kafka-server]] == Шаг 6. Запустите сервер Kafka

Запустите сценарийkafka-server-start.sh с помощьюnohup, чтобы запустить сервер Kafka (также называемый брокером Kafka) в качестве фонового процесса, независимого от сеанса вашей оболочки.

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

Подождите несколько секунд, пока он начнется. Вы можете быть уверены, что сервер запустился успешно, если увидите следующие сообщения в~/kafka/kafka.log:

выдержка из ~ / kafka / kafka.log

...

[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

Теперь у вас есть сервер Kafka, который прослушивает порт9092.

[[step-7 -—- test-the-installation]] == Шаг 7. Протестируйте установку

Давайте теперь опубликуем и используем сообщение“Hello World”, чтобы убедиться, что сервер Kafka работает правильно.

Чтобы публиковать сообщения, вы должны создать производителя Kafka. Вы можете легко создать его из командной строки, используя скриптkafka-console-producer.sh. Он ожидает имя хоста и порт сервера Kafka, а также имя темы в качестве аргументов.

Опубликуйте строку“Hello, World” в теме под названиемTutorialTopic, введя следующее:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Поскольку тема не существует, Kafka создаст ее автоматически.

Чтобы получать сообщения, вы можете создать потребителя Kafka с помощью скриптаkafka-console-consumer.sh. Он ожидает имя хоста и порт сервера ZooKeeper, а также имя темы в качестве аргументов.

Следующая команда использует сообщения из темы, в которой мы опубликовали. Обратите внимание на использование флага--from-beginning, который присутствует, потому что мы хотим использовать сообщение, которое было опубликовано до запуска потребителя.

~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

Если проблем с конфигурацией нет, вы должны увидетьHello, World в выводе.

Скрипт продолжит работу, ожидая публикации новых сообщений в теме. Не стесняйтесь открыть новый терминал и начать продюсера, чтобы опубликовать еще несколько сообщений. Вы должны быть в состоянии увидеть их всех в выводе потребителя мгновенно.

Когда вы закончите тестирование, нажмите CTRL + C, чтобы остановить пользовательский скрипт.

[[step-8 -—- install-kafkat-optional]] == Шаг 8. Установите KafkaT (необязательно)

KafkaT - это небольшой удобный инструмент от Airbnb, который облегчает вам просмотр подробной информации о вашем кластере Kafka, а также выполняет несколько административных задач из командной строки. Поскольку это драгоценный камень Ruby, вам понадобится Ruby для его использования. Вам также понадобится пакетbuild-essential, чтобы можно было создавать другие драгоценные камни, от которых он зависит. Установите их с помощьюapt-get:

sudo apt-get install ruby ruby-dev build-essential

Теперь вы можете установить KafkaT с помощью командыgem:

sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

Используйтеvi, чтобы создать новый файл с именем.kafkatcfg.

vi ~/.kafkatcfg

Это файл конфигурации, который KafkaT использует для определения каталогов установки и журналов вашего сервера Kafka. Также следует указать KafkaT на ваш экземпляр ZooKeeper. Соответственно, добавьте в него следующие строки:

~/.kafkatcfg

{
  "kafka_path": "~/kafka",
  "log_path": "/tmp/kafka-logs",
  "zk_path": "localhost:2181"
}

Теперь вы готовы использовать KafkaT. Для начала, вот как вы могли бы использовать его для просмотра деталей обо всех разделах Kafka:

kafkat partitions

Вы должны увидеть следующий вывод:

вывод кафкат разделов

Topic           Partition   Leader      Replicas        ISRs
TutorialTopic   0             0           [0]           [0]

Чтобы узнать больше о KafkaT, обратитесь к егоGitHub repository.

[[step-9 -—- set-up-a-multi-node-cluster-optional]] == Шаг 9 - Настройка многоузлового кластера (необязательно)

Если вы хотите создать кластер с несколькими брокерами, используя больше компьютеров с Ubuntu 14.04, вы должны повторить Шаг 1, Шаг 3, Шаг 4 и Шаг 5 на каждой новой машине. Кроме того, вы должны внести следующие изменения в файлserver.properties в каждом из них:

  • значение свойстваbroker.id следует изменить так, чтобы оно было уникальным во всем кластере

  • значение свойстваzookeeper.connect следует изменить так, чтобы все узлы указывали на один и тот же экземпляр ZooKeeper

Если вы хотите иметь несколько экземпляров ZooKeeper для своего кластера, значение свойстваzookeeper.connect на каждом узле должно быть идентичной, разделенной запятыми строкой, в которой перечислены IP-адреса и номера портов всех экземпляров ZooKeeper.

[[step-10 -—- restrict-the-kafka-user]] == Шаг 10 - Ограничьте пользователя Kafka

Теперь, когда все установки выполнены, вы можете удалить права администратора пользователяkafka. Прежде чем сделать это, выйдите из системы и снова войдите в нее как любой другой пользователь sudo без полномочий root. Если вы все еще используете тот же сеанс оболочки, с которого начали это руководство, просто введитеexit.

Чтобы удалить права администратора пользователяkafka, удалите его из группыsudo.

sudo deluser kafka sudo

Чтобы еще больше повысить безопасность вашего сервера Kafka, заблокируйте пароль пользователяkafka с помощью командыpasswd. Это гарантирует, что никто не сможет напрямую войти в него.

sudo passwd kafka -l

На этом этапе только пользователь root или sudo может войти в систему какkafka, введя следующую команду:

sudo su - kafka

В будущем, если вы захотите разблокировать его, используйтеpasswd с опцией-u:

sudo passwd kafka -u

Заключение

Теперь у вас есть безопасный Apache Kafka, работающий на вашем сервере Ubuntu. Вы можете легко использовать его в своих проектах, создав производителей и потребителей Kafka, используяKafka clients, которые доступны для большинства языков программирования. Чтобы узнать больше о Kafka, прочтите егоdocumentation.

Related