分布式消息队列kafka【一】------ 环境搭建及基本配置参数讲解
文章目录
- [分布式消息队列kafka【一】------ 环境搭建及基本配置参数讲解](#分布式消息队列kafka【一】—— 环境搭建及基本配置参数讲解)
相关组件版本
- kafka版本:kafka_2.12
- 管控台:kafkaManager 2.0.0.2
- 协调服务:zookeeper-3.4.6
- kafka环境验证(控制台操作)
kafka集群环境搭建
准备工作
- 准备zookeeper环境(zookeeper-3.4.6)
- 下载kafka安装包:https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz
- 上传到服务器
开始搭建
shell
## 1.解压kafka包到/usr/local/下
tar -zxvf kafka_2.12-2.1.0.tgz -C /usr/local/
## 2.重命名kafka_2.12
cd /usr/local/
mv kafka_2.12-2.1.0/ kafka_2.12/
## 3.修改kafka配置文件
vim /usr/local/kafka_2.12/config/server.properties
## 修改内容
## The id of the broker. This must be set to a unique integer for each broker.
broker.id=0
## 端口
port=9092
## 主机名
host.name=192.168.218.21
dvertised.host.name=192.168.218.21
## Kafka把所有的消息都保存在磁盘上,而这个参数用来配置Kafka日志文件存放的根目录
log.dirs=/usr/local/kafka_2.12/kafka-logs
## 创建topic时默认分区
num.partitions=5
## zookeeper地址
zookeeper.connect=192.168.218.21:2181,192.168.218.22:2181,192.168.218.23:2181
## 4.创建kafka存储log日志数据的目录
mkdir /usr/local/kafka_2.12/kafka-logs
## 5.到此为止,kafka已经配置成功,执行启动命令,启动kafka
nohup /usr/local/kafka_2.12/bin/kafka-server-start.sh /usr/local/kafka_2.12/config/server.properties &
kafka-manager管控台搭建与脚本测试验证
shell
## 6.安装kafka-manager可视化管控台
## 6.1.解压zip文件
unzip kafka-manager-2.0.0.2.zip -d /usr/local/
## 6.2.修改配置文件
vim /usr/local/kafka-manager-2.0.0.2/conf/application.conf
## 修改内容
kafka-manager.zkhosts="192.168.218.21:2181,192.168.218.22:2181,192.168.218.23:2181"
## 6.3.启动kafka-manager可视化管控台
nohup /usr/local/kafka-manager-2.0.0.2/bin/kafka-manager &
## 6.4.浏览器访问控制台,默认端口号是9000
http://192.168.218.21:9000/
## 6.5.添加cluster集群
## 7.集群验证
## 7.1.通过控制台创建一个topic为"test",2个分区,1个副本
## 7.2.消费发送和接收验证
cd /usr/local/kafka_2.12/bin
## 启动发送消息的脚本
## --broker-list 192.168.218.21 指的是kafka broker的地址列表
## --topic test 指的是把消息发送到test主题
./kafka-console-producer.sh --broker-list 192.168.218.21:9092 --topic test
## 启动接收消息的脚本
./kafka-console-consumer.sh --bootstrap-server 192.168.218.21:9092 --topic test
## 查看topic列表命令
./kafka-topics.sh --zookeeper 192.168.218.21:2181 --list
## 创建topic命令
## --zookeeper 192.168.218.21:2181 zookeeper地址
## --create --topic topic02 创建的topic
## --partitions 2 指定该topic的分区
## --replication-factor 1 副本数
./kafka-topics.sh --zookeeper 192.168.218.21:2181 --create --topic topic02 --partitions 2 --replication-factor 1
## 查看kafka某个消费组的消费进度
./kafka-consumer-groups.sh --bootstrap-server 192.168.218.21:9092 --describe --group group02
Kafka服务端基本配置参数讲解
-
参数文件:$KAFKA_HOME/config/server.properties
-
zookeeper.connect
-
默认值:无
-
必填项
-
该参数指明broker要连接的ZooKeeper集群的服务地址(包含端口号),还可以在端口后面加上一个chroot路径,不指定chroot路径时默认使用ZooKeeper的根路径。这样可以用于多个kafka环境使用同一套zookeeper集群。
-
单节点配置:
hostname:2181 -
多节点配置:
hostname1:2181,hostname2:2181,hostname3:2181 -
多节点配置(添加chroot路径):
hostname1:2181,hostname2:2181,hostname3:2181/kafka
-
-
listeners
- 该参数指明broker监听客户端连接的地址列表,即为客户端要连接的broker的入口地址列表,配合着格式为protocol1://hostname1:port1,protocol2://hostname2:port2,其中protocol代表协议类型,Kafka当前支持的协议类型有PLAINTEXT、SSL、SASL_SSL等,如果未开启安全认证,则使用简单的PLAINTEXT即可。hostname代表主机名,port代表服务端口,此参数的默认值为null。
- 如果不指定主机名,则表示绑定默认网卡,注意有可能会绑定到127.0.0.1,这样无法对外提供服务,所以主机名最好不要为空;
- 如果主机名为0.0.0.0,则表示绑定所有的网卡
-
advertised.listeners
- 作用和listeners类似,默认值也为null
- 主要用于Iaas(Infrastructure as a Service)环境,比如公有云上的机器通常配备有多块网卡,即包含私网网卡和公网网卡,对于这种情况而言,可以设置advertised.listeners参数绑定公网IP供外部客户端使用,而配置listeners参数来绑定私网IP地址供broker间通信使用
-
- 该参数用来指定Kafka集群中broker的唯一标识,默认值为-1。如果没有设置,那么Kafka会自动生成一个
-
log.dir和log.dirs
- Kafka把所有的消息都保存在磁盘上,而这两个参数用来配置Kafka日志文件存放的根目录
- 一般情况下,log.dir用来配置单个目录,而log.dirs用来配置多个根目录(以逗号分隔),但是Kafka没有对此做强制的限制,也就是说,log.dir和log.dirs都可以用来配置单个或多个根目录
- log.dirs的优先级比log.dir高,默认值为/tmp/kafka-logs
-
message.max.bytes
- 该参数用来指定broker所能接收消息的最大值,默认值为1000012(B),约等于1M。
-
num.network.threads
- 处理网络请求的最大线程数,默认是3
-
num.io.threads
- 处理磁盘I/O的最大线程数,默认是8
-
num.partitions
- 每个topic的分区个数,默认是1,更多的partition会产生更多的segment file
-