天天看點

基于 CenterOS 7 kerberos + zookeeper + kafka 單節點配置重要提示一.安裝 Kerberos二.安裝 kafka + zookeeper

基于 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 驗證是否啟動成功