没有Kerberized卡夫卡经纪人连接到Kerberized Zookeeper
问题描述:
我找不到任何关于这个问题的信息,所以我会很高兴,如果有人可以帮助我这一点。没有Kerberized卡夫卡经纪人连接到Kerberized Zookeeper
我有一个服务,如一个Kerberos的集群 HBase的,MapReduce的,HDFS,动物园管理员 ......所有采用Kerberos和工作。
让我们想象一下我要添加一些卡夫卡经纪人集群,但我不想Kerberize卡夫卡,因为睾丸一枪让我觉得比Kerberos的卡夫卡的想法更好。
我不知道我是否错过了某些参数......可能我是......但是动物园管理员可以告诉我们也必须接受PLAINTEXT
对某些节点或某些特定目录的请求如卡夫卡在例如:
动物园管理员:2181/卡夫卡
恢复时,问题是:
- 是否有任何选项可以包含一个非kerberized Kafka Broker并使其对群集中已经kerberized的Zookeeper起作用?
答
如果你需要一个像配置:
[zookeeper] <----- SASL ----> [kafka] <----- non-authenticated request ---> [clients]
然后是的,这是可能的。你只需要到
- 创建将用于与动物园管理员沟通经纪委托人(与keytabs)。
- 配置动物园管理员的ACL,设置
cdrwa
接入节点zookeeper:2181/kafka
到用户 - 复制的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
(这将使卡夫卡消费者和生产者的身份验证)
谢谢Mariusz!我会尽快尝试。只是一个问题:为了使此配置有效,是否需要更改zookeeper默认节点?我的意思是,动物园管理员:2181(默认的)仍然有效,对吗?我的意思是,这个非Kerberos Kafka不会“干扰”也连接到zookeeper:2181的其他Kerberos Kafka,对吧?提前致谢!! –
如果你想在一个动物园管理员上使用2个(或更多)Kafkas,你应该首先为每个动物园管理员创建一个根节点,并将连接字符串传递给节点,例如:'zookeeper:2181/kafka1','zookeeper:2181/kafka2 '。如果你遵循这种方式,不同的集群将完全分离。 – Mariusz
Mariusz,非常感谢。我终于可以让一个非Kerberos经纪人与一个kerberized动物园管理员一起工作。 (我在最后的评论中做了一个错误的陈述,并不是要说另一个Kafka,而是另一个连接到zookeeper的进程,但我测试了这个配置没有损害任何其他服务)。无论如何,还有最后一个问题让我感到兴奋......0.9消费者仍然连接到动物园管理员,以便消费消息......它怎么能工作,而不使用特定的委托人?或者,当你使用控制台消费者时,卡夫卡是否使用连接(客户端)到动物园管理员的主体?十分感谢!! –