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消费者仍然连接到动物园管理员,以便消费消息......它怎么能工作,而不使用特定的委托人?或者,当你使用控制台消费者时,卡夫卡是否使用连接(客户端)到动物园管理员的主体?十分感谢!! –

相关问题