linux环境最新kafka3.8.0单节点kraft+ssl部署

本文档介绍了如何进行kafka单节点kraft部署及如何在kafka中配置SSL加密,包括证书的重新生成过程,如单节点kraft服务启动,创建主题,查看主题,订阅主题,消费主题,为broker生成SSL密钥和证书,创建CA证书,签名证书,验证服务。

一、单节点kraft部署

创建kafka安装路径,下载kafka,部署kraft模式kafka,启动服务,创建主题,生产者,消费者,发送消息查看消息:

1. 创建kafka安装路径

登陆linux系统打开一个终端1,创建kafka安装路径:

mkdir kafka

2. 下载kafka3.8.0

cd kafka
wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

3. 部署kraft模式kafka

修改主机名称为node1

	hostname node1

验证修改结果:

 	uname

解压文件:

	tar -zxvf kafka_2.13-3.8.0.tgz 

进入 kafka_2.13-3.8.0 路径:

	cd kafka_2.13-3.8.0

生成 UUID:

	KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

格式化日志目录:

	bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

格式化成功后,会根据 config/kraft/server.properties 的如下配置:
log.dirs=/tmp/kraft-combined-logs
在 /tmp下创建 kraft-combined-logs 目录,并在里面生成 bootstrap.checkpoint

4. 启动服务

bin/kafka-server-start.sh config/kraft/server.properties

如果希望后台启动,则如下 加上 -daemon 即可

5. 验证服务

打开另一个终端2会话,cd 进入 kafka_2.13-3.8.0 路径
创建主题 yykj-topic

	bin/kafka-topics.sh --create --topic yykj-topic --bootstrap-server node1:9092

查看指定主题的详细信息

	bin/kafka-topics.sh --describe --topic yykj-topic --bootstrap-server node1:9092

查看所有已有的主题

	bin/kafka-topics.sh --list --bootstrap-server node1:9092

6. 生产者

打开另一个终端3会话,产生主题 yykj-topic 消息

	bin/kafka-console-producer.sh --topic yykj-topic--bootstrap-server node1:9092 

7. 消费者

打开另一个终端4会话,订阅主题 yykj-topic

	bin/kafka-console-consumer.sh --topic yykj-topic --from-beginning --bootstrap-server node1:9092

8. 发送消息 查看消息

切换到生产者终端3输入:

 		hello 宇一科技

切换到消费者终端4,可以看到生产者产生的消息

  		hello 宇一科技

关闭服务 :关闭终端终端1

二、ssl加密部署

提供脚本,生成证书,配置证书,验证服务

1. 创建证书路径

打开另一个终端5会话,cd 进入kafka路径(和kafka_2.13-3.8.0同级),创建路径 ssl

	mkdir ssl

进入ssl路径

	cd ssl

2. 创建生成证书脚本

	vim cert.sh

按下 i 按键,切换 vim 为插入模式
证书脚本复制粘贴到 cert.sh 文件,按下 ESC 按键,切换 vim 为命令模式,输入字符 wq,按下 回车键 保存退出 vim。

证书脚本

	echo "Step1: init paramters"
	BASE_DIR=/<font color=red>你的路径</font>/ssl
	CERT_OUTPUT_PATH="$BASE_DIR/cert"
	PASSWORD=yourpassword
	KEY_STORE="$CERT_OUTPUT_PATH/kafka.keystore"
	TRUST_STORE="$CERT_OUTPUT_PATH/kafka.truststore"
	KEY_PASSWORD=$PASSWORD
	STORE_PASSWORD=$PASSWORD
	TRUST_KEY_PASSWORD=$PASSWORD
	TRUST_STORE_PASSWORD=$PASSWORD
	CLUSTER_NAME=test-cluster-01
	CERT_AUTH_FILE="$CERT_OUTPUT_PATH/ca-cert"
	CLUSTER_CERT_FILE="$CERT_OUTPUT_PATH/${CLUSTER_NAME}-cert"
	DAYS_VALID=365
	D_NAME="CN=localhost, OU=yykj, O=yykj, L=China, ST=China, C=bj"
	mkdir -p $CERT_OUTPUT_PATH
	
	echo "Step2: Create certificate to keystore"
	keytool -keystore $KEY_STORE -alias $CLUSTER_NAME -validity $DAYS_VALID -genkey -keyalg RSA -storepass $STORE_PASSWORD -keypass $KEY_PASSWORD -dname "$D_NAME"
	
	echo "Step3: Create CA"
	openssl req -new -x509 -keyout "$CERT_OUTPUT_PATH/ca-key" -out "$CERT_AUTH_FILE" -days "$DAYS_VALID" -passin pass:"$PASSWORD" -passout pass:"$PASSWORD" -subj "/C=CN/ST=XX/L=XX/O=XX/CN=XX"
	
	echo "Step4: Import CA into truststore"
	keytool -keystore "$TRUST_STORE" -alias CARoot -import -file "$CERT_AUTH_FILE" -storepass "$TRUST_STORE_PASSWORD" -keypass "$TRUST_KEY_PASS" -noprompt
	
	echo "Step5: Export certificate from keystore"
	keytool -keystore "$KEY_STORE" -alias "$CLUSTER_NAME" -certreq -file "$CLUSTER_CERT_FILE" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt
	
	echo "Step6: Signing the certificate"
	openssl x509 -req -CA "$CERT_AUTH_FILE" -CAkey $CERT_OUTPUT_PATH/ca-key -in "$CLUSTER_CERT_FILE" -out "${CLUSTER_CERT_FILE}-signed" -days "$DAYS_VALID" -CAcreateserial -passin pass:"$PASSWORD"
	
	echo "Setp7: Import CA into keystore"
	keytool -keystore "$KEY_STORE" -alias CARoot -import -file "$CERT_AUTH_FILE" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt
	
	echo "Setp8: Import signed certificate into keystore"
	keytool -keystore "$KEY_STORE" -alias "${CLUSTER_NAME}" -import -file "${CLUSTER_CERT_FILE}-signed" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt

3. 生成证书

执行指令

	sh cert.sh

生成路径 cert ,cert 路径下生成文件
ca-cert
ca-cert.srl
ca-key
kafka.keystore
kafka.truststore
test-cluster-01-cert
test-cluster-01-cert-signed

4. 生成的文件说明

ca-cert:CA文件,不要把该文件拷贝到别的broker机器上!
test-cluster-cert-signed:CA已签发的Kafka证书文件,不要把该文件拷贝到别的broker机器上!
test-cluster-cert:Kafka认证文件(包含公钥和私钥),不要把该文件拷贝到别的broker机器上!
kafka.keystore:Kafka的keystore文件,所有clients端和broker机器上都需要!
kafka.truststore:Kafka的truststore文件,所有clients端和broker机器上都需要!

5. 配置server.properties文件

配置文件 kafka_2.13-3.8.0/config/kraft/server.properties 修改添加如下配置

	listeners=SSL://0.0.0.0:8066,CONTROLLER://:9093
	advertised.listeners=SSL://外网IP:8066
	ssl.keystore.location=/你的路径/ssl/cert/kafka.keystore
	ssl.keystore.password=yourpassword
	ssl.key.password=yourpassword
	ssl.truststore.location=/你的路径/ssl/cert/kafka.truststore
	ssl.truststore.password=yourpassword
	#这一行官方文档没有,加上,否则可能报错
	ssl.endpoint.identification.algorithm=
	ssl.client.auth=required             # 设置clients也要开启认证
	
	#inter.broker.listener.name=PLAINTEXT # 这句注释掉,加入下面这句
	security.inter.broker.protocol=SSL

路径 kafka_2.13-3.8.0 创建 client-ssl.config 文件,配置如下

	bootstrap.servers=node1:8066
	security.protocol=SSL
	ssl.keystore.location=/你的路径/ssl/cert/kafka.keystore
	ssl.keystore.password=yourpassword
	ssl.truststore.location=/你的路径/ssl/cert/afka.truststore
	ssl.truststore.password=yourpassword
	ssl.endpoint.identification.algorithm=
	ssl.key.password=yourpassword

6. 启动服务

打开另一个终端6会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令

	bin/kafka-server-start.sh config/kraft/server.properties

如果希望后台启动,则如下 加上 -daemon 即可

7. 创建主题 查看主题

打开另一个终端7会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令

	bin/kafka-topics.sh --create --topic yykj-topic-ssl --bootstrap-server node1:8066  --command-config client-ssl.config
	bin/kafka-topics.sh --describe --topic yykj-topic-ssl --bootstrap-server node1:8066 --command-config client-ssl.config
	bin/kafka-topics.sh --list --bootstrap-server node1:8066 --command-config client-ssl.config

8. 生产者

打开另一个终端8会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令 生产消息

	bin/kafka-console-producer.sh --broker-list node1:8066 --topic yykj-topic-ssl --producer.config client-ssl.config

9. 消费者

打开另一个终端9会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令 消费消息

	bin/kafka-console-consumer.sh --bootstrap-server node1:8066 --topic yykj-topic-ssl --from-beginning --consumer.config client-ssl.config 

10. 发送消息 查看消息

切换到生产者终端8输入:

 		hello 宇一科技

切换到消费者终端9,可以看到生产者产生的消息

	 	hello 宇一科技

至此inux环境最新kafka3.8.0单节点kraft+ssl部署完成!!!
下一章 基于 kafka+单节点+ssl 的基础上增加 sasl 配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值