Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 739|回复: 0

Kafka集群无法外网访问问题解决攻略

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-7-9 17:42:09 | 显示全部楼层 |阅读模式

    Kafka无法集群外网访问问题解决方法  
    讲解本地消费者和生产者无法使用远程Kafka服务器的处理办法

    服务搭建好Kafka服务后,机本。测试 OK,外面机器却无法访问,很是怪异。

    环境说明:  
    Kafka服务器:  
    阿里云VPC网络服务器,内网IP:10.10.10.10,绑定的弹性IP(外网IP)XXXX,是单机测试环境,ZK和Kafka都在一台机器上,使用默认端口,kakfa是9092,动物园管理员是2181.kafka版本:kafka_2.11-0.10.1.0

    Kafka是默认配置,没有修改:

    #listeners=PLAINTEXT://:9092 #advertised.listeners=PLAINTEXT://your.host.name:9092 zookeeper.connect=localhost:2181

    测试发现本机,可以正常发布消息,消费消息,但是公司机器不可以。

    看日志发现是主机名无法识别,所以最简单的方案就是:  
    1,本机绑定主机,即修改/ etc / hosts,添加10.10.10.10主机名到hosts文件。

    有没有不需要绑定hosts,更高大上的方案呢?有!  
    2,经各种测试后发现,修改kafka的advertised.listeners配置即可:

    #listeners=PLAINTEXT://:9092 advertised.listeners=PLAINTEXT://x.x.x.x:9092 zookeeper.connect=localhost:2181

    成功通过测试,完美解决问题。

    关于advertised.listeners这个配置的含义,官网有解释:  
    如果不同于上面的监听器,监听器可以发布给ZooKeeper供客户使用。在IaaS环境中,这可能需要与代理绑定的接口不同。如果没有设置,值  listeners 将被使用。  
    详情:http//kafka.apache.org/documentation/#configuration

    亲测,有了这个配置,Kafka就会忽略听众配置。

    http://blog.csdn.net/fengcai19/article/details/54695874?utm_source=itdadao&utm_medium=referral

     

    大数据平台服务器处于两个网络中,其中内部网络用来进行数据交换和计算,配置万兆光纤网卡和光纤交换机;外部网络用来为其他部门提供服务,数据接口,这里使用的是千兆网络.Kafka的经纪人集群处于内部网络中,而外部网络需要订阅消费Kafka中的留数据,就需要访问内网这里我们需要添加接个配置以使Kafka能够通过外网来访问:

    我们先来看下Kafka几个参数的解释:

    advertised.host.name 主机名发布到ZooKeeper供客户使用。在IaaS环境中,这可能需要与代理绑定的接口不同。如果未设置,则将使用“host.name”的值(如果已配置)。否则,它将使用从java.net.InetAddress.getCanonicalHostName()返回的值。

    主机名

    经纪人的主机名。如果这个设置,它只会绑定到这个地址。如果没有设置,它将绑定到所有接口

    听众

    监听器列表 - 用逗号分隔的URI列表及其协议。指定主机名为0.0.0.0以绑定到所有接口。保留主机名为空以绑定到默认界面。合法侦听器列表的示例:PLAINTEXT:// myhost:9092,TRACE://:9091 PLAINTEXT://0.0.0.0:9092,TRACE:// localhost:9093

    从官方的解释上,我们可以知道:

    1.要使远程客户端和代理通信的时候指向正确的主机那么就需要指定advertised.host.name = bigdata3参数,这里bigdata3需要配置到主机中

    2.要使经纪人指向正确的网卡地址,那么我们就需要指定host.name = 192.168.168.3,让代理之间通信使用内部网络

    3.另外我们需要配置Kafka监听所有的网卡:listeners= PLAINTEXT://0.0.0.0:9092

    http://www.tuicool.com/articles/ye6Bfi

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-30 03:28 , Processed in 0.086157 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表