
kafka、zookeeper配置sasl认证
创建
创建
配置
确保Zookeeper和Kafka已正确配置,并且能够正常通信。 在Kafka配置中,确保 根据实际情况调整IP地址和端口号。
发布日期:2021-05-10 23:13:06
浏览次数:26
分类:精选文章
本文共 4116 字,大约阅读时间需要 13 分钟。
配置Zookeeper和Kafka及使用Golang连接Kafka
1. 配置Zookeeper
配置zoo.cfg
在Zookeeper的配置文件zoo.cfg
中,添加以下内容:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProviderrequireClientAuthScheme=sasljaasLoginRenew=3600000quorum.auth.enableSasl=truequorum.auth.learnerRequireSasl=truequorum.auth.serverRequireSasl=truequorum.auth.learner.loginContext=QuorumLearnerquorum.auth.server.loginContext=QuorumServerquorum.cnxn.threads.size=20
创建zk_server_jaas.conf
在zk_server_jaas.conf
文件中,添加以下内容:
# Server-to-Server authentication configurationServer { org.apache.zookeeper.server.auth.DigestLoginModule required username=admin password=admin user_kafka=admin user_producer=admin}# Quorum Server and Learner authentication configurationQuorumServer { org.apache.zookeeper.server.auth.DigestLoginModule required user_zookeeper="zookeeper@password";}QuorumLearner { org.apache.zookeeper.server.auth.DigestLoginModule required username="zookeeper" password="zookeeper@password";}
启动Zookeeper
在Docker中运行以下命令:
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 \--name zookeeper --restart always \-v /path/to/zookeeper/conf:/opt/zookeeper-3.4.13/conf \-v /data/zookeeper/data:/data \-v /data/zookeeper/datalog:/datalog \-e "TZ=Asia/Shanghai" \-e "SERVER_JVMFLAGS=-Djava.security.auth.login.config=/opt/zookeeper-3.4.13/conf/zk_server_jaas.conf" \wurstmeister/zookeeper
2. 配置Kafka
创建kafka_server_jaas.conf
在kafka_server_jaas.conf
文件中,添加以下内容:
# Kafka Server authentication configurationKafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin" user_admin="admin" user_alice="alice"}# Kafka Client authentication configurationClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin"}
配置server.properties
在server.properties
中,添加以下内容:
KAFKA_OPTS: -Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.confKAFKA_LISTENERS: SASL_PLAINTEXT://yourHostIP:19092KAFKA_ADVERTISED_LISTENERS: SASL_PLAINTEXT://yourHostIP:19092KAFKA_SECURITY_INTER_BROKER_PROTOCOL: SASL_PLAINTEXTKAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAINKAFKA_SASL_ENABLED_MECHANISMS: PLAIN
启动Kafka
使用Docker运行以下命令:
version: '2'services: kafka1: image: wurstmeister/kafka container_name: kafka1 hostname: broker1 network_mode: host environment: - KAFKA_BROKER_ID=1 - KAFKA_ZOOKEEPER_CONNECT=zk0:2181,zk1:2181,zk2:2181 - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 - KAFKA_LISTENERS=SASL_PLAINTEXT://yourHostIP:19092 - KAFKA_ADVERTISED_LISTENERS=SASL_PLAINTEXT://yourHostIP:19092 - KAFKA_SECURITY_INTER_BROKER_PROTOCOL=SASL_PLAINTEXT - KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN - KAFKA_SASL_ENABLED_MECHANISMS=PLAIN - KAFKA_OPTS=-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf - KAFKA_PORT=19092 volumes: - /path/to/kafka/config:/opt/kafka/config - /data/kafka-sasl/logs:/kafka/logs
3. 使用Golang连接Kafka
以下是一个Golang示例,用于连接Kafka:
package mainimport ( "fmt" "github.com/Shopify/sarama" "time")func connKafka(nodes []string) { config := sarama.NewConfig() config.Net.SASL.Enable = true config.Net.SASL.User = "admin" config.Net.SASL.Password = "admin" config.Net.DialTimeout = 2 * time.Second config.Metadata.Retry.Max = 1 now := time.Now() client, err := sarama.NewClient(nodes, config) if err != nil { fmt.Println("connect time: ", time.Since(now).Seconds()) panic(err) } defer client.Close() topics, err := client.Topics() if err != nil { panic(err) } for _, topic := range topics { fmt.Println("topic: ", topic) }}func main() { nodes := []string{ "kafka0:19092", "kafka1:19092", "kafka2:19092", "kafka3:19092", "kafka4:19092", } connKafka(nodes)}
注意事项
log4j.properties
文件已存在于/opt/kafka/config
目录中。通过以上步骤,您可以成功配置并使用Golang连接到Kafka。
发表评论
最新留言
很好
[***.229.124.182]2025年05月07日 21时26分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java Map
2019-03-15
scala Tuple入门到熟悉
2019-03-15
RDD partitioner入门详解
2019-03-15
presto查询报错
2019-03-15
superset报错
2019-03-15
Hive 分组取Top N
2019-03-15
yarn开启Label Scheduler
2019-03-15
Spark sample入门到精通
2019-03-15
C++ Primer Plus【复习笔记】-【复合类型】
2019-03-15
前端一些要会的知识点
2019-03-15
VUE +ElementUI form表单回车提交
2019-03-15
使用Spring AOP应该注意的一个小细节
2019-03-15
学习Swoole之进程队列之间通信
2019-03-15
docker 快速安装bcmath扩展
2019-03-15
2020-08-26
2019-03-15
shell脚本一键删除php7.4.8
2019-03-15
vue 基础之计算属性
2019-03-15
nginx服务器部署Thinkphp 5.1框架报404解决方案
2019-03-15
Tomcat内存溢出解决方案
2019-03-15
上传按钮的设计
2019-03-15