lizhey314 2019-02-02 17:20 采纳率: 0%
浏览 1760

kafka 集成 kerberos ,启动kafka报错

kafka 使用kerberos协议的时候,启动kakfa的时候报zookeeper校验不通过。
错误信息如下:图片说明

kerberos的用户密钥:图片说明

kerberos的etc/krb5.conf配置信息:[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = EXAMPLE.COM
default_tkt_enctypes = arcfour-hmac-md5
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
EXAMPLE.COM = {
kdc = 192.168.1.41
admin_server = 192.168.1.41
}

[domain_realm]
kafka = EXAMPLE.COM
zookeeper = EXAMPLE.COM
weiwei = EXAMPLE.COM
192.168.1.41 = EXAMPLE.COM
127.0.0.1 = EXAMPLE.COM

kerberos 的var/kerberos/krb5kdc/kdc.conf的配置信息:
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
EXAMPLE.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
max_renewable_life = 7d
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}

kafka的kafka_server_jaas.conf的配置信息:
KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/var/kerberos/krb5kdc/kafka.keytab"
principal="kafka/weiwei@EXAMPLE.COM";
};

Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/var/kerberos/krb5kdc/kafka.keytab"
principal="zookeeper/192.168.1.41@EXAMPLE.COM";
};

zookeeper_jaas.conf的配置信息:
Server{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=false
keyTab="/var/kerberos/krb5kdc/kafka.keytab"
principal="zookeeper/192.168.1.41@EXAMPLE.COM";
};

zookeeper.properties的新增配置信息:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

server.properties 新增的配置信息:
advertised.host.name=192.168.1.41
advertised.listeners=SASL_PLAINTEXT://192.168.1.41:9092
listeners=SASL_PLAINTEXT://192.168.1.41:9092
#listeners=PLAINTEXT://127.0.0.1:9093
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka

zookeeper-server-start.sh 新增的配置信息
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/home/shubei/Downloads/kafka_2.12-1.0.0/config/zookeeper_jaas.conf'

kafka-server-start.sh 新增的配置信息:
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/home/shubei/Downloads/kafka_2.12-1.0.0/config/kafka_server_jaas.conf'

配置信息基本是这样,快过年了,小弟在线求救,再预祝大侠们新年快乐。












  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 20:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先确保你的kerberos环境配置正确,并且kafkazookeeper服务都已启动。接下来,请按照以下步骤操作:

    步骤 1: 检查 Kerberos 和 ZOOKEEPER 配置

    1. 检查 Kerberos 环境变量:

      • ~/.bash_profile 或者其他 .bash* 文件中添加以下行以设置 Kerberos 环境变量:

        export KRB5CCNAME=/etc/krb5ccs.example.com
        
      • 如果使用的是 Windows 系统,请在 User Profile\Documents\krb5.conf 中添加正确的路径。

    2. 检查 Zookeeper 配置文件:

      • 确保 zkconfig.properties 文件包含以下配置项:
        authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
        requireClientAuthScheme=sasl
        jaasLoginRenew=3600000
        
      • 如果没有找到这些配置项,可能需要手动修改 zkconfig.properties 文件并将其保存为新版本。

    步骤 2: 更新 Kerberos 认证

    1. 更新 Kerberos 用户密钥

      • ~/.bash_profile 或其他 .bash* 文件中添加以下行以生成新的密钥对(如果已经存在,则会覆盖):

        gpg --keygen --output /tmp/example.com.key
        gpg --export example.com --armor > /tmp/example.com.key
        
      • /tmp/example.com.key 复制到 var/kerberos/krb5kdc/kafka.keytab 文件中。

    2. 更新 Kerberos 配置文件

      • krb5kdc/kafka.keytab 文件中添加以下行来引用新的密钥对:

        keytab /tmp/example.com.key
        realm kafka
        password example.com
        
      • /tmp/example.com.key 复制到 var/kerberos/krb5kdc/kafka.keytab 文件中。

    3. 更新 Zookeeper 认证

      • zkconfig.properties 文件中将旧密钥替换为新密钥,或者在 Zookeeper 启动时自动同步密钥:
        master_principal = example.com
        master_key = /tmp/example.com.key
        
    4. 重启 Zookeeper 服务

      • 停止 Zookeeper 服务:

        sudo systemctl stop zookeeper
        
      • 启动 Zookeeper 服务:

        sudo systemctl start zookeeper
        
    5. 验证 Kerberos 认证

      • 重新尝试运行 kafka-server-start.shzookeeper-server-start.sh

    步骤 3: 检查 Kerberos 及 ZOOKEEPER 是否成功认证

    1. 检查 Zookeeper

      • 打开浏览器,输入 http://192.168.1.41:2181,登录 Zookeeper。
      • 查看客户端连接是否正常,确认是否有任何错误消息或异常。
    2. 检查 Kafka

      • 从控制台或其他方式启动 Kafka。
      • 检查 Kafka 是否能够正常与 Zookeeper 连接。

    如果你遇到任何问题,请提供更多的细节,以便我们能更好地帮助你解决问题。

    评论

报告相同问题?