背景
我们需要与第三方系统进行数据同步,需要搭建公网Kafka,Kafka默认是没有用户密码校验的,所以我们需要配置用户名密码校验。
配置
新增JAAS配置文件
在conf目录下新增kafka_server_jaas.conf文件,文件内容如下:
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredserviceName="kafka"username="admin"password="admin-secret"user_admin="admin-secret"user_alice="alice-secret";
};
修改kafka-server-start.sh脚本
-Djava.security.auth.login.config=<jaas配置文件的路径>
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/home/ubuntu/kafka_2.11-2.1.1/config/kafka_server_jaas.conf"
修改config/server.properties
这里配置了内网使用 PLAINTEXT 协议,外网使用 SASL_PLAINTEXT 协议
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SASL_PLAINTEXTlisteners=INTERNAL://10.0.12.3:9092,EXTERNAL://10.0.12.3:19092
advertised.listeners=INTERNAL://10.0.12.3:9092,EXTERNAL://xx.xx.xx.xxx:19092
inter.broker.listener.name=INTERNAL
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
请将xx.xx.xx.xxx替换为你的公网IP
测试连接
用kafka tool测试连接,下载地址:https://www.kafkatool.com/
- 配置Zookeeper地址
- 配置Security
- 配置Bootstrap
- 配置用户名密码
此处的用户名密码需要和jaas的配置一致。
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret" ;
至此,配置完成。