= Kafka =
<<TableOfContents()>>
== Ссылки ==
[[https://kafka.apache.org/]] | [[https://kafka.apache.org/quickstart | Quickstart ]] | [[https://kafka.apache.org/documentation/|Documentation]]
[[https://docs.confluent.io/platform/current/kafka/authentication_ssl.html | Encrypt and Authenticate with TLS]]
[[https://medium.com/lydtech-consulting/securing-kafka-with-mutual-tls-and-acls-b235a077f3e3 | Securing Kafka with Mutual TLS and ACLs]]
== Установка и запуск ==
=== Один сервер ===
Устанавливаем Java
{{{#!highlight bash
apt update
apt install default-jre
java -version
}}}
Скачиваем архив по ссылке [[ https://dlcdn.apache.org/kafka/ ]], например ''kafka_2.12-3.6.0.tgz'''.
{{{#!highlight bash
wget https://dlcdn.apache.org/kafka/3.6.0/kafka_2.12-3.6.0.tgz
tar -zxvf kafka_2.12-3.6.0.tgz
cp -r kafka_2.12-3.6.0 /usr/local/kafka
cd /usr/local/kafka
}}}
Запускаем и проверяем
{{{#!highlight bash
# --- запускаем сервис zookeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
# --- запускаем сервис kafka
bin/kafka-server-start.sh -daemon config/server.properties
# --- запускаем консьюмера
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
# ожидание сообщений...
# --- запускаем продюсера (в другой консоле)
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>hello world
# наблюдаем "hello world" в консьюмере
}}}
Остановка сервисов
{{{#!highlight bash
bin/kafka-server-stop.sh
bin/zookeeper-server-stop.sh
}}}
=== Несколько серверов ===
{{{#!wiki note
ToDo
}}}
== TLS ==
Инструкции по генерации новых сертификатов для обмена по протоколу TLS можно легко найти в сети, например - [[https://medium.com/lydtech-consulting/securing-kafka-with-mutual-tls-and-acls-b235a077f3e3 | Securing Kafka with Mutual TLS and ACLs]]. Статья содержит подробное описание и ссылку на [[https://github.com/lydtechconsulting/kafka-mutual-tls|проект в github]].
В случае, если сертификаты сгенерированы ранее в формате PEM, то действия будут немного отличаться. Нам потребуется выполнить ряд действий по преобразования PEM в [[https://en.wikipedia.org/wiki/Java_KeyStore|JKS]].
{{{#!wiki note
Согласно [[https://kafka.apache.org/documentation/#security_ssl_signing|документации]] Kafka умеет работать с PEM-сертификатами. Однако рабочие варианты использования данной возможности пока не найдены. Имеет смысл проработать этот вопрос в перспективе.
}}}
Входные данные - набор сертификатов: корневой, серверный и клиентский.
Выходные жанные - хранилища в формате JKS: серверное, клиентское
}}}
== REST Proxy ==
{{{#!wiki note
ToDo
}}}