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

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

交代一下背景:我們的后臺系統(tǒng)是一套使用Kafka消息隊列的數(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é)點,即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,是因為Kubernetes對外暴露的端口,分配的是39092。接著往下看,你會發(fā)現(xiàn)這樣會有問題。

connection refused

Kafka client的日志里報錯:

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)友評論