张小生

0 声望

这家伙太懒,什么都没留下

个人动态
  • Juju猫 赞了 在 Kafka使用kerberos连接zookeeper时无法连接,帮忙看看,感谢! 的评论!

    已经解决了,由于时间较长,不记得如何解决的这个问题。大致告诉你一下开启zookeeper的kerberos的步骤:
    1、修改conf/zookeeper.properties 添加如下内容:
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    jaasLoginRenew=3600000
    2、新建zookeeper的认证配置文件 vi conf/zookeeper_server_jass.conf
    Server{
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    useTicketCache=false
    keyTab="/etc/security/keytabs/zookeeper.keytab"
    principal="zookeeper/xxx@EXAMPLE.COM";
    };
    3、修改启动脚本zookeeper-server-start.sh 添加如下内容:
    export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/DATA/kafka/config/zookeeper_jaas.conf"

    kafka的kerberos启动步骤如下:
    1、修改配置文件vi conf/server.properties,添加或修改如下内容:
    host=xxx.xxx.xxx.xxx
    port=9092
    listeners=SASL_PLAINTEXT://xxx.xxx.xxx.xxx:9092
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=GSSAPI
    sasl.enabled.mechanisms=GSSAPI
    sasl.kerberos.service.name=kafka
    advertised.host=xxx.xxx.xxx.xxx
    advertised.port=9092
    advertised.listeners=SASL_PLAINTEXT://xxx.xxx.xxx.xxx:9092

    2、建立kafka的认证配置文件kafka_server_jaas.conf
    KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="/etc/security/keytabs/krb.keytab"
    principal="kafka/xxxxxxxx@EXAMPLE.COM";
    };
    // Zookeeper client authentication
    Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="/etc/security/keytabs/zookeeperclient.keytab"
    principal="zookeeperclient/xxxxxxxx@EXAMPLE.COM";
    };

    3、修改启动脚本kafka-server-start.sh,添加如下内容:
    export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/DATA/kafka/config/kafka_server_jaas.conf"

    祝你好运

    4年前
  • 梦中的真 回复 张小生Kafka使用kerberos连接zookeeper时无法连接,帮忙看看,感谢! 中 :

    谢谢,我看配置基本都一样,zookeeper报以下错误,cnxn.saslServer is null: cnxn object did not initialize its saslServer properly,不知道是不是需要对zookeeper做什么操作
    2020-01-09 10:08:34,162 [myid:] - ERROR [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2182:ZooKeeperServer@968] - cnxn.saslServer is null: cnxn object did not initialize its saslServer properly.
    2020-01-09 10:08:34,583 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2182:NIOServerCnxn@360] - caught end of stream exception
    EndOfStreamException: Unable to read additional data from client sessionid 0x16f880d50a70001, likely client has closed socket
    at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:231)
    at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
    at java.lang.Thread.run(Thread.java:748)

    5年前
  • 张小生 回复 梦中的真Kafka使用kerberos连接zookeeper时无法连接,帮忙看看,感谢! 中 :

    已经解决了,由于时间较长,不记得如何解决的这个问题。大致告诉你一下开启zookeeper的kerberos的步骤:
    1、修改conf/zookeeper.properties 添加如下内容:
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    jaasLoginRenew=3600000
    2、新建zookeeper的认证配置文件 vi conf/zookeeper_server_jass.conf
    Server{
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    useTicketCache=false
    keyTab="/etc/security/keytabs/zookeeper.keytab"
    principal="zookeeper/xxx@EXAMPLE.COM";
    };
    3、修改启动脚本zookeeper-server-start.sh 添加如下内容:
    export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/DATA/kafka/config/zookeeper_jaas.conf"

    kafka的kerberos启动步骤如下:
    1、修改配置文件vi conf/server.properties,添加或修改如下内容:
    host=xxx.xxx.xxx.xxx
    port=9092
    listeners=SASL_PLAINTEXT://xxx.xxx.xxx.xxx:9092
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=GSSAPI
    sasl.enabled.mechanisms=GSSAPI
    sasl.kerberos.service.name=kafka
    advertised.host=xxx.xxx.xxx.xxx
    advertised.port=9092
    advertised.listeners=SASL_PLAINTEXT://xxx.xxx.xxx.xxx:9092

    2、建立kafka的认证配置文件kafka_server_jaas.conf
    KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="/etc/security/keytabs/krb.keytab"
    principal="kafka/xxxxxxxx@EXAMPLE.COM";
    };
    // Zookeeper client authentication
    Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    keyTab="/etc/security/keytabs/zookeeperclient.keytab"
    principal="zookeeperclient/xxxxxxxx@EXAMPLE.COM";
    };

    3、修改启动脚本kafka-server-start.sh,添加如下内容:
    export KAFKA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/DATA/kafka/config/kafka_server_jaas.conf"

    祝你好运

    5年前
  • 梦中的真 回复 张小生Kafka使用kerberos连接zookeeper时无法连接,帮忙看看,感谢! 中 :

    你们问题解决了,我这边也遇到了相同的问题

    5年前
  • 半兽人 回复 张小生Kafka SASL认证 中 :

    主题默认是自创的,先看下这个:
    https://issues.apache.org/jira/browse/KAFKA-5458

    5年前
  • 张小生 回复 半兽人Kafka SASL认证 中 :

    已经将包含krb5配置文件的绝对路径和client_jass文件的绝对路径的参数添加到kafka-run-class.sh,并修改了kafka-console-producer.sh脚本,确保成功调用该参数,而且使用生产命令对已存在的topic进行生产时,不会提示任何报错,而且也可以实时消费到。 只是对一个不存在的topic进行生产时,才会出现报错

    5年前