溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

發(fā)布時間:2021-12-06 15:39:23 來源:億速云 閱讀:293 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.背景

像之前的大數(shù)據(jù)環(huán)境等都是通過Docker來搭建的,無論是在學(xué)習(xí),測試,遷移時候無疑是最快的方式,尤其是在多個環(huán)境下還想使用同一套環(huán)境時候,https://github.com/hulichao/docker-bigdata,搭建思路,可以參考本倉庫,一般情況下只要注意比虛擬機(jī)要多做個端口映射等,端口映射也即網(wǎng)絡(luò)方面,其實是相對冗余的,所以在搭建kafka的環(huán)境時候正好遇到了下面的問題,如下圖connection to node 0 colud not be establised. Broker may not be avaliable

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

kafka連不上broker,在虛擬機(jī)的機(jī)器上沒問題,但是本地使用idea連接是有問題的。

2.思路

是事后寫的博客,所以當(dāng)時的一些排查問題的截圖,不一一貼出來了,只簡述一下過程和最終解決,以及引出kafka對內(nèi)外網(wǎng)隔離時候的解決方式

2.1 首先排查各種網(wǎng)絡(luò)問題

比如虛擬機(jī)網(wǎng)絡(luò),使用ping www.baidu.com 再檢查端口使用telnet linux121 9092 發(fā)現(xiàn)都沒有問題,另外查了Docker的虛擬網(wǎng)卡,可以參考另外一篇文章,https://blog.csdn.net/hu_lichao/article/details/109538567,發(fā)現(xiàn)也沒有問題

2.2 然后開始考慮是Kafka的問題

本來沒有往這個方向想,最后只好借助google, 輸入關(guān)鍵字 kafka docker idea 連不上Broker ,如下圖

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

然后參考第一條,讀取關(guān)鍵的信息:Kafka的客戶端(生產(chǎn)者與消費者統(tǒng)稱)要連接 Broker 需要經(jīng)過一層認(rèn)證,不通過認(rèn)證就無法連接! 然后繼續(xù)往下讀,客戶端連接Kafka需要兩層認(rèn)證,其一是Zk上的Broker中的advertised.listeners 配置的連接和端口,注意:這里較坑的一點就是,必須原樣比對 PLAINTEXT 中的內(nèi)容要和Java程序中的要對應(yīng),即不考慮你是怎么拿到虛擬機(jī)中的Docker中的kafka的連接,總之你要發(fā)送的bootstrap.servers 的內(nèi)容要和PLAINTEXT 要一致,這就需要配置linux121 的hosts,映射到實際的ip和端口了。

java代碼

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

zk獲取broker信息

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

kafka的server.properties的配置

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

3.Kafka的內(nèi)外網(wǎng)參數(shù)

根據(jù)前面的排查問題,有兩個重要參數(shù),listenersadvertise.listeners 那這兩個參數(shù)是做什么用的呢,這里拿來官方的翻譯,

用于指定當(dāng)前Broker向外發(fā)布服務(wù)的地址和端口。與 advertised.listeners 配合,用于做內(nèi)外網(wǎng)隔離。

下面介紹幾個相關(guān)參數(shù):

listener.security.protocol.map

內(nèi)外網(wǎng)隔離配置:監(jiān)聽器名稱和安全協(xié)議的映射配置。比如,可以將內(nèi)外網(wǎng)隔離,即使它們都使用SSL。listener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL 注意,每個監(jiān)聽器的名稱只能在map中出現(xiàn)一次。 inter.broker.listener.name

用于配置broker之間通信使用的監(jiān)聽器名稱,該名稱必須在advertised.listeners列表中。例如inter.broker.listener.name=EXTERNAL listeners

用于配置broker監(jiān)聽的URI以及監(jiān)聽器名稱列表,使用逗號隔開多個URI及監(jiān)聽器名稱。 如果監(jiān)聽器名稱代表的不是安全協(xié)議,必須配置listener.security.protocol.map。 每個監(jiān)聽器必須使用不同的網(wǎng)絡(luò)端口。 advertised.listeners 需要將該地址發(fā)布到zookeeper供客戶端使用,如果客戶端使用的地址與listeners配置不同。 可以在zookeeper的 get /brokers/ids/<broker.id> 中找到。

在IaaS環(huán)境,該條目的網(wǎng)絡(luò)接口得與broker綁定的網(wǎng)絡(luò)接口不同。 如果不設(shè)置此條目,就使用listeners的配置。跟listeners不同,該條目不能使用0.0.0.0網(wǎng)絡(luò)端口。 advertised.listeners的地址必須是listeners中配置的或配置的一部分。

注意:INTERNAL 和 EXTERNAL的作用就是相當(dāng)于給PLAINTEXT協(xié)議起了兩個別名,默認(rèn)map中只能有一個同名的協(xié)議,故分開寫

下面是一個典型的常用配置:

連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么

關(guān)于連接不上Docker-Kafka-broker及Kafka解決內(nèi)網(wǎng)外網(wǎng)隔離的幾個重要參數(shù)分別是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI