Kafka 3.9.1 Kraft 单机模式安装
安装 OpenJDK 11
- CentOS/RHEL
bash
yum install -y java-11-openjdk-devel
- Ubuntu/Debian
bash
apt install -y openjdk-11-jdk
下载安装包
bash
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
创建认证文件
bash
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_server_jaas.conf
写入内容如下:
bash
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_alice="alice-secret";
};
ps: username 和 password 表示节点建立集群时,需要验证的身份信息,只有验证通过的节点,方能成功建立集群; user_admin="admin-secret"表示用户名 admin,对应的密码为 admin-secret。user_alice 同理。
修改启动文件
bash
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-server-start.sh
写入内容如下:
bash
if [ "x$KAFKA_OPTS" ]; then
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka_2.12-3.9.1/config/kraft/kafka_server_jaas.conf"
fi
修改配置
bash
vim /usr/local/kafka_2.12-3.9.1/config/kraft/server.properties
添加或修改内容如下:
bash
# 表示开启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=true
listeners=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
bash
/usr/local/kafka_2.12-3.9.1/bin/kafka-storage.sh random-uuid
格式化存储目录(ps:集群模式下,每个集群都要执行,ID 需要保一致)
bash
/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 集群
bash
/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 服务日志
bash
cat /usr/local/kafka_2.12-3.9.1/logs/server.log
停止 kafka 集群
bash
/usr/local/kafka_2.12-3.9.1/bin/kafka-server-stop.sh
创建客户端认证文件
bash
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.conf
写入内容如下:
bash
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="alice"
password="alice-secret";
};
修改客户端生产者配置 producer.properties,添加认证机制
bash
vim /usr/local/kafka_2.12-3.9.1/config/producer.properties
写入内容如下:
bash
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
修改客户端消费者配置 consumer.properties,添加认证机制
bash
vim /usr/local/kafka_2.12-3.9.1/config/consumer.properties
写入内容如下:
bash
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
修改客户端生产者启动脚本 kafka-console-producer.sh,配置认证文件 kafka_client_jaas.conf
bash
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-console-producer.sh
修改内容如下:
bash
if [ "x$KAFKA_OPTS" ]; then
export 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
bash
vim /usr/local/kafka_2.12-3.9.1/bin/kafka-console-consumer.sh
修改内容如下:
bash
if [ "x$KAFKA_OPTS" ]; then
export KAFKA_OPTS="-Xmx512M -Djava.security.auth.login.config=/usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.conf"
fi
创建客户端认证文件
bash
vim /usr/local/kafka_2.12-3.9.1/config/kraft/kafka_client_jaas.properties
写入内容如下:
bash
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
创建 topic
bash
/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
启动客户端生产者
bash
/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
启动客户端消费者
bash
/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 列表
bash
/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