基于 CenterOS 7 kerberos + zookeeper + kafka 單節點配置
- 重要提示
- 一.安裝 Kerberos
-
- 1.主節點安裝
- 2.其他子節點安裝krb5-devel、krb5-workstation
- 3.修改/etc/krb5.conf 為以下内容:
- 4.修改 /var/kerberos/krb5kdc/kdc.conf
- 5.建立Kerberos資料庫
- 6.設定服務啟動服務,在主節點上執行
- 7.基本操作指令
- 二.安裝 kafka + zookeeper
-
- 1.下載下傳安裝包 [官網](http://kafka.apache.org/downloads) 這裡使用的zookeeper 內建在 kafka安裝包内的 kafka版本為2.12-2.1.1
- 2.解壓安裝包
- 3.kerberos生成kafka和zookeeper的 principal 以及keytab檔案
- 4.建立 zookeeper 使用的 config/zookeeper_jaas.conf 檔案
- 5.建立 kafka 使用的 config/server_jaas.conf 檔案
- 6.建立 kafka 使用的 config/client_jaas.conf 檔案
- 7.修改 config/server.properties 檔案添加以下内容
- 8.為config/zookeeper.properties 檔案添加以下内容 沒有就建立一個
- 9.為config/producer.properties和consumer.properties檔案添加以下内容
- 10.建立 zookeeper_start.sh 啟動腳本放到kafka根目錄 這裡需要改為自己設定的jaas_conf 檔案路徑
- 11.建立 kafka_start.sh 啟動腳本放到kafka根目錄 這裡需要改為自己設定的jaas_conf 檔案路徑
- 12.啟動 zookeeper 服務
- 13.啟動 kafka 服務
- 14.可以從根目錄 zookeeper.log 和 kafka.log 驗證是否啟動成功
重要提示
**本文使用的kafka內建包版本為 2.12-2.1.1**
**kafka 自行配置的 principal 名不要用 大寫 不然不能識别**
以下為本文host 配置:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost
127.0.0.1 ecs-18c7 ecs-18c7
192.168.1.212 kdc-server kdc-server #** 這裡是自己内網IP 映射名 使用小寫
一.安裝 Kerberos
1.主節點安裝
yum install krb5-server -y
2.其他子節點安裝krb5-devel、krb5-workstation
yum install krb5-devel krb5-workstation -y
3.修改/etc/krb5.conf 為以下内容:
[logging]
default = FILE:/var/log/krb5libs.log
#檢視 Kerberos 驗證LOG
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
#這裡填自己的 realm
default_realm = EXAMPLE.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 86400
renew_lifetime = 604800
forwardable = true
default_tgs_enctypes = rc4-hmac
default_tkt_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
EXAMPLE.COM = {
#這裡為host裡映射的 kdc-server
kdc = kdc-server
admin_server = kdc-server
}
[domain_realm]
kafka = EXAMPLE.COM
zookeeper = EXAMPLE.COM
clients = EXAMPLE.COM
192.168.1.212 = EXAMPLE.COM
4.修改 /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.COM = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
max_renewable_life = 7d
max_life = 1d
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
default_principal_flags = +renewable, +forwardable
}
5.建立Kerberos資料庫
6.設定服務啟動服務,在主節點上執行
chkconfig --level 35 krb5kdc on
chkconfig --level 35 kadmin on
service krb5kdc start
service kadmin start
7.基本操作指令
kadmin.local -q "list_principals" #列出Kerberos中的所有認證使用者,即principals
kadmin.local -q "addprinc zookeeper/kdc-server" #添加認證使用者,需要輸入/确認 密碼
kadmin.local -q "xst -k keytab.keytab zookeeper/[email protected]" #導出指定使用者的秘鑰到xx.keytab裡面 **這裡可以把不同使用者的秘鑰導到同一個xx.keytab裡面
kinit -k -t keytab.keytab zookeeper/[email protected] #驗證這個keytab檔案是否能驗證成功
klist -e -k -t keytab.keytab # 檢視這個keytab 裡面儲存的秘鑰
二.安裝 kafka + zookeeper
1.下載下傳安裝包 官網 這裡使用的zookeeper 內建在 kafka安裝包内的 kafka版本為2.12-2.1.1
2.解壓安裝包
3.kerberos生成kafka和zookeeper的 principal 以及keytab檔案
1.建立 principal
sudo /usr/sbin/kadmin.local -q 'addprinc -randkey zookeeper/[email protected]'
sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/[email protected]'
sudo /usr/sbin/kadmin.local -q 'addprinc -randkey clients/[email protected]'
2.生成keytab 檔案 ** 這裡為了友善全部生成到同一個檔案裡面
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/keytab.keytab kafka/[email protected]"
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/keytab.keytab zookeeper/[email protected]"
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/keytab.keytab clients/[email protected]"
4.建立 zookeeper 使用的 config/zookeeper_jaas.conf 檔案
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=false
keyTab="/var/kerberos/krb5kdc/keytab.keytab"
principal="zookeeper/[email protected]";
};
5.建立 kafka 使用的 config/server_jaas.conf 檔案
KafkaServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/var/kerberos/krb5kdc/keytab.keytab"
principal="kafka/[email protected]";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/var/kerberos/krb5kdc/keytab.keytab"
principal="kafka/[email protected]";
};
6.建立 kafka 使用的 config/client_jaas.conf 檔案
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/var/kerberos/krb5kdc/keytab.keytab"
storeKey=true
useTicketCache=false
serviceName="kafka"
principal="clients/[email protected]";
};
7.修改 config/server.properties 檔案添加以下内容
listeners=SASL_PLAINTEXT://kdc-server:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka
8.為config/zookeeper.properties 檔案添加以下内容 沒有就建立一個
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
9.為config/producer.properties和consumer.properties檔案添加以下内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
10.建立 zookeeper_start.sh 啟動腳本放到kafka根目錄 這裡需要改為自己設定的jaas_conf 檔案路徑
export KAFKA_HEAP_OPTS='-Xmx1024M'
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/data/kafka_2.12-2.1.1/config/zookeeper_jaas.conf'
bin/zookeeper-server-start.sh config/zookeeper.properties >zookeeper.log&
11.建立 kafka_start.sh 啟動腳本放到kafka根目錄 這裡需要改為自己設定的jaas_conf 檔案路徑
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/data/kafka_2.12-2.1.1/config/server_jaas.conf'
bin/kafka-server-start.sh config/server.properties > kafka.log&
12.啟動 zookeeper 服務
sh zookeeper_start.sh
13.啟動 kafka 服務
sh kafka_start.sh
14.可以從根目錄 zookeeper.log 和 kafka.log 驗證是否啟動成功