セットアップカフカ:接続に関する問題 - すべてのサーバがリクエストの処理に失敗しました」
私たちはnginxのから入ってくるメッセージを処理し、3ノードカフカのクラスタを持つnginxの手もオフPHP順番にフォークaに。 Pythonのプロセス及び9092は全て開放され、飼育係は、カフカと同じホスト上で実行され、nginxのは、別のホスト上にある。ポート2181、2182、3888 KafkaClient、SimpleProducer & SEND_MESSAGE
を呼び出す。始動に見られるエラーなしzookeeper、kafka。このセットアップはすべて同じvpcのAWSにあります。
カフカ&飼育係がカフカユーザとして実行され、nginxのは、Apache
バージョン
カフカとしてnginxの、PHP-FPM実行として実行されている:0.8.2 パイソン:2.7.5
関連プロパティファイルからのスニペット。
zookeeper.properties
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=5
syncLimit=2
server.1=172.31.41.78:2888:3888
server.2=172.31.45.245:2888:3888
server.3=172.31.23.101:2888:3888
producer.properties
metadata.broker.list=172.31.41.78:9092,172.31.45.245:9092,172.31.23.101:9092
consumer.properties
zookeeper.connect=172.31.41.78:2181,172.31.45.245:2181,172.31.23.101:2181
zookeeper.connection.timeout.ms=6000
サーバー。特性(他のマシン上の適切なIPとセットアップ)
port=9092
advertised.host.name=172.31.41.78
host.name=172.31.41.78
zookeeper.connect=172.31.41.78:2181,172.31.45.245:2181,172.31.23.101:2181
zookeeper.connection.timeout.ms=60000
PHPコード
function sendDataToKafka($_data,$_srcType) {
try{
$pyKafka = "/usr/bin/python /etc/nginx/html/postMon.py ".$_srcType;
$dspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","/dev/null", "a")
);
$process = proc_open($pyKafka,$dspec,$pipes);
if (is_resource($process)) {
if(fwrite($pipes[0],$_data) == true){
fclose($pipes[0]);
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
echo "Process completed";
Pythonコード
のimport sys,json,time,ConfigParser
import traceback
sys.path.append("/etc/nginx/html/kafka_python-0.9.4-py2.7.egg")
from kafka import KafkaClient,SimpleProducer
try:
srcMap = {
'Alert' : 'alerts'
}
topic = srcMap.get(sys.argv[1],'events')
data = ''
data = 'Testing static Kafka message'
print 'Host: 172.31.23.101:9092'
kafka = KafkaClient("172.31.23.101:9092")
producer = SimpleProducer(kafka,random_start=True)
producer.send_messages(topic,data);
except Exception as e: # most generic exception you can catch
print str(e)
シナリオ
シナリオ1:
bin/kafka-console-producer.sh --zookeeper 172.31.41.78:2181,172.31.45.245:2181,172.31.23.101:2181 --topic alerts
1上にシェルを実行
と
ランニング 我々はメッセージシナリオ2閲覧することができます
./kafka-console-consumer.sh --zookeeper 172.31.41.78:2181,172.31.45.245:2181,172.31.23.101:2181 --topic alerts
:消費者からのメッセージを表示することができ、
は(nginxのホストから)のpythonコードのコマンドラインを実行し
シナリオ3:
消費者からのメッセージを表示できるphpコードコマンドライン(nginxホストから)を実行する
シナリオ4:nginxのは、実行中、トラフィックはnginxのために行く、このショー
<html>
<body>
Host: 172.31.23.101:9092
All servers failed to process request
<pre>Process completed</pre></body>
<html>
:
は、次のメッセージを取得し、REST URLを使用してRESTクライアント(POSTMANなど)/ CURLからの実行php & pythonスクリプトですが、Kafkaへの最初の呼び出しが行われたときにエラーになります - KafkaClientが発生します。どういうわけか、PythonはKafkaにアクセスできません。
これがユーザー権限か愚かな設定間違いかどうかわかりません。
また......
- 私たちは、セキュリティグループ、設定ファイル、コードベースのプロパティなど他のVPC
- に同様の作業を設定している一貫した
- アップグレードオプションはありませんされています近い将来に可能性があります
すべてのポインタ/ヘルプ/新鮮な目のペアは本当に私たちを助けます。
ありがとうございました!