2016-10-22 10 views
2

私は実際にSASLプレーンテキストを使用して簡単なカフカ認証を設定し、ACL承認を追加しています。しかし、私はデータを消費しようとすると問題が発生します。Kafka TOPIC_AUTHORIZATION_FAILED

[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version : 0.10.0.0 
[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId : b8642491e78c5a13 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 1 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 2 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 3 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 4 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 5 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 6 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 7 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 8 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 9 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 
[main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 10 : {test-topic=TOPIC_AUTHORIZATION_FAILED} 

次に、自分の設定ファイルが表示されます。

server.properties

listeners=SASL_PLAINTEXT://localhost:9092 
security.inter.broker.protocol=SASL_PLAINTEXT 
sasl.mechanism.inter.broker.protocol=PLAIN 
sasl.enabled.mechanisms=PLAIN 
broker.id=0 
num.network.threads=3 
num.io.threads=8 
socket.send.buffer.bytes=102400 
socket.receive.buffer.bytes=102400 
socket.request.max.bytes=104857600 
log.dirs=/tmp/kafka-logs 
num.partitions=1 
num.recovery.threads.per.data.dir=1 
log.retention.hours=168 
log.segment.bytes=1073741824 
log.retention.check.interval.ms=300000 
zookeeper.connect=localhost:2181 
zookeeper.connection.timeout.ms=6000 
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 

producer.properties

security.protocol=SASL_PLAINTEXT 
sasl.mechanism=PLAIN 
bootstrap.servers=localhost:9092 
compression.type=none 

consumer.properties

security.protocol=SASL_PLAINTEXT 
sasl.mechanism=PLAIN 
zookeeper.connect=127.0.0.1:2181 
zookeeper.connection.timeout.ms=6000 
group.id=test-consumer-group 

kafka_server_jaas.conf

KafkaServer { 
    org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="admin" 
    password="admin-secret" 
    user_admin="admin-secret" 
    user_alice="alice-secret"; 
}; 

KafkaClient { 
    org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="alice" 
    password="alice-secret"; 
}; 

環境変数:

export KAFKA_OPTS="-Djava.security.auth.login.config=/home/user/kafka_2.10-0.10.0.1/kafka_server_jaas.conf" 

コマンド

設定ACL:

bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:alice --operation All --group test-consumer-group --topic test-topic 

開始カフカサーバー:

./bin/kafka-server-start.sh config/server.properties 

スタートプロデューサー:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --producer.config=config/producer.properties 

スタート消費者:

bin/kafka-console-consumer.sh --new-consumer --zookeeper localhost:2181 --topic test-topic --from-beginning --consumer.config=config/consumer.properties --bootstrap-server=localhost:9092 

私は消費者を起動しようとすると、私は上記の問題を持っています。また、カフカのログでは、私はこれを持っています:

[2016-10-22 20:17:14,091] ERROR [KafkaApi-0] Error when handling request {group_id=test-consumer-group} (kafka.server.KafkaApis) 
kafka.admin.AdminOperationException: replication factor: 3 larger than available brokers: 1 
    at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:117) 
    at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:403) 
    at kafka.server.KafkaApis.kafka$server$KafkaApis$$createTopic(KafkaApis.scala:629) 
    at kafka.server.KafkaApis.kafka$server$KafkaApis$$createGroupMetadataTopic(KafkaApis.scala:651) 
    at kafka.server.KafkaApis$$anonfun$getOrCreateGroupMetadataTopic$1.apply(KafkaApis.scala:657) 
    at kafka.server.KafkaApis$$anonfun$getOrCreateGroupMetadataTopic$1.apply(KafkaApis.scala:657) 
    at scala.Option.getOrElse(Option.scala:121) 
    at kafka.server.KafkaApis.getOrCreateGroupMetadataTopic(KafkaApis.scala:657) 
    at kafka.server.KafkaApis.handleGroupCoordinatorRequest(KafkaApis.scala:818) 
    at kafka.server.KafkaApis.handle(KafkaApis.scala:86) 
    at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60) 
    at java.lang.Thread.run(Thread.java:745) 

どうすればいいですか?

+0

こんにちは、私はあなたがしようとしている、と思いますマルチブローカクラスタにアクセスします。ただし、構成(server.properties)はただ1つのブローカーを作成しているだけです。アプリケーションコードを確認してください。マルチ(3)ブローカクラスタを作成する場合は、server-1.properties、server-2.properties、およびserver-3.propertiesのような3つの異なる構成ファイルを作成し、3つのブローカを定義します。 – Kris

+0

こんにちは、私はマルチブローカークラスターにアクセスしようとしていません。私はすでに私の設定をチェックして、私もマルチブローカクラスタを作成したくありません。 –

+0

トピックを作成している場所でアプリケーションコードを投稿してください。 – Kris

答えて

0

jaas clientとjaas serverを分離して修正しました。同じ端末、輸出JAASサーバーのconfファイルで

kafka_server_jaas.conf

KafkaServer { 
    org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="admin" 
    password="admin-secret" 
    user_admin="admin-secret" 
    user_alice="alice-secret"; 
}; 

kafka_client_jaas.conf

KafkaClient { 
    org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="alice" 
    password="alice-secret"; 
}; 

とカフカブローカーを開始します。

$ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/user/kafka_2.10-0.10.0.1/kafka_server_jaas.conf" 
$ ./bin/kafka-server-start.sh config/server.properties 

クライアント端末、輸出クライアントのJAAS confファイルのオンと消費者を起動します。

$ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/user/kafka_2.10-0.10.0.1/kafka_client_jaas.conf" 
$ ./bin/kafka-console-consumer.sh --new-consumer --zookeeper localhost:2181 --topic test-topic --from-beginning --consumer.config=config/consumer.properties --bootstrap-server=localhost:9092 

あなたも生成したい場合は、別の端末ウィンドウで次の操作を行います。

$ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/user/kafka_2.10-0.10.0.1/kafka_client_jaas.conf" 
$ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --producer.config=config/producer.properties 
0

レプリケーションファクタ3のトピックを作成したが、ブローカが1つしか実行されていないようです。 "--replication-factor 1"でトピックを作成してみてください。トピックを自動的に作成する場合は、デフォルトの複製係数を1(config/server.propertiesのdefault.replication.factor)に変更することもできます。

+0

レスポンスありがとうございましたが、複製係数1でトピックを手動で作成しました。私はまだ同じ問題がありました。 –

+0

新しいトピックについてどのようなエラーが表示されますか? –

+0

私はトピック作成に関して何の問題もありませんが、kafkaサーバーを起動する端末ではまだ同じ問題があります。 kafka.admin.AdminOperationException:レプリケーションファクタ:利用可能なブローカよりも3大きい:1 –

0

私はKafka v.0.10でACLを使用して同様の問題に直面しています。このディスカッションは参考になりました。特に、許可ログを有効にして、要求の着信ユーザ名と、ACLで指定されているユーザ名を確認します。

まず、サーバーのプリンシパルの管理者にすべての認証が必要かどうかを確認します。サーバー主体は、すべてのトピック、グループ、およびクラスターに対してすべてのタイプの許可を実行する必要があります。 server.propertiesファイルのスーパーユーザーでの管理者を宣言することをお勧めします。これで問題が解決されない場合は、認可ログを有効にして、どの検体がどの操作に使用されているかを調べることができます。

権限ログは、configフォルダ内のlog4j.propertiesを変更することで有効にすることができます。 log4j.propertiesファイルでWARNDEBUGに変更し、kafka-serversを再起動します。

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

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

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

関連する問題