Hallo Habr! Ich bin Alexey Kashavkin, ein Cloud Operations Engineer bei G-Core Labs, und verwalte OpenStack seit fünf Jahren. Heute werde ich über eine Krücke für den nicht standardmäßigen Einsatz von Technologien sprechen oder darüber, wie man Kafka-Broker hinter Nginx stellt. Wenn Sie aus irgendeinem Grund keine andere Möglichkeit haben, Nachrichten zu empfangen, ist dieser Hinweis nur für Sie.
Warum wird es gebraucht?
, Kafka, . — — PoC- , Kafka c Elasticsearch. (SSL/TLS), PEM- Kafka . , Puppet. Nginx. , , Kafka - , . — , - - .
, - , legacy-, , - HTTP, .
, . c , c :
load_module /etc/nginx/modules/ngx_http_echo_module.so;
load_module /etc/nginx/modules/ngx_http_kafka_log_module.so;
http {
kafka_log_kafka_brokers kafka1:9092,kafka2:9092,kafka3:9092;
server {
listen 443 ssl;
ssl_certificate /etc/nginx/certs/your_cert.crt;
ssl_certificate_key /etc/nginx/certs/your_cert_key.key;
if ($request_uri ~* ^/(.*)$) {
set $request_key $1;
}
location / {
kafka_log kafka:$request_key $request_body;
echo_read_request_body;
}
}
}
:
:
ngx_http_echo_module.so
proxy_pass
,fastcgi_pass
,uwsgi_pass
scgi_pass
;
ngx_http_kafka_log_module.so — Nginx Kafka.
kafka_log_kafka_brokers — Kafka.
http c server,
$request_uri
. ,“/”
$request_uri
,rewrite
—return
echo_read_request_body.$request_key
. — /topic_name, — topic_name.
location :
kafka_log — Kafka ;
echo_read_request_body— ,
$request_body
.
— Kafka, URL https://example.com/topic_name
P.S. , . Kafka.