Kafka集群無法外網訪問問題解決攻略


Kafka無法集群外網訪問問題解決方法  
講解本地消費者和生產者無法使用遠程Kafka服務器的處理辦法

服務搭建好Kafka服務后,機本。測試 OK,外面機器卻無法訪問,很是怪異。

環境說明:  
Kafka服務器:  
阿里雲VPC網絡服務器,內網IP:10.10.10.10,綁定的彈性IP(外網IP)XXXX,是單機測試環境,ZK和Kafka都在一台機器上,使用默認端口,kakfa是9092,動物園管理員是2181.kafka版本:kafka_2.11-0.10.1.0

Kafka是默認配置,沒有修改:

#listeners=PLAINTEXT://:9092 #advertised.listeners=PLAINTEXT://your.host.name:9092 zookeeper.connect=localhost:2181

測試發現本機,可以正常發布消息,消費消息,但是公司機器不可以。

看日志發現是主機名無法識別,所以最簡單的方案就是:  
1,本機綁定主機,即修改/ etc / hosts,添加10.10.10.10主機名到hosts文件。

有沒有不需要綁定hosts,更高大上的方案呢?有!  
2,經各種測試后發現,修改kafka的advertised.listeners配置即可:

#listeners=PLAINTEXT://:9092 advertised.listeners=PLAINTEXT://x.x.x.x:9092 zookeeper.connect=localhost:2181

成功通過測試,完美解決問題。

關於advertised.listeners這個配置的含義,官網有解釋:  
如果不同於上面的監聽器,監聽器可以發布給ZooKeeper供客戶使用。在IaaS環境中,這可能需要與代理綁定的接口不同。如果沒有設置,值  listeners 將被使用。  
詳情:http//kafka.apache.org/documentation/#configuration

親測,有了這個配置,Kafka就會忽略聽眾配置。

http://blog.csdn.net/fengcai19/article/details/54695874?utm_source=itdadao&utm_medium=referral

 

大數據平台服務器處於兩個網絡中,其中內部網絡用來進行數據交換和計算,配置萬兆光纖網卡和光纖交換機;外部網絡用來為其他部門提供服務,數據接口,這里使用的是千兆網絡.Kafka的經紀人集群處於內部網絡中,而外部網絡需要訂閱消費Kafka中的留數據,就需要訪問內網這里我們需要添加接個配置以使Kafka能夠通過外網來訪問:

我們先來看下Kafka幾個參數的解釋:

advertised.host.name 主機名發布到ZooKeeper供客戶使用。在IaaS環境中,這可能需要與代理綁定的接口不同。如果未設置,則將使用“host.name”的值(如果已配置)。否則,它將使用從java.net.InetAddress.getCanonicalHostName()返回的值。

主機名

經紀人的主機名。如果這個設置,它只會綁定到這個地址。如果沒有設置,它將綁定到所有接口

聽眾

監聽器列表 - 用逗號分隔的URI列表及其協議。指定主機名為0.0.0.0以綁定到所有接口。保留主機名為空以綁定到默認界面。合法偵聽器列表的示例:PLAINTEXT:// myhost:9092,TRACE://:9091 PLAINTEXT://0.0.0.0:9092,TRACE:// localhost:9093

從官方的解釋上,我們可以知道:

1.要使遠程客戶端和代理通信的時候指向正確的主機那么就需要指定advertised.host.name = bigdata3參數,這里bigdata3需要配置到主機中

2.要使經紀人指向正確的網卡地址,那么我們就需要指定host.name = 192.168.168.3,讓代理之間通信使用內部網絡

3.另外我們需要配置Kafka監聽所有的網卡:listeners= PLAINTEXT://0.0.0.0:9092

http://www.tuicool.com/articles/ye6Bfi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM