轉(zhuǎn)載請(qǐng)保留作者和原文出處
歡迎關(guān)注我的微信公眾賬號(hào)程序員杰克,兩邊的文章會(huì)同步,也可以添加我的RSS訂閱源。
交代一下背景:我們的后臺(tái)系統(tǒng)是一套使用Kafka消息隊(duì)列的數(shù)據(jù)處理管線:Kafka->Logstash->Elasticsearch。這些組件都跑在Docker的容器環(huán)境里,我們是基于Kubernetes來(lái)編排整個(gè)后端的數(shù)據(jù)處理管線上的容器。Kafka需要暴露在外網(wǎng)里,接收Kafka Producer(filebeat, collectd)發(fā)過(guò)來(lái)的消息。本文是記錄基于Kubernetes在AWS上部署Kafka 0.9.x版本時(shí)遇到的問(wèn)題和排查思路。
為了能夠在外網(wǎng)也能訪問(wèn)Kafka,Kafka組件對(duì)應(yīng)的Kubernetes ServiceType選用的是NodePort,Kafka集群有三個(gè)節(jié)點(diǎn),即Kafka Server有三個(gè)Broker。對(duì)外暴露的端口是39092,三個(gè)Broker對(duì)應(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對(duì)外暴露的端口,分配的是39092。接著往下看,你會(huì)發(fā)現(xiàn)這樣會(huì)有問(wèn)題。
connection refused
Kafka client的日志里報(bào)錯(cuò):
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
網(wǎng)友評(píng)論