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