0

我找不到任何關於這個問題的信息,所以我會很高興,如果有人可以幫助我這一點。沒有Kerberized卡夫卡經紀人連接到Kerberized Zookeeper

我有一個服務,如一個Kerberos的集羣 HBase的,MapReduce的,HDFS,動物園管理員 ......所有采用Kerberos和工作。

讓我們想象一下我要添加一些卡夫卡經紀人集羣,但我Kerberize卡夫卡,因爲睾丸一槍讓我覺得比Kerberos的卡夫卡的想法更好。

我不知道我是否錯過了某些參數......可能我是......但是動物園管理員可以告訴我們也必須接受PLAINTEXT對某些節點或某些特定目錄的請求如卡夫卡在例如:

動物園管理員:2181/卡夫卡


恢復時,問題是:

  • 是否有任何選項可以包含一個非kerberized Kafka Broker並使其對羣集中已經kerberized的Zookeeper起作用?

回答

2

如果你需要一個像配置:

[zookeeper] <----- SASL ----> [kafka] <----- non-authenticated request ---> [clients] 

然後是的,這是可能的。你只需要到

  1. 創建將用於與動物園管理員溝通經紀委託人(與keytabs)。
  2. 配置動物園管理員的ACL,設置cdrwa接入節點zookeeper:2181/kafka到用戶
  3. 複製的keytab經紀人和配置卡夫卡JAAS文件是這樣的: ZookeeperClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/path/to/keytab" principal="[email protected]"; };

然後,在卡夫卡的配置設置zookeeper.set.acl=true,但不要設置任何authorizer.class.name(這將使卡夫卡消費者和生產者的身份驗證)

+0

謝謝Mariusz!我會盡快嘗試。只是一個問題:爲了使此配置有效,是否需要更改zookeeper默認節點?我的意思是,動物園管理員:2181(默認的)仍然有效,對嗎?我的意思是,這個非Kerberos Kafka不會「干擾」也連接到zookeeper:2181的其他Kerberos Kafka,對吧?提前致謝!! –

+0

如果你想在一個動物園管理員上使用2個(或更多)Kafkas,你應該首先爲每個動物園管理員創建一個根節點,並將連接字符串傳遞給節點,例如:'zookeeper:2181/kafka1','zookeeper:2181/kafka2 '。如果你遵循這種方式,不同的集羣將完全分離。 – Mariusz

+0

Mariusz,非常感謝。我終於可以讓一個非Kerberos經紀人與一個kerberized動物園管理員一起工作。 (我在最後的評論中做了一個錯誤的陳述,並不是要說另一個Kafka,而是另一個連接到zookeeper的進程,但我測試了這個配置沒有損害任何其他服務)。無論如何,還有最後一個問題讓我感到興奮......0.9消費者仍然連接到動物園管理員,以便消費消息......它怎麼能工作,而不使用特定的委託人?或者,當你使用控制檯消費者時,卡夫卡是否使用連接(客戶端)到動物園管理員的主體?十分感謝!! –

相關問題