ToB企服应用市场:ToB评测及商务社交产业平台
标题:
linux情况最新kafka3.8.0单节点kraft+ssl摆设
[打印本页]
作者:
忿忿的泥巴坨
时间:
2024-10-18 07:23
标题:
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 配置
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4