linux情况最新kafka3.8.0单节点kraft+ssl摆设

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

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

创建kafka安装路径,下载kafka,摆设kraft模式kafka,启动服务,创建主题,生产者,消耗者,发送消息查看消息:
1. 创建kafka安装路径

登陆linux体系打开一个终端1,创建kafka安装路径:
  1. mkdir kafka
复制代码
2. 下载kafka3.8.0

  1. cd kafka
  2. wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz
复制代码
3. 摆设kraft模式kafka

修改主机名称为node1
  1.         hostname node1
复制代码
验证修改效果:
  1.         uname
复制代码
解压文件:
  1.         tar -zxvf kafka_2.13-3.8.0.tgz
复制代码
进入 kafka_2.13-3.8.0 路径:
  1.         cd kafka_2.13-3.8.0
复制代码
天生 UUID:
  1.         KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
复制代码
格式化日志目录:
  1.         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. 启动服务

  1. bin/kafka-server-start.sh config/kraft/server.properties
复制代码
如果盼望背景启动,则如下 加上 -daemon 即可
5. 验证服务

打开另一个终端2会话,cd 进入 kafka_2.13-3.8.0 路径
创建主题 yykj-topic
  1.         bin/kafka-topics.sh --create --topic yykj-topic --bootstrap-server node1:9092
复制代码
查看指定主题的具体信息
  1.         bin/kafka-topics.sh --describe --topic yykj-topic --bootstrap-server node1:9092
复制代码
查看全部已有的主题
  1.         bin/kafka-topics.sh --list --bootstrap-server node1:9092
复制代码
6. 生产者

打开另一个终端3会话,产生主题 yykj-topic 消息
  1.         bin/kafka-console-producer.sh --topic yykj-topic--bootstrap-server node1:9092
复制代码
7. 消耗者

打开另一个终端4会话,订阅主题 yykj-topic
  1.         bin/kafka-console-consumer.sh --topic yykj-topic --from-beginning --bootstrap-server node1:9092
复制代码
8. 发送消息 查看消息

切换到生产者终端3输入:
  1.                 hello 宇一科技
复制代码
切换到消耗者终端4,可以看到生产者产生的消息
  1.                   hello 宇一科技
复制代码
关闭服务 :关闭终端终端1
二、ssl加密摆设

提供脚本,天生证书,配置证书,验证服务
1. 创建证书路径

打开另一个终端5会话,cd 进入kafka路径(和kafka_2.13-3.8.0同级),创建路径 ssl
  1.         mkdir ssl
复制代码
进入ssl路径
  1.         cd ssl
复制代码
2. 创建天生证书脚本

  1.         vim cert.sh
复制代码
按下 i 按键,切换 vim 为插入模式
证书脚本复制粘贴到 cert.sh 文件,按下 ESC 按键,切换 vim 为命令模式,输入字符 wq,按下 回车键 保存退出 vim。
证书脚本
  1.         echo "Step1: init paramters"
  2.         BASE_DIR=/<font color=red>你的路径</font>/ssl
  3.         CERT_OUTPUT_PATH="$BASE_DIR/cert"
  4.         PASSWORD=yourpassword
  5.         KEY_STORE="$CERT_OUTPUT_PATH/kafka.keystore"
  6.         TRUST_STORE="$CERT_OUTPUT_PATH/kafka.truststore"
  7.         KEY_PASSWORD=$PASSWORD
  8.         STORE_PASSWORD=$PASSWORD
  9.         TRUST_KEY_PASSWORD=$PASSWORD
  10.         TRUST_STORE_PASSWORD=$PASSWORD
  11.         CLUSTER_NAME=test-cluster-01
  12.         CERT_AUTH_FILE="$CERT_OUTPUT_PATH/ca-cert"
  13.         CLUSTER_CERT_FILE="$CERT_OUTPUT_PATH/${CLUSTER_NAME}-cert"
  14.         DAYS_VALID=365
  15.         D_NAME="CN=localhost, OU=yykj, O=yykj, L=China, ST=China, C=bj"
  16.         mkdir -p $CERT_OUTPUT_PATH
  17.        
  18.         echo "Step2: Create certificate to keystore"
  19.         keytool -keystore $KEY_STORE -alias $CLUSTER_NAME -validity $DAYS_VALID -genkey -keyalg RSA -storepass $STORE_PASSWORD -keypass $KEY_PASSWORD -dname "$D_NAME"
  20.        
  21.         echo "Step3: Create CA"
  22.         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"
  23.        
  24.         echo "Step4: Import CA into truststore"
  25.         keytool -keystore "$TRUST_STORE" -alias CARoot -import -file "$CERT_AUTH_FILE" -storepass "$TRUST_STORE_PASSWORD" -keypass "$TRUST_KEY_PASS" -noprompt
  26.        
  27.         echo "Step5: Export certificate from keystore"
  28.         keytool -keystore "$KEY_STORE" -alias "$CLUSTER_NAME" -certreq -file "$CLUSTER_CERT_FILE" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt
  29.        
  30.         echo "Step6: Signing the certificate"
  31.         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"
  32.        
  33.         echo "Setp7: Import CA into keystore"
  34.         keytool -keystore "$KEY_STORE" -alias CARoot -import -file "$CERT_AUTH_FILE" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt
  35.        
  36.         echo "Setp8: Import signed certificate into keystore"
  37.         keytool -keystore "$KEY_STORE" -alias "${CLUSTER_NAME}" -import -file "${CLUSTER_CERT_FILE}-signed" -storepass "$STORE_PASSWORD" -keypass "$KEY_PASSWORD" -noprompt
复制代码
3. 天生证书

执行指令
  1.         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 修改添加如下配置
  1.         listeners=SSL://0.0.0.0:8066,CONTROLLER://:9093
  2.         advertised.listeners=SSL://外网IP:8066
  3.         ssl.keystore.location=/你的路径/ssl/cert/kafka.keystore
  4.         ssl.keystore.password=yourpassword
  5.         ssl.key.password=yourpassword
  6.         ssl.truststore.location=/你的路径/ssl/cert/kafka.truststore
  7.         ssl.truststore.password=yourpassword
  8.         #这一行官方文档没有,加上,否则可能报错
  9.         ssl.endpoint.identification.algorithm=
  10.         ssl.client.auth=required             # 设置clients也要开启认证
  11.        
  12.         #inter.broker.listener.name=PLAINTEXT # 这句注释掉,加入下面这句
  13.         security.inter.broker.protocol=SSL
复制代码
路径 kafka_2.13-3.8.0 创建 client-ssl.config 文件,配置如下
  1.         bootstrap.servers=node1:8066
  2.         security.protocol=SSL
  3.         ssl.keystore.location=/你的路径/ssl/cert/kafka.keystore
  4.         ssl.keystore.password=yourpassword
  5.         ssl.truststore.location=/你的路径/ssl/cert/afka.truststore
  6.         ssl.truststore.password=yourpassword
  7.         ssl.endpoint.identification.algorithm=
  8.         ssl.key.password=yourpassword
复制代码
6. 启动服务

打开另一个终端6会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令
  1.         bin/kafka-server-start.sh config/kraft/server.properties
复制代码
如果盼望背景启动,则如下 加上 -daemon 即可
7. 创建主题 查看主题

打开另一个终端7会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令
  1.         bin/kafka-topics.sh --create --topic yykj-topic-ssl --bootstrap-server node1:8066  --command-config client-ssl.config
  2.         bin/kafka-topics.sh --describe --topic yykj-topic-ssl --bootstrap-server node1:8066 --command-config client-ssl.config
  3.         bin/kafka-topics.sh --list --bootstrap-server node1:8066 --command-config client-ssl.config
复制代码
8. 生产者

打开另一个终端8会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令 生产消息
  1.         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,执行如下指令 消耗消息
  1.         bin/kafka-console-consumer.sh --bootstrap-server node1:8066 --topic yykj-topic-ssl --from-beginning --consumer.config client-ssl.config
复制代码
10. 发送消息 查看消息

切换到生产者终端8输入:
  1.                 hello 宇一科技
复制代码
切换到消耗者终端9,可以看到生产者产生的消息
  1.                  hello 宇一科技
复制代码
至此inux情况最新kafka3.8.0单节点kraft+ssl摆设完成!!!
下一章 基于 kafka+单节点+ssl 的基础上增加 sasl 配置

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表