2016-05-31 1 views
0

は、私は3つのカフカブローカー(kafka_2.11-0.10.0.0)と各ブローカのセキュリティは以下のように設定されているが、持っているブローカー複製エラー「のトピックにアクセスする権限がありません:[トピックの認証に失敗しました。]」

listeners=PLAINTEXT://xxxx:9093,SASL_PLAINTEXT://xxxx:10093 
advertised.listeners=PLAINTEXT://xxxx:9093,SASL_PLAINTEXT://xxxx:10093 
security.inter.broker.protocol=PLAINTEXT 
sasl.enabled.mechanisms=PLAIN 
sasl.mechanism.inter.broker.protocol=PLAIN 
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 
allow.everyone.if.no.acl.found=true 
super.users=User:admin 

kafka_server_jaas.confもadminユーザで設定されています。

PLAINTEXTリスナーを使用して接続し、メッセージを生成して消費すると、すべて正常に動作します。

が、私はいくつかのトピックにACLを追加しようとすると、クラスタ下記のような出力エラーメッセージ:

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=xxxx:2181/kafka10 --add --allow-principal User:guest --producer --topic page_visits_10k 

ブローカー出力

[2016-05-31 10:49:57,497] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread) 
[2016-05-31 10:49:59,003] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread) 

エラー出力は、インターブローカー複製エラーのように見えます何か助けていただければ幸いです。

答えて

0

最後に、この問題を解明します。
エラーが原因で発生し:それがあるべき
security.inter.broker.protocol = PLAINTEXT


security.inter.broker.protocol = SASL_PLAINTEXT

[2016-05-31 10:49:57,497] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread) 
[2016-05-31 10:49:59,003] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread) 
0

以下のスクリプトを実行します。動物園を開始した後、そしてカフカを開始する前に実行します。

sh kafka_2.11-0.9.0.1/bin/kafka-acls.sh --authorizer-properties zookeeper.connect = localhost:2181 - 操作すべて--allow-principalユーザー:* --allow-host - -add -cluster

This will allow local server machine all ACL 
0

私はKafka v.0.10でACLを使用して同様の問題に直面しました。私はthisディスカッションが役に立ちました。特に、許可ログを有効にして、要求の着信ユーザ名と、ACLで指定されているユーザ名を確認します。
認証ログは、configフォルダ内のlog4j.propertiesを変更することで有効にすることができます。 log4j.propertiesファイルでWARNDEBUGに変更し、kafka-serversを再起動します。

log4j.logger.kafka.authorizer.logger=DEBUG, authorizerAppender 

これは私の問題を整理するのに役立ちました。希望が役立ちます。

PS:生成された承認ログは非常に長くなり、多くの領域を消費します。したがって、デバッグを行うと、これをオフにすることを忘れないでください。

関連する問題