kafka的学习之一_带SASL鉴权的集群安装与启动
kafka的学习之一_带SASL鉴权的集群安装与启动
背景
想开始一段新的里程.
可能会比现在累, 可能会需要更多的学习和努力.
kafka可能就是其中之一.
自己之前总是畏缩不前. 不想面对很多压力.
年龄已经很大了, 必须得向前看继续努力了.
关于kafka
kafka是linked开源的一套高效持久的消息平台.
kafka 是基于弗兰兹·卡夫卡(Franz Kafka) 作者的名字来命令的.
“卡夫卡”在捷克语中是“寒鸦”的意思,希伯来语中是"穴鸟"的意思. 跟中国的鸳鸯有一些相似的习性.
善在某种意义上是绝望的表现 -kafka的名言之一.
kafka是 LinkedIn 于2010年开发的消息系统
现阶段最新版本是 3.5
下载地址为:
https://downloads.apache.org/kafka/3.5.0/kafka_2.13-3.5.0.tgz
关于kafka的结构
kafka 早起版本使用zookeeper 进行元数据管理
他的主要组件有:
1.producer:
消息生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
kafka 集群中包含的服务器。
3.topic:
每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
4.partition:
partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
5.consumer:
从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
partition 的副本,保障 partition 的高可用。
8.leader:
replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:
replica 中的一个角色,从 leader 中复制数据。
10.controller:
kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
12.zookeeper:
kafka 通过 zookeeper 来存储集群的 meta 信息。
需要注意 kafka 在 3.3.1 的版本时使用 kraft 的一致性协议替换了zookeeper协议.
一方面减少部署复杂度, 另一方面也减少与zookeeper的交换提高很多极端场景的新能.
机器基本设置
修改机器名 分别修改为 broker1 到broker5
修改 hosts文件, 将IP地址和机器名进行对应关系设置.
确保有java 可以直接运行, 有环境变量信息.
在机器上面创建 ssh-keygen
然后设置机器可以免密访问
ssh-copy-id
便于机器快速分发和处理
3controller+5broker的搭建过程
安装过程
注意为了简单, 我这边所有的机器都放到了 /root/kafka_2.13-3.5.0/
logs 使用的是 /logs 的目录信息
需要注意, 这次准备采用 SASL_PLAINTEXT 的协议进行处理.
SASL_PLAINTEXT 使用 Simple Authentication and Security Layer(SASL)协议进行身份验证,
并使用PLAINTEXT机制来让Kafka进行网络通讯。
这使得用户名和密码在网络上传输时不再以明文形式传输,因此比PLAINTEXT更加安全。
注意, 这里仅是有了用户名和密码, 其实并不是很安全, 更安全的有 SSL和SASL_SSL,但是加解密的性能损耗较大
设置加密文件:
cat > /root/kafka_2.13-3.5.0/config/kafka_server_jaas.conf <<EOF
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="Testxxxxxxxx"
user_admin="Testxxxxxxxx"
user_comsumer="Testxxxxxxxx"
user_producer="Testxxxxxxxx";
};
EOF
# 增加一个客户端配置文件 客户端才可以连接服务器端
cat > /root/kafka_2.13-3.5.0/config/sasl.conf <<EOF
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="Testxxxxxxxx";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
EOF
然后可以讲这个文件分散到多个服务器上面
for i in {1,2,4,5,6} ;
do scp /root/kafka_2.13-3.5.0/config/kafka_server_jaas.conf \
root@10.110.139.18${i}:/root/kafka_2.13-3.5.0/config/kafka_server_jaas.conf ;
done
for i in {1,2,4,5,6} ;
do scp /root/kafka_2.13-3.5.0/config/sasl.conf \
root@10.110.139.18${i}:/root/kafka_2.13-3.5.0/config/sasl.conf ;
done
修改配置文件: vim /root/kafka_2.13-3.5.0/config/kraft/server.properties
主要修改内容如下:
1. role设置
#3个controller 里面如此设置
process.roles=broker,controller
#5个broker排除3个broker的设置为:
process.roles=broker
2. node.id
#注意需要按照顺序来不能一样
#我这边五个broker, 分别是 1,2,3,4,5了
node.id=1
3. controller quorum
controller.quorum.voters=1@10.110.139.184:9094,2@10.110.139.185:9094,3@10.110.139.186:9094
#这里主要是投票选leader用的.
4. 设置监听
listeners=SASL_PLAINTEXT://10.110.139.184:9093,CONTROLLER://10.110.139.184:9094
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
security.inter.broker.protocol=SASL_PLAINTEXT
advertised.listeners=SASL_PLAINTEXT://10.110.139.184:9093
allow.evervone.if.no.acl.found=true
# 需要注意的 advertised.listeners 的内容必须在 listeners 里面
# 9093 是 broker用的 9094 是 controller用的.
5. log.dirs=/logs
# 需要注意这个路径 建议是根据磁盘来.才能保证性能.
修改启动脚本
vim /root/kafka_2.13-3.5.0/bin/kafka-server-start.sh
注意可以修改一下jvm的设置然后进行启动:
export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G -Djava.security.auth.login.config=/root/kafka_2.13-3.5.0/config/kafka_server_jaas.conf "
初始化logs目录
# 第一步获取uuid
time /root/kafka_2.13-3.5.0/bin/kafka-storage.sh random-uuid
# 注意时间功能机器有关系 可能会比较长一些.
# 第二步进行初始化:
# 注意如果之前设置过需要先清理 rm -rf /logs/ 注意目录跟 server.properties 的设置相关
bin/kafka-storage.sh format -t 7ONT3dn3RWWNCZyIwLrEqg -c config/kraft/server.properties
需要注意 五个broker都需要进行设置.
# 第三步设置 命令
# 比如kafka-topic.sh kafka-cluster.sh kafka-server-start.sh 等文件
# 内部增加配置文件
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_2.13-3.5.0/config/kafka_server_jaas.conf"
启动脚本-第一部分
处理一下时间同步
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "echo "nameserver 10.110.1.58" > /etc/resolv.conf ";
done
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "echo "203.107.6.88 ntp.aliyun.com" >>/etc/hosts ";
done
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "ntpdate ntp.aliyun.com ";
done
关闭和启动脚本分别为:
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "cd /root/kafka_2.13-3.5.0 && bin/kafka-server-stop.sh config/kraft/server.properties ";
done
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "cd /root/kafka_2.13-3.5.0 && bin/kafka-server-start.sh -daemon config/kraft/server.properties ";
done
重新初始化-第二部分
# 关闭
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "cd /root/kafka_2.13-3.5.0 && bin/kafka-server-stop.sh config/kraft/server.properties ";
done
# 删除
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "rm -rf /logs/ ";
done
# 初始化
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "cd /root/kafka_2.13-3.5.0 && bin/kafka-storage.sh format -t 7ONT3dn3RWWNCZyIwLrEqg -c config/kraft/server.properties ";
done
# 启动
for i in {1,2,4,5,6} ;
do ssh root@10.110.139.18${i} "cd /root/kafka_2.13-3.5.0 && bin/kafka-server-start.sh -daemon config/kraft/server.properties ";
done
集群查看
# 查看日志
tail -f /root/kafka_2.13-3.5.0/logs/kafkaServer.out
# 带日志启动
cd /root/kafka_2.13-3.5.0 && bin/kafka-server-start.sh config/kraft/server.properties
# 简单查看
cd /root/kafka_2.13-3.5.0
bin/kafka-topics.sh --list --bootstrap-server 10.110.139.184:9093 --command-config config/sasl.conf
查看整个集群
bin/kafka-topics.sh --list --bootstrap-server 10.110.139.181:9093,10.110.139.182:9093,10.110.139.184:9093,10.110.139.185:9093,10.110.139.186:9093 --command-config config/sasl.conf
kafka的学习之一_带SASL鉴权的集群安装与启动的更多相关文章
- kafka分布式消息队列介绍以及集群安装
简介 首先简单说下对kafka的理解: 1.kafka是一个分布式的消息缓存系统: 2.kafka集群中的服务器节点都被称作broker 3.kafka的客户端分为:一是producer(消息生产者) ...
- Kafka集群安装Version1.0.1(自带Zookeeper)
1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...
- kafka集群安装及基本命令行使用
集群安装 环境介绍 本次安装kafka集群利用的是自带的zooKeeper,其实最好是把kafka和zooKeeper部署在不同的节点上,这样更高可用. 三个节点: kafka1:192.168.56 ...
- Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kaf ...
- (Linux环境Kafka集群安装配置及常用命令
Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...
- hadoop学习之hadoop完全分布式集群安装
注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...
- 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装
一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
随机推荐
- 【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
前言: 这段时间一直在做一个第三方平台的对接,对接第三方其实无非就是请求调用第三方的相关接口接收返回过来的相关参数.因此在这个过程中就会涉及大量的JSON响应参数或者请求参数转化为对应的实体类的情况, ...
- 华为IoT首席架构师王启军:全栈工程师“养成记”
在王启军的公众号里,有一篇<My Team>的文章,里面记录了早年他所带团队成长的心得. 这个被他称为完美组合的团队,并不是来自大厂名企,彼时王启军给不起高待遇,团队核心成员中还有很多人是 ...
- 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步
摘要:训练.标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通. 今年的华为,着实遭遇了不小的困难. 尤其是供应链,包括芯片方面的打击,让华为轮 ...
- 连Python都不熟也能跑通AI人脸识别?“隐藏Boss”竟是它!
摘要:先把AI人脸识别跑起来,然后研究它是如何实现的,整个过程中确实收获不少.所谓先跟着做,再跟着学,实践与理论结合,自己感觉有理解了一些基础概念入个门,在此分享一下自己的捣鼓经验. 1.买台小&qu ...
- PanGu-Coder:函数级的代码生成模型
摘要:华为诺亚方舟实验室语音语义实验室联合华为云PaaS技术创新实验室基于PanGu-Alpha研制出了当前业界最新的模型PanGu-Coder 本文分享自华为云社区<PanGu-Coder 函 ...
- “互联网+”大赛之AI创新应用赛题攻略:大胆脑洞,共绘智慧生活蓝图
摘要:本次"互联网+"大赛AI创新应用赛题的设置是希望学生可以从日常实际应用需求出发,结合自己的奇思妙想,提升智能终端用户的使用体验,为构建万物互联的智能世界贡献一份力量. 本文分 ...
- 训练千亿参数模型的法宝,昇腾CANN异构计算架构来了~
摘要:盘古的训练以「昇腾AI处理器」为基座,同时借助了「CANN 异构计算架构」,让硬件算力得以充分释放,大大缩短了训练时间! 2021年4月,"华为云盘古大模型"一炮走红AI人工 ...
- Redisson:这么强大的实现分布式锁框架,你还没有?
摘要:Redisson框架十分强大,基于Redisson框架可以实现几乎你能想到的所有类型的分布式锁. 本文分享自华为云社区<[高并发]你知道吗?大家都在使用Redisson实现分布式锁了!!& ...
- Windows 2016 安装 Docker
打开 PowerShell Windows PowerShell 版权所有 (C) 2016 Microsoft Corporation.保留所有权利. PS C:\Users\Administrat ...
- 【flask】flask-sqlalchemy使用 flask-migrate使用 flask项目演示
目录 昨日回顾 今日内容 1 flask-sqlalchemy使用 2 flask-migrate使用 3 flask项目演示 昨日回顾 类装饰器可能有两种含义: 使用类作为装饰器 装饰类的装饰器 基 ...