场景说明:
当客户端与服务端在不同区域(跨防火墙,地址均做了映射)时,客户端访问卡夫卡时会出现获取不到代理的问题,但是网络之间是互通的。但在跨防火墙下,客户请求饲养员的时候,饲养员返回给客户的代理IP是卡夫卡的实际地址,而不是映射地址,因此客户会访问失败。
解决方式一,
1,配置文件:听众=明文://主机名:9092
服务端主机:内网地址主机名
3,客户端主机:外网地址主机名
注意事项:不安全,且配置复杂不统一
解决方式2:(案例)
1,注释:
<代码>听众=明文://192.168.111.134:9092 代码>
添加:
<代码> inter.broker.protocol.version=1.0 log.message.format.version=1.0 advertised.listeners=内部://192.168.111.134:9092,外://node7:9093 听众=内部://192.168.111.134:9092,外://node7:9093 listener.security.protocol.map=内部:明文,外面:明文 inter.broker.listener.name=代码>内
解释:相当于开通2个端口,如果服务器多网卡可以主机名部分填写外网地址。
如果采用统一管理,可采用主机名解析,用nginx代理。
上面的变更,需要3台重启集群重启生效,zk监听地址不一样了,如图(所以要考虑到业务,建议标准化配置)
2,服务端主机
内网地址主机名(这里采用域名解析)
<代码>注意:官网也提供了安全加密,非文本加密方式,如果卡夫卡和zk都要求安全,建议参考官网统一配置代码>
官网相关参数解释:
host.name:
advertised.host.name:
advertised.listeners:
听众: