コンソールスクリプトを使用してsaslで保護されたKafkaとの通信に問題があります。 Kafkaはsaslで保護され、listenerはSASL_PLAINTEXTであり、メカニズムはPLAINです。私が何をしたかKafka「JAAS設定でログインモジュールが指定されていません」
: 私はカフカのいずれかのスクリプトを使用していくつかのデータを一覧表示しようとした:
ビン/ kafka-consumer-groups.sh --bootstrapサーバ(アドレス)
--listしかし、 "WARNブートストラップブローカ(アドレス)が切断されています(org.apache.kafka.clients.NetworkClient)"となり、コマンドが失敗します。これはsaslで保護されているためわかります。
私はそのコマンドにクライアントのユーザー名/パスワードを追加する方法を試しました。 まず、kafka-console-consumerスクリプトを実行しようとしましたが、私は--command-configを使って必要なファイルを追加しました。すぐにjaasファイルを直接追加することができないことをすぐに発見し、.propertiesファイルを使用する必要がありました。
私のプロパティファイル(私はここにすべての実際のデータを置くことができない、括弧は "検閲" のデータを示していることに注意してください):
bootstrap.servers=(address)
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
sasl.jaas.config=(path)/consumer_jaas.conf
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
group.id=(group)
マイJAASファイル:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username=(username)
password=(password);
};
このJAASをファイルは私の標準Javaアプリケーションで動作します。
しかし、私はカフカ-消費者グループのスクリプトやカフカ・コンソール・消費者のいずれかを実行しようとしているとき、私はこのエラーを取得:
Exception in thread "main" org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:94)
at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:93)
at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:51)
at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:84)
at kafka.admin.AdminClient$.create(AdminClient.scala:229)
at kafka.admin.AdminClient$.create(AdminClient.scala:223)
at kafka.admin.AdminClient$.create(AdminClient.scala:221)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.createAdminClient(ConsumerGroupCommand.scala:454)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.<init>(ConsumerGroupCommand.scala:389)
at kafka.admin.ConsumerGroupCommand$.main(ConsumerGroupCommand.scala:65)
at kafka.admin.ConsumerGroupCommand.main(ConsumerGroupCommand.scala)
Caused by: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.security.JaasConfig.<init>(JaasConfig.java:68)
at org.apache.kafka.common.security.JaasUtils.jaasConfig(JaasUtils.java:59)
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:85)
このJAASファイルは、そのファイルを直接コピーです私はkafkaと通信するJavaアプリケーションで使用していますが、ここではコンソールツールを使用していますが、動作しません。私は解決策を探してみましたが、役に立たないものは見つかりませんでした。
誰もがこれを手伝ってくれますか?
私は.propertiesファイルに直接JAAS構成エントリを入れて、それが働きました。今私はこれらのスクリプトを間違いなく使用することができます。なぜ外部ファイルに問題があるのか分かりません。ありがとうございました! – Tomasz
sasl.jaas.configを使用する場合は、JAAS構成エントリにのみ設定できます。このエントリは、ファイルへのパスでは機能しません。 Javaプロパティとは逆に、ファイルへのパスでのみ動作します。 –