可以在kafka的config
目录下新建一个kafka_server_jaas.conf
文件,然后认证信息写好:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
serviceName=“kafka”
username=“admin”
password=“eystar8888”
user_kafka=“kafka1234”;
};
上面的配置中声明了管理员为admin
,密码是eystar8888
,并且声明了一个用户名为kafka
,密码是kafka1234
的用户,客户端连接时使用用户为kafka
可以成功进行认证。
而需要注意的是:上面的配置中的分号;
,不能少,否则就掉坑里了。
配置kafka服务的启动脚本
上面设置好sasl认证的配置后,我们需要在kafka启动的服务脚本中,将此配置加入进去。
可以直接修改bin/kafka-server-start.sh
,亦或者拷贝一份kafka-server-start.sh
命名为kafka-server-start-saal.sh
(名称自定义即可)
export KAFKA_OPTS=“-Djava.security.auth.login.config=/wlh/kafka01/config/kafka_server_jaas.conf”
kafka02和kafka03同样这样配置好
export KAFKA_OPTS=“-Djava.security.auth.login.config=/wlh/kafka02/config/kafka_server_jaas.conf”
export KAFKA_OPTS=“-Djava.security.auth.login.config=/wlh/kafka03/config/kafka_server_jaas.conf”
开始执行启动kafka集群
生成一个uuid,后面需要用
/wlh/kafka01/bin/kafka-storage.sh random-uuid
格式化存储
/wlh/kafka01/bin/kafka-storage.sh format -t xtzWWN4bTjitpL3kfd9s5g -c /wlh/kafka01/config/kraft/server.properties
/wlh/kafka02/bin/kafka-storage.sh format -t xtzWWN4bTjitpL3kfd9s5g -c /wlh/kafka02/config/kraft/server.properties
/wlh/kafka03/bin/kafka-storage.sh format -t xtzWWN4bTjitpL3kfd9s5g -c /wlh/kafka03/config/kraft/server.properties
开始启动kafka(-daemon后台启动)
分别启动它们
/wlh/kafka01/bin/kafka-server-start-saal.sh -daemon /wlh/kafka01/config/kraft/server.properties
/wlh/kafka02/bin/kafka-server-start-saal.sh -daemon /wlh/kafka02/config/kraft/server.properties
/wlh/kafka03/bin/kafka-server-start-saal.sh -daemon /wlh/kafka03/config/kraft/server.properties
服务启动完成。。。
Tip:服务器端口要打开,服务器端口要打开,端口打开!!!或者关了防火墙也行。
使用java进行连接
无论是使用kafka的API还是直接使用spring集成kafka都是可以的。
我这里就采用kafka的API方式了。
导入kafka-clients
依赖
在application.properties
中配置相关属性,注意spring.kafka.jaas-config
是结尾是有一个分号;
的,若不写,是连接不到kafka的。
spring.kafka.bootstrap-servers=192.168.8.122:19092,192.168.8.122:29092,192.168.8.122:39092
spring.kafka.jaas-config=org.apache.kafka.common.security.plain.PlainLoginModule required username=“kafka” password=“kafka1234”;
spring.kafka.topics=test
在java配置类中进行接收并且创建生产者和消费者
package xxx.xxx.xxx;
import org.apache.kafka.common.config.SaslConfigs;
import org.apache.kafka.common.security.auth.SecurityProtocol;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
impor