收藏记录有趣的生活科学常识
当前位置:网站首页 > 生活百科 > 正文

winkawaksrom全集,winkawaks合集

作者:ru4th 发布时间:2023-08-16 22:10 分类:生活百科 浏览:19


导读:前言因为开发的需要,我经常会用到Redis,Kafka,Mysql等开发工具,这些工具,在我笔记本上都用Docker安装起来,一方面可以省去安装包的安装,另一方面用docker可以...

前言

因为开发的需要,我经常会用到RedisKafkaMysql等开发工具,这些工具,在我笔记本上都用Docker安装起来,一方面可以省去安装包的安装,另一方面用docker可以灵活的觉得什么时候启用什么服务,但是时间久了,就发现每次启动docker也挺麻烦的,刚好我家里购置了一台NAS D920+,带有Docker功能,我就想把这些开发环境搬到我的NAS上,通过NAS来提供这些服务。接下来,我就来说说我在部署Kafka的过程中碰到的问题,*********主要的问题通过公网来访问Kafaka服务,这个问题困扰了非常久,曾经一度就要放弃了,但是功夫不负有心人,我***后找到了解决方案,实现了公网访问NAS Kafka,从此过上了幸福的开发生活[呲牙]

前提条件

  • 公网IP (电信的宽带又提供,也可以用IPV6的解决方案,这里不讨论)
  • 一个可以用的域名(有很多地方可以申请)
  • DDNS配置公网IP和域名(这个可以解决公网IP变化的时候,你的域名仍然可以识别和访问)
  • 端口映射(路由器一般都支持,我的是小米路由器有这个功能)

踩坑和配置

在NAS上安装Kafka非常顺利,很快就可以本地访问NAS上的kafka了,然后像往常一样,我把这个端口通过端口映射到公网。但是第二天来到公司的时候,发现怎么都无法访问都NAS 上的Kafka,无论是通过域名的方式,还是IP的方式都不行 ,但是telenet端口号却可以通。然后我到家里,又可以访问到NAS上的Kafka。我百思不得其解,正在我准备要放弃的时候,我看到了这篇文章 “Kafka的AWS Docker网络设置”给我很大启发。

原来我在Docker上配置的Kafka只是实现了同一个局域网上Kafka的访问,端口映射出来的端口,其实没有真正的和Docker里面的的端口发生关联,所以我外部的流量没有真正进入到Docker容器里面,于是我在启动docker的时候加入,修改之前的环境变量,加入了新配置,重启Kafka,发现一些成功,可以通过外网访问到我的NAS服务了。

以下是我在Docker容器上加入的Kafka关键环境变量(如有需要建议搜藏)

KAFKA_INTER_BROKER_LISTENER_NAME:INTERNAL

KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

KAFKA_ADVERTISED_LISTENERS:INTERNAL://wurstmeister-kafka1:29092,EXTERNAL:{这里指向你可以问的公网端口} #比如://aaa.com:9092 前面的两个//不要省略

KAFKA_LISTENERS:INTERNAL://0.0.0.0:29092, EXTERNAL://0.0.0.0:9092

简单来说Docker就是通过INTERNAL和EXTERNAL进行通信,EXTERNAL:9092表示公网的流量会和这个端口通讯,然后EXTERNAL在这INTERNAL的29092进行通信,实现公网对NAS Kafka的访问


winkawaksrom全集,winkawaks合集

winkawaksrom全集,winkawaks合集

winkawaksrom全集,winkawaks合集

启动Kafka需要暴露两个端口一个给internal用,一个给external用

注意:9092是你需要暴露到公网的端口,在端口映射的时候会用到


winkawaksrom全集,winkawaks合集

路由器上的端口转发


PS:在你部署你的NAS Kafka到公网的时候,***后给你的Kafka加入安全认证,比如证书,机密连接等,这样可以保证你NAS的安全。

***后配张图帮助大家的理解。

winkawaksrom全集,winkawaks合集

参考文档

https://zhuanlan.zhihu.com/p/83954708

#大有学问#

标签:


关灯