winkawaksrom全集,winkawaks合集
作者:ru4th 发布时间:2023-08-16 22:10 分类:生活百科 浏览:19
前言
因为开发的需要,我经常会用到Redis,Kafka,Mysql等开发工具,这些工具,在我笔记本上都用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的访问
注意:9092是你需要暴露到公网的端口,在端口映射的时候会用到
PS:在你部署你的NAS Kafka到公网的时候,***后给你的Kafka加入安全认证,比如证书,机密连接等,这样可以保证你NAS的安全。
***后配张图帮助大家的理解。
参考文档
https://zhuanlan.zhihu.com/p/83954708
- 生活百科排行
- ***近发表
- ***新留言
-