Kafka 3.9.1 Kraft 單機模式安裝
安裝 OpenJDK 11
- CentOS/RHEL
yum install -y java-11-openjdk-devel
- Ubuntu/Debian
apt install -y openjdk-11-jdk
下載安裝包
wget https://mirrors.aliyun.com/apache/kafka/3.9.1/kafka_2.12-3.9.1.tgz
tar -zxvf kafka_2.12-3.9.1.tgz -C /usr/local
創建認證文件
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_server_jaas.conf
寫入內容如下:
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_alice="alice-secret";
};
ps: username 和 password 表示節點建立集群時,需要驗證的身份信息,只有驗證通過的節點,方能成功建立集群; user_admin="admin-secret"表示用戶名 admin,對應的密碼為 admin-secret。user_alice 同理。
修改啟動文件
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-server-start.sh
寫入內容如下:
if [ "x$KAFKA_OPTS" ]; thenexport KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_2.12-3.9.1/config/kraft/kafka_server_jaas.conf"
fi
修改配置
vim /usr/local/kafka_2.12-3.9.1/config/kraft/server.properties
添加或修改內容如下:
# 表示開啟PLAIN認證機制
sasl.enabled.mechanisms=PLAIN
# 表示Broker間通信也啟用PLAIN機制
sasl.mechanism.inter.broker.protocol=PLAIN
# 禁止對所有用戶topic可見
allow.everyone.if.no.acl.found=false
# 允許自動創建topic
auto.create.topics.enable=true
# 允許刪除topic
delete.topic.enable=truelisteners=SASL_PLAINTEXT://:9092,CONTROLLER://:9093
# 表示Broker間通信使用SASL
inter.broker.listener.name=SASL_PLAINTEXT
### x.x.x.x 改成公網ip
advertised.listeners=SASL_PLAINTEXT://x.x.x.x:9092,CONTROLLER://localhost:9093
生成集群唯一 ID
/usr/local/kafka_2.12-3.9.1/bin/kafka-storage.sh random-uuid
格式化存儲目錄(ps:集群模式下,每個集群都要執行,ID 需要保一致)
/usr/local/kafka_2.12-3.9.1/bin/kafka-storage.sh format -t IAtPev4fQu6b_OkrXGpciw -c /usr/local/kafka_2.12-3.9.1/config/kraft/server.properties
啟動 kafka 集群
/usr/local/kafka_2.12-3.9.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-3.9.1/config/kraft/server.properties
查看 kafka 服務日志
cat /usr/local/kafka_2.12-3.9.1/logs/server.log
停止 kafka 集群
/usr/local/kafka_2.12-3.9.1/bin/kafka-server-stop.sh
創建客戶端認證文件
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.conf
寫入內容如下:
KafkaClient {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="alice"password="alice-secret";
};
修改客戶端生產者配置 producer.properties,添加認證機制
vim /usr/local/kafka_2.12-3.9.1/config/producer.properties
寫入內容如下:
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
修改客戶端消費者配置 consumer.properties,添加認證機制
vim /usr/local/kafka_2.12-3.9.1/config/consumer.properties
寫入內容如下:
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
修改客戶端生產者啟動腳本 kafka-console-producer.sh,配置認證文件 kafka_client_jaas.conf
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-console-producer.sh
修改內容如下:
if [ "x$KAFKA_OPTS" ]; thenexport KAFKA_OPTS="-Xmx512M -Djava.security.auth.login.config=/usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.conf"
fi
修改客戶端消費者啟動腳本 kafka-console-consumer.sh,配置認證文件 kafka_client_jaas.conf
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-console-consumer.sh
修改內容如下:
if [ "x$KAFKA_OPTS" ]; thenexport KAFKA_OPTS="-Xmx512M -Djava.security.auth.login.config=/usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.conf"
fi
創建客戶端認證文件
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.properties
寫入內容如下:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
創建 topic
/usr/local/kafka_2.12-3.9.1/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --command-config /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.properties --create --topic test-topic
啟動客戶端生產者
/usr/local/kafka_2.12-3.9.1/bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --producer.config /usr/local/kafka_2.12-3.9.1/config/producer.properties --topic test-topic
啟動客戶端消費者
/usr/local/kafka_2.12-3.9.1/bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --consumer.config /usr/local/kafka_2.12-3.9.1/config/consumer.properties --topic test-topic --from-beginning
查看 topic 列表
/usr/local/kafka_2.12-3.9.1/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --command-config /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.properties --list