カフカの認証モードは、一般的に次の三つがあります。
バージョン0.9.0.0から1 SASL / GSSAPIをサポートするために始めました
2. SASL / PLAINは、バージョン0.10.0.0からサポートするために始めました
3. SASL / SCRAM-SHA-256およびSASL / SCRAM-SHA-512は、バージョン0.10.2.0から支えるようになりました
ここで最初のSASL / GSSAPIのKerberos認証は、それが持っているJavaのネイティブサポートのための認証ですが、少しトラブルPython用の下方に配置されている特定の構成、合流カフカモジュールについて語っている根本的なlibrdkafkaに依存しますCはとてもオープンGSSAPIインターフェイスもlibrdkafkaでのサポートはコンパイル時間を必要とする言語ライブラリの多くは、この依存しているがあり、高性能カフカのクライアントライブラリを使用して製造しました
librdkafka出典ます。https://github.com/edenhill/librdkafka
あなたは、コンパイルする前に、必要な開発パッケージをインストールする必要があり、そうでない場合は、関連するインタフェースのコンパイラは行きません
最初は、OpenSSLライブラリで、インストールするYUMを使用します: yumを -y インストールのopensslのopenssl-develのを 、OpenSSLをコンパイルのみデフォルトPLAINをサポートし、これらの二つのメカニズムがスクラム、またGSSAPIメカニズムをサポートすることはできません依存、yumのインストールコマンドlibsasl2コンパイルする必要があります次のように:
yumを インストールサイラス-SASL-GSSAPIのcyrus-SASL-develのを
Ubuntuのでコマンド: apt-getをインストール libsasl2-モジュールGSSAPI-MIT-DEV-libsasl2は SDK libsasl2をインストール
その後、これは使用カフカのメッセージ圧縮するのに便利ですがzlibライブラリかどうかを確認し、通常のコマンドをインストール、存在する: yumを インストールしたzlib-develのを あなたが圧縮を有効zstd手動でコンパイルしてインストールすることができ、より高いパフォーマンスが必要な場合は、ここでは詳述しません、説話
上記のライブラリが正常にインストールされている、あなたはlibrdkafkaソース、ソースパッケージをコンパイルするために開始することができ、ここで次のようにlibrdkafka-1.2.1.tar.gz、コマンドをインストールします。
#エキスパッケージ のtar -xvzf librdkafka- 1.2。。1。タール.gzを CDのlibrdkafka - 1.2。。1 位コードをコンパイル 。 / 設定 します 作る インストール
出力のlibsslによれば、上記のコマンドは./configureを実行した後に注意してください、次のようlibsasl2がオンされたか否かを確認します。
ここでのlibsslとlibsasl2ショーOK説明SSLおよびSASL SCRAMとSASL GSSAPIまた、configureの段階を実行すると、デフォルトのインストール場所の接頭辞を指定していない、サポートされている今では/ usr / local、動的ライブラリの場所があるされます。/ usr / local / libの、あなたは、保存後に有効になり、そのような追加は/etc/ld.so.confのような動的ライブラリの接続リストにこのディレクトリを追加するにldconfigを実行する必要があります
最後に、あなたがインストールされたバージョンは1.2.0である場合には、インストール後に以下のコードのテストを実行することができ、合流のカフカのPythonモジュールをコンパイルしてインストールすることができます。
1 #は/ usr / binに/のenvのpython3! 2 #1 = UTF-8コード 3 から confluent_kafka インポートプロデューサ 4 5 DEF delivery_report(ERR、MSG): 6 ""は、」配信結果を示すために生成された各メッセージのために一度呼び出される。 7 によってトリガポーリング()またはフラッシュ()。""」 8 場合 ERRはありません ではないなし: 9 プリント(' メッセージの配信に失敗しました:{} ' .format(ERR)) 10 他: 11 プリント('配信されたメッセージ{} [{}] ' .format(msg.topic()、msg.partition())) 12 13 なら __name__ == ' __main__ ' : 14 = producer_conf { 15 " bootstrap.servers ":' 192.168。 0.3:9092,192.168.0.4:9092,192.168.0.5:9092 ' 16 " security.protocol ":' sasl_plaintext ' 17 ' sasl.kerberos.service.name ':' カフカ" 、 18 " sasl.kerberos.keytab ':' /opt/user.keytab ' 19 ' sasl.kerberos.principal ':' kafkauser ' 、 20 } 21 P = プロデューサー(producer_conf) 22 23 (0)p.poll 24 p.produce (' testTopic '、' コンフルエントカフカ試験' .encode(' UTF-8 ' )、 25 コールバック= delivery_report) 26 27 p.flush() 28 印刷(「完了」)
HTTPS:メッセージに関する通常の製造が構成されている場合、GSSAPIを使用するだけsecurity.protocolと、異なる認証メカニズムにユーザー名およびパスワード構成とキータブ他の認証パラメータへのパスを設定する必要があり、より多くの構成パラメータは、ドキュメントを参照します。 //github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
SASLの設定プロセス認証標準librdkafka詳細ます。https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka