织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

Kafka:用ngin皇冠x做kafka集群代理(非http)

时间:2024-10-31 18:17来源: 作者:admin 点击: 3 次
kafka代理,最近一直在搞kafka,上线前有个将kafka 集群暴露到外网的需求。那么问题来了,在内网时我们有足够的IP资源,但是在公网上时,不可能给每个broker都分配一个IP。那么就需要有一个代理用来转发。

kafka代理,最近一直在搞kafka,皇冠上线前有个将kafka 集群暴露到外网的需求。那么问题来了,在内网时我们有足够的IP资源,DG游戏但是在公网上时,不可能给每个broker都分配一个IP。那么就需要有一个代理用来转发。

通过nginx做kafka代理kafka 配置broker1 配置

代码语言:javascript

复制

broker.id=1 ############################# Socket Server Settings ############################# listener.security.protocol.map=LOCAL_LISTENER:PLAINTEXT,INTERNAL_LISTENER:SASL_PLAINTEXT,EXTERNAL_LISTENER:SSL listeners=LOCAL_LISTENER://127.0.0.1:9092,INTERNAL_LISTENER://kafka01:9093,EXTERNAL_LISTENER://kafka01:18001 advertised.listeners=INTERNAL_LISTENER://kafka01:9093,EXTERNAL_LISTENER://kafka01:18001

broker2 配置

代码语言:javascript

复制

broker.id=2 ############################# Socket Server Settings ############################# listener.security.protocol.map=LOCAL_LISTENER:PLAINTEXT,INTERNAL_LISTENER:SASL_PLAINTEXT,EXTERNAL_LISTENER:SSL listeners=LOCAL_LISTENER://127.0.0.1:9092,INTERNAL_LISTENER://kafka02:9093,EXTERNAL_LISTENER://kafka02:18001 advertised.listeners=INTERNAL_LISTENER://kafka02:9093,EXTERNAL_LISTENER://kafka02:18001

broker3 配置

代码语言:javascript

复制

broker.id=3 ############################# Socket Server Settings ############################# listener.security.protocol.map=LOCAL_LISTENER:PLAINTEXT,INTERNAL_LISTENER:SASL_PLAINTEXT,EXTERNAL_LISTENER:SSL listeners=LOCAL_LISTENER://127.0.0.1:9092,INTERNAL_LISTENER://kafka03:9093,EXTERNAL_LISTENER://kafka03:18001 advertised.listeners=INTERNAL_LISTENER://kafka03:9093,EXTERNAL_LISTENER://kafka03:18001

配置 hostsbrokers 域名映射必须在 nginx,broker1,broker2,broker3 都配置上

代码语言:javascript

复制

192.168.4.31 kafka01 192.168.4.65 kafka02 192.168.4.68 kafka03

客户端必须在client配置下列映射(192.168.4.60为nginxip)

代码语言:javascript

复制

192.168.4.60 kafka01 192.168.4.60 kafka02 192.168.4.60 kafka03

为何在client 需要这样配置?

因为,欧博注册client 第一次访问brokers时会将metadata获取,其中包含了在kafka配置的真实地址,欧博代理这里将会是kafka01,kafka02,kafka03,之后生产或者消费数据都将从这三个地址获取。如果不将这三个域名映射到nginx代理上,则会提示找不到有效的brokers。

nginx 配置

代码语言:javascript

复制

stream{ upstream brokers{ server 192.168.4.31:18001; server 192.168.4.65:18001; server 192.168.4.68:18001; } server{ listen 18001; proxy_pass brokers; } }

需要注意的坑

虽然在客户端我们配置的 hosts kafka01,kafka02,kafka03 都指向的是nginx地址,欧博官网在程序上配置brokers地址的时候不能偷懒只配置一个例如,kafka01:18001,这样是有问题的,当nginx将请求随机转发到kafka01上时一切正常。但是当转发到其他两个机器kafka02,kafka03时,消费者会显示已连接,但是读取不到任何数据。(是因为我的topic只有一个分区一个副本的原因?)

所以要特别注意的是:客户端使用的kafka连接为:**kafka01:18001,kafka02:18001,kafka02:18001**

代码语言:javascript

复制

192.168.4.60 kafka01 192.168.4.60 kafka02 192.168.4.60 kafka03

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2024-11-14 11:11 最后登录:2024-11-14 11:11
栏目列表
推荐内容