訪問kafka
『壹』 kafka 設置外網訪問
源地址: https://blog.51cto.com/395469372/2464399
前提條件
需要一個解析到內網ip地址的域名,內網環境也可以設置/etc/hosts
參數設置
host.name=kafka.test.com(對應的域名解析需要解到內網ip)
高版本已棄用。低版本0.10.2.1可以用, 僅當listeners屬性未配置時被使用,已用listeners屬性代替。表示broker的hostname
advertised.listeners= PLAINTEXT://kafka.test.com:9092 (高版本用,替代 host.name ,設置了advertised.listeners不用設置 host.name )
注冊到zookeeper上並提供給客戶端的監聽器,如果沒有配置則使用listeners。
advertised.host.name(不需要設置,僅作參考)
已棄用。僅當advertised.listeners或者listeners屬性未配置時被使用。官網建議使用advertised.listeners
listeners(不肆做需要設置,僅作參考)
需要監聽的URL和協議,如: PLAINTEXT://myhost:9092,SSL://:9091 CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093 。如果喊隱未指定該配置,則使用 java.net.InetAddress.getCanonicalHostName() 函數的的返回值裂滲衡
修改上broker的/etc/hosts文件
[內網ip] kafka.test.com
修改外網訪問伺服器上的/etc/hosts文件
[外網ip] kafka.test.com
『貳』 如何通過外網連接內網kafka程序
一、內網IP只能帶閉在內網區域網訪問連接,在外網是不能認識內網IP不能訪問的。如有路由許可權,且路由有固定公網IP,可以通過路由的埠映射,實現外網訪問內網。如無路由,或路由無公網IP,需要藉助第三方開放的nat123埠映射網路輔助實現外網訪問內網。
埠映射網路輔助的好處是適用於任何網路環境,外網訪問內網的實現過程:
在內網安裝並啟用nat123埠映射。添加映射,配置內外網映射信息,對應內網IP埠和外網自己的域名。外網地址賀拍可直接使用提示默認域名。
NAT映射後,通過域名訪問,即可以連接內網對應IP應用。
二、要用到第三方開放的花生殼埠映射網路輔助實現外網訪問內網。
方法
1、在內網安裝並啟用花生殼埠映射。添加映射,配置內外網映射信息,對應內網IP埠和外網自己的域名。外網地址可直接使用提示默認域名。
2、點擊你想映射的域名,進入花生殼埠映射添加界面,點擊打開內網映射。
3、應用名稱可以隨便填個好記的,內網主機就是你想被公網訪問的那台電腦IP地址,內網埠就是希望被映射的埠,如下。我的內網主機是本機,就是192.168.21.250,希望被映射的埠是1024。點擊確定,就啟動埠映射了。
4、現在埠映射窗口就會添加一條映射記錄,此時,花生殼映射後,通過域名訪蠢拍裂問,即可以連接內網對應IP應用。公網只要使用花生殼分配的這個域名+埠,就可以訪問內網的主機了。
『叄』 windows 下遠程連接kafka伺服器並創建topic 部署服務
一.打包項目鏡像:
利用Dockerfile 來打包項目的鏡像
本次項目共依賴兩個鏡像(一個基礎系統環境和一個項目鏡像)
本次直接將Dockerfile寫好後,用shell腳本build.sh啟動打包:
然後切換到項目的目錄下找到build.sh,運行即可打包項目鏡像
若
報錯:"failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial unix /var/run/docker.sock: connect: permission denied
"
就用
出現以下說明打包成功,接下來可以開始部署:
https://jingyan..com/article/9113f81b49ed2f2b3214c7fa.html
注意:如果遇到只讀許可權不能修改時,將host文件復制一份到桌面,修改後在替換原來的host文件
在hosts文件末尾加上kafka伺服器< !外網! 39. 0.25...>地址,修改後的格式如下:
1.1注意: 修改阿里雲伺服器的hosts 文件來配置 kafka的伺服器地址:
在hosts 文件最後加入:
添加的 kafka-server 就是以下創建topic命令中的 kafka-server別名,
監聽遠程kafka:新建寬辯頃消費者:
遠程創建topic的實例:
查看遠程已創建的topc:
本地:
遠程修改後的kafka topic:
2.通過git Bash 切換到kafka客戶端的bin目錄:
桌面打開 gitBash,切換到本地kafka軟體目錄:
這里一定要切換為windows
3.查看已經有的topic
--topic 指定topic名字
--replication-factor 指定副本數,因為我的是集群環境,這里副本數就為3
--partitions 指定分區數,這個參數需要根據broker數和數據量決定,正常情況下,每個broker上兩慎陸個partition最好
注意:伺服器部署時候一定要用內網172. .開頭的,外部訪問設為外網ip
不然會導致Kafka寫入數據的時候報錯 : TImeout
4.1本地灶念docker創建topic:
4.2 本地windows 創建topic
進入本地軟體路徑KAFKA/BIN/WIONDOWS
創建topic
5.修改伺服器的host:
一定要注意加sudo 不然會導致readonly 無法修改
在host 文件的末尾加上以下:
6.切換到工程部署的目錄
7.清理redis,不然數據有殘留:
7.1伺服器上的redis掛載清除:
在 docker-compose.yml中注銷這幾行: 目的是每次啟動不必記錄上次沒有執行完的數據.
這個是用來記錄redis中假如上次指定的是1到100萬塊,沒有執行完.下次接著執行沒執行完的任務,測試時暫時關閉
7.2刪除volume:
7.3 如果volume文件被佔用時,先刪除佔用容器:
7.4 清除redis中的數據
進入redis容器中:
8.部署命令:
8.1開啟docker可視化web上監控docker:
然後訪問: http://39.100.48.41:9000
宿主機IP + 9000埠
8.2執行部署命令,啟動服務:
9.部署時報錯: yaml: line 46: did not find expected key
原因: docker-compose.yml文件中第46行 報錯
解決:將所有數據對齊,不要有多餘的空格.