Knightの動き:Nginxを介してKafkaでメッセージを受信する方法

こんにちは、Habr!私はG-CoreLabsのクラウ​​ド運用エンジニアであるAlexeyKashavkinであり、過去5年間OpenStackを管理しています。今日は、テクノロジーの非標準的な使用のため松葉杖、またはKafkaブローカーをNginxの背後に置く方法について説明します。何らかの理由でメッセージを受信する他の方法がない場合、このメモはあなただけのものです。





なぜそれが必要なのですか

, Kafka, . — — PoC- , Kafka c Elasticsearch. (SSL/TLS), PEM- Kafka . , Puppet. Nginx. , , Kafka - , . — , - - .





, - , legacy-, , - HTTP, .





, . Nginx:





  1. echo





  2. kafka-log





, . 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;
    }
  }
}
      
      



:





  1. :





    • ngx_http_echo_module.so proxy_pass



      , fastcgi_pass



      , uwsgi_pass



      scgi_pass



      ;





    • ngx_http_kafka_log_module.so — Nginx Kafka.





  2. kafka_log_kafka_brokers — Kafka.





  3. http c server, $request_uri



    . , “/”



    $request_uri



    , rewrite



    return



    echo_read_request_body. $request_key



    . — /topic_name, — topic_name.





  4. location :





    • kafka_log — Kafka ;





    • echo_read_request_body— , $request_body



      .





— Kafka, URL https://example.com/topic_name





P.S. , . Kafka.








All Articles