qiz*_*zer 2 nginx apache-kafka
美好的一天,我想kafka从互联网连接到我的服务器。Kafka 安装在虚拟服务器上,所有服务器都隐藏在nginx.
我更新了 kafka 设置 ( server.properties)。添加:listeners=PLAINTEXT://:9092
我可以通过IP地址从本地网络连接到kafka服务器10.0.0.1:9092,但无法通过域名从互联网连接。
卡夫卡的回复:java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Topic test-topic not present in metadata after 60000 ms.
nginx:[26/Nov/2019:12:38:25 +0100] "\x00\x00\x00\x14\x00\x12\x00\x02\x00\x00\x00\x00\x00" 400 166 "-" "-" "request_time=1.535" "upstream_response_time=-" "upstream_connect_time=-" "upstream_header_time=-"
nginx 配置:
server {
listen 9092;
server_name site.name;
# Max Request size
client_max_body_size 20m;
location / {
proxy_pass http://10.0.0.1:9092;
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道问题是什么?
Kafka不使用http协议进行通信,因此它不能使用HTTP反向代理。
您必须使用 nginx 流定义块进行 TCP 代理
(我个人没有尝试过)
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/
无法通过域名连接互联网。
听起来像是你的配置有问题advertised.listeners。请注意,没有明确的方法可以将 Kafka“隐藏”在代理后面,因为您的客户端需要单独与每个代理直接通信(因此,除非您想使用一台 Nginx 服务器或打开一个新端口,否则就违背了使用 Ngnix 的目的) Broker),因此还要求 Kafka 知道它需要“通告”代理而不是它自己的地址。
如果你真的想将 Kafka 暴露给公共网络,你应该使用 SSL/SASL 监听器,而不是 PLAINTEXT
如果你想使用HTTP,那么你可以安装Kafka REST Proxy,然后将Nginx放在它的前面。那么你的客户将使用 http 而不是标准的 kafka 库
| 归档时间: |
|
| 查看次数: |
12254 次 |
| 最近记录: |