设为首页 加入收藏

TOP

kafka集群如何内外网均可访问
2019-02-06 14:30:42 】 浏览:601
Tags:kafka 集群 如何 外网 访问
版权声明: https://blog.csdn.net/bsfz_2018/article/details/85273596

有3台kafka集群broker,以下ip地址均属杜撰,仅仅做举例用

hostname 内网ip 外网Ip
kafka1 10.0.0.1 139.0.0.1
kafka2 10.0.0.2 139.0.0.2
kafka3 10.0.0.3 139.0.0.3

配置hosts方式

本来kafka集群配置的listener参数如下:

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://10.0.0.1:9092

然后配置了内网访问kafka集群机子的hosts文件,配置kafka集群内网地址和hostname的映射关系以及外网访问kafka集群机子的hosts文件,配置kafka集群内网地址和hostname的映射关系
结果发现内网能正常访问kafka集群,外网访问不了!

那么怎么解决呢?

采取如下解决方案,成功处理掉问题!!!
注释如上listener配置,然后打开下面的advertised listener配置:

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://10.0.0.1:9092

# Hostname and port the broker will advertise to producers and consumers. If not set, 
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://kafka1:9092

然后在内网需要连接kafka集群的机子上配上kafka集群的hostname和内网ip地址对应关系
在外网需要连接akkfa集群的机子上配上kafka集群的hostname和内网ip地址对应关系即可

不需要配置hosts方式

直接屏蔽listener配置,然后advertised.listeners处改用监听外网ip方式,然后内网连接的时候仍然用内网kafka集群地址,外网用外网地址,不需要重新配置hosts映射

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Kafka发送消息到HDFS 下一篇在项目中使用Kafka接收和发送消息..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目