Syntax highlighting of devops/kafka

= 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
}}}