轉(zhuǎn)載請保留作者和原文出處

歡迎關(guān)注我的微信公眾賬號程序員杰克,兩邊的文章會同步,也可以添加我的RSS訂閱源。

交代一下背景:我們的后臺系統(tǒng)是一套使用Kafka消息隊(duì)列的數(shù)據(jù)處理管線:Kafka->Logstash->Elasticsearch。這些組件都跑在Docker的容器環(huán)境里,我們是基于Kubernetes來編排整個后端的數(shù)據(jù)處理管線上的容器。Kafka需要暴露在外網(wǎng)里,接收Kafka Producer(filebeat, collectd)發(fā)過來的消息。本文是記錄基于Kubernetes在AWS上部署Kafka 0.9.x版本時遇到的問題和排查思路。

為了能夠在外網(wǎng)也能訪問Kafka,Kafka組件對應(yīng)的Kubernetes ServiceType選用的是NodePort,Kafka集群有三個節(jié)點(diǎn),即Kafka Server有三個Broker。對外暴露的端口是39092,三個Broker對應(yīng)的外網(wǎng)IP分別是 59.64.11.21,59.64.11.22,59.64.11.23。Kafka組件部署完成后,使用Kafka producer連接Server,配置的kafka bootstrap_servers是 59.64.11.22:39092。這里之所以端口使用的是 39092,而非9092,是因?yàn)镵ubernetes對外暴露的端口,分配的是39092。接著往下看,你會發(fā)現(xiàn)這樣會有問題。

connection refused

Kafka client的日志里報(bào)錯:

2016-11-22T07:23:33.312102145Z 2016-11-22T07:23:33Z WARN Failed to connect to broker 59.64.11.21:30791: dial tcp 52.198.148
        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式