Kafka基于docker-compose单结点部署SASL_PLAINTEXT

打印 上一主题 下一主题

主题 547|帖子 547|积分 1641

Kafka基于docker-compose单结点部署SASL_PLAINTEXT

配景

Kafka是一个分布式流处理惩罚平台,由LinkedIn开发并开源,如今在多个行业中都有广泛的应用。以下是Kafka的当前用途以及行业应用的详细描述:
**Kafka的用途**:
1. **消息队列**:Kafka最常见的用途之一是作为高性能的消息队列,用于解耦应用程序的各个部门之间的通信。通过将消息发送到Kafka主题,不同的应用程序可以异步地交换数据,并且可以根据必要调解消费速率和处理惩罚能力。这种解耦方式使得体系更加灵活,易于扩展和维护。
2. **日志收集和分析**:Kafka也被广泛用于收集和存储大规模体系产生的日志数据。生产者将日志消息发送到Kafka主题,然后可以使用消费者实时消费和分析这些日志数据,进行监控、报警、分析和故障排查等操作。
3. **变乱驱动架构**:Kafka提供了一种可靠的变乱流平台,用于构建变乱驱动架构(EDA)。通过将变乱发送到Kafka主题,并使用流处理惩罚工具(如Kafka Streams),可以实现变乱的实时处理惩罚和响应。
4. **实时数据处理惩罚**:Kafka可以构建实时数据处理惩罚体系,接收并传输大量实时数据,与多种流处理惩罚框架如Apache Storm、Apache Flink结合,实现高吞吐量和低延迟处理惩罚。

**Kafka的行业应用**:
1. **金融行业**:Kafka在金融行业中的应用非常广泛,特别是在处理惩罚实时交易数据、风控分析以及市场数据分发等方面。金融机构可以利用Kafka实现高效的数据传输和实时分析,从而快速响应市场变革并做出决议。
2. **电商行业**:在电商领域,Kafka被用于处理惩罚订单数据、用户行为数据以及商品推荐等场景。通过实时收集和分析这些数据,电商企业可以优化用户体验、提升转化率并实现精准营销。
3. **物联网行业**:随着物联网设备的普及,Kafka在物联网领域的应用也日益增多。它可以接收并处理惩罚各种传感器数据,如温度、湿度和气压等,实现数据的实时分析和监控。
4. **日志管理**:Kafka支持集中式日志收集,将生成的各类日志数据集中存储,以便后续进行实时或离线的分析。通过将数据发送到主题,可实现高效的处理惩罚。
5. **数据备份与复制**:Kafka提供数据备份与复制的机制,能将数据复制到多个Kafka集群,确保高可用性和容错性,尤其适用于必要数据可靠性和持久性的应用如分布式数据库和文件体系。

SASL PLAINTEXT是一种认证机制,用于Kafka集群中保护数据传输的安全性。它基于SASL(Simple Authentication and Security Layer)框架,使用明文暗码进行身份验证。尽管在传输过程中,SASL协议会对数据进行加密,但由于客户端发送的用户名和暗码是未加密的,因此,SASL PLAINTEXT被以为是一种不太安全的认证方式。然而,它仍然被广泛采用,尤其在测试情况中,或对于设置和运维本钱要求较小的小型公司中的Kafka集群。
SASL是一种用来扩充C/S验证模式的认证机制,它规范了Client和Server之间的应答过程以及传输内容的编码方法。SASL验证架构决定了服务器如何存储客户端身份证书以及如何核验客户端提供的暗码。一旦客户端通过验证,服务器端就能确定用户的身份,并据此决定用户具有的权限。
在Kafka中,SASL PLAINTEXT认证通常与SSL加密搭配使用,以提高安全性。在使用SASL PLAINTEXT认证时,必要对Kafka服务器和客户端进行相应的设置。比方,在Kafka服务器的设置文件中,必要设置监听所在、协议类型以及认证机制等参数。而在Kafka客户端上,则必要设置认证信息,如用户名和暗码等。
请留意,尽管SASL PLAINTEXT在某些场景下可能适用,但在对安全性要求较高的生产情况中,发起使用更为安全的认证方式,如SASL/GSSAPI(Kerberos)或SASL/SCRAM等。这些认证方式提供了更强的暗码加密和动态更新机制,能够更好地保护Kafka集群中的数据安全。
方案

暗码生成器
https://www.avast.com/zh-cn/random-password-generator
两个关键焦点设置文件
server_jaas.conf
Client {
     org.apache.zookeeper.server.auth.DigestLoginModule required
     username = "admin"
     password = "RvB9SuYrJMPR";
};
Server {
     org.apache.zookeeper.server.auth.DigestLoginModule required
     username = "admin"
     password = "RvB9SuYrJMPR"
     user_super = "RvB9SuYrJMPR"
     user_admin = "RvB9SuYrJMPR";
};
KafkaServer {
     org.apache.kafka.common.security.plain.PlainLoginModule required
     username = "admin"
     password = "RvB9SuYrJMPR"
     user_admin = "RvB9SuYrJMPR";
};
KafkaClient {
     org.apache.kafka.common.security.plain.PlainLoginModule required
     username = "admin"
     password = "RvB9SuYrJMPR";
};



zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper-3.4.13/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
#
http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1

## 开启SASl关键设置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true



对以下字符串base64加密,https://www.base64decode.org/ 实现简单encode
sasl.mechanism: PLAIN
       security.protocol: SASL_PLAINTEXT
       sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username='admin' password='RvB9SuYrJMPR';



kafdrop

**obsidiandynamics/kafdrop是一个Kafka开源可视化工具**,它提供了Web UI界面,用于查看Kafka主题和浏览消费者组。通过这个工具,用户可以显示代理、主题、分区、消费者等信息,并且可以预览topic消息。Kafdrop支持Windows平台情况,并且险些不必要设置,只需通过简单的命令即可运行。在Docker情况下,用户可以搜索并拉取obsidiandynamics/kafdrop镜像,然后通过一系列设置命令启动Kafdrop服务。启动后,用户可以通过访问指定的Web页面来查看和管理Kafka的相关信息。
因此,obsidiandynamics/kafdrop的主要作用是为用户提供一个直观、便捷的方式来查看和管理Kafka集群的状态和数据,从而方便用户对Kafka进行监控和维护。


最后我们的docker-compose.yaml文件是如许的:
version: '3.8'
services:
   zookeeper:
     image: wurstmeister/zookeeper
     volumes:
        - ./data/zookeeper:/data
        - ./config:/opt/zookeeper-3.4.13/conf
        - ./config:/opt/zookeeper-3.4.13/secrets
     container_name: zookeeper
     environment:
       ZOOKEEPER_CLIENT_PORT: 2181
       ZOOKEEPER_TICK_TIME: 2000
       SERVER_JVMFLAGS: -Djava.security.auth.login.config=/opt/zookeeper-3.4.13/secrets/server_jaas.conf
     ports:
       - 2181:2181
     restart: always
   kafka:
     image: wurstmeister/kafka
     container_name: kafka
     depends_on:
       - zookeeper
     ports:
       - 9092:9092
     volumes:
       - ./data/kafka:/kafka
       - ./config:/opt/kafka/secrets
     environment:
       KAFKA_BROKER_ID: 0
       KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
       KAFKA_LISTENERS: INTERNAL://:9093,EXTERNAL://:9092
       KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL://172.18.0.155:9092
       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
       ALLOW_PLAINTEXT_LISTENER: 'yes'
       KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
       KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
       KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
       KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
       KAFKA_OPTS: -Djava.security.auth.login.config=/opt/kafka/secrets/server_jaas.conf
     restart: always
  ##  kafdrop 监控kafka的Ui工具
   kafdrop:
     image: obsidiandynamics/kafdrop
     restart: always
     ports:
        - "19001:9000"
     environment:
        KAFKA_BROKERCONNECT: "kafka:9093"
     ## 如kafka开启了sasl认证后以下 sasl认证链接是必要的,下面的事经过base64加密后的效果
        KAFKA_PROPERTIES: c2FzbC5tZWNoYW5pc206IFBMQUlOCiAgICAgIHNlY3VyaXR5LnByb3RvY29sOiBTQVNMX1BMQUlOVEVYVAogICAgICBzYXNsLmphYXMuY29uZmlnOiBvcmcuYXBhY2hlLmthZmthLmNvbW1vbi5zZWN1cml0eS5zY3JhbS5TY3JhbUxvZ2luTW9kdWxlIHJlcXVpcmVkIHVzZXJuYW1lPSdhZG1pbicgcGFzc3dvcmQ9J1J2QjlTdVlySk1QUic7
     depends_on:
       - zookeeper
       - kafka
     cpus: '1'
     mem_limit: 1024m
     container_name: kafdrop



源代码

https://github.com/megadotnet/Kafka-docker-compose/tree/main/Kafka-Docker-Compose-SASL_PLAINTEXT


参考

https://docs.confluent.io/platform/current/kafka/authentication_sasl/authentication_sasl_plain.html
https://github.com/obsidiandynamics/kafdrop


本日先到这儿,希望对云原生,技术领导力, 企业管理,体系架构计划与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化情况下体系架构演化
微服务架构计划
视频直播平台的体系架构演化
微服务与Docker先容
Docker与CI连续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息体系架构计划演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理先容
软件项目乐成之要素
人际沟通风格先容一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目的与个人目的
初创公司人才招聘与管理
人才公司情况与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通筹划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构计划思路
IT底子架构规划方案一(网络体系规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实行流程
餐饮行业解决方案之业务计划流程
供应链需求调研CheckList
企业应用之性能实时度量体系演变
Openshift与Kubernetes的区别
如有想了解更多软件计划与架构, 体系IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须生存此段声明,且在文章页面明显位置给出原文连接,否则生存追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表