Kafka是目前业界使用最广泛的消息队列。数据流转常见这样的业务场景,客户端把采集到的日志推送给Kafka,业务方可以消费Kafka的数据落地HDFS,用于离线分析,也可以使用Spark或Flink消费Kafka中的数据,用于实时计算。Kafka在数据流转过程中发挥着纽带作用,可用于日志采集和数据处理系统间的解耦。

本文将介绍搭建Kafka集群的详细安装步骤,并根据日常业务遇到的问题,对Linux系统和Kafka节点的配置参数进行调优。

1. 环境说明

组件 版本 说明
Kafka 2.12-2.5.1
Zookeeper 3.5.8 5个节点
JDK 1.8.0_144

服务器配置:

CPU:【2*Intel(R) Xeon(R) Silver 4214 Processor 12 Cores 24 Threads 2.20 GHz】
内存:【8*16G DDR4-2666 ECC 1.2v RDIMM】
机械硬盘:【12*4T 7200转 3.5寸 SATA接口】
网卡:万兆网卡
Linux系统:centos7.6

2.初始化各个节点基础环境

  • 安装jdk1.8
下载jdk1.8.0_144,并解压到/usr/local目录
  • 关闭swap

若不关闭swap,内存频繁与磁盘空间交换,会有增加gc时间的风险。

#临时生效
swapoff -a #永久生效
echo 'swapoff -a' >> /etc/rc.d/rc.local
  • 修改最大文件打开数

Linux默认配置的最大文件打开数为1024,若Kafka的写入和消费方比较多,会很容易超过默认值,导致broker异常关闭。

#临时生效
ulimit -n 102400
#查看open files 个数
ulimit -a | grep 'open files' #永久生效
vim /etc/security/limits.conf
* soft nofile 102400
* hard nofile 102400

3.搭建zk集群

搭建5个节点的zk集群,可保证在最多挂两个zk节点的情况下,zk集群依然可以正常对外提供服务。

zk集群搭建步骤参见上篇博文:zookeeper-3.5.8集群搭建

4. 中转机上配置一份Kafka

下载解压

从官网下载一份kafka_2.12-2.5.1程序压缩包,解压到当前目录。

修改配置

  • 修改bin/kafka-server-start.sh文件

配置日志打印目录、开放JMX端口、依赖的JDK,以及JVM内存。

vim bin/kafka-server-start.sh

export LOG_DIR="/var/log/kafka"
export JMX_PORT="2020"
export JAVA_HOME="/usr/local/jdk1.8.0_144" if [ "x$KAFKA_HE:AP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx6G -Xms6G"
fi
  • 修改bin/kafka-run-class.sh

配置JVM的垃圾回收器G1参数。

vim bin/kafka-run-class.sh

export JAVA_HOME="/usr/local/jdk1.8.0_144"   #其他脚本调用该shell,需要JDK环境

KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
  • 修改config/server.properties文件
vim config/server.properties
broker.id=10*
listeners=PLAINTEXT://host_name:9090 # 在写入量150MB/s,读取量300MB/s的情况下,使用以下两个配置,网络线程和磁盘IO线程平均空闲率大约30%。
num.network.threads=6
num.io.threads=12 log.dirs=/data*/kafka-logs #根据具体情况而定 log.retention.hours=48
zookeeper.connect=zk1.bjehp.com:2181,zk2.bjehp.com:2181,zk3.bjehp.com:2181,zk4.bjehp.com:2181,zk5.bjehp.com:2181/kafka/talos #注意修改zookeeper地址 auto.create.topics.enable=false
default.replication.factor=2 #以下注释为Kafka默认参数,注意zk的连接时间与超时时间由0.8版本的6s提高到现版本的18s.
#offsets.topic.replication.factor=3
#transaction.state.log.replication.factor=3
#transaction.state.log.min.isr=2
#group.initial.rebalance.delay.ms=3000 #zookeeper.connection.timeout.ms=18000
#zookeeper.session.timeout.ms=18000

5. 在各个节点安装并启动Kafka

安装

  • 同步安装包
将中转机的Kafka安装包拷贝到本地/usr/local/目录
  • 根据机器实际情况修改server.properties配置文件
vim /usr/local/kafka_2.12-2.5.1/config/server.properties
broker.id=10* #修改broker id参数
log.dirs=/data*/kafka-logs #根据实际情况修改log目录
listeners=SASL_PLAINTEXT://hostname:9090 #修改hostname

启动并验证

nohup /usr/local/kafka_2.12-2.5.1/bin/kafka-server-start.sh /usr/local/kafka_2.12-2.5.1/config/server.properties > /dev/null 2>&1 &

ps aux | grep kafka
tailf /var/log/kafka/server.log netstat -tnlp | grep 9090
netstat -tnlp | grep 2020

停止

/usr/local/kafka_2.12-2.5.1/bin/kafka-server-stop.sh

6.服务运维

定时清除日志

vim /etc/cron.d/kafka-logclean
# 每天定时清除1天前的kafka日志文件
5 4 * * * root find /var/log/kafka/*.log.* -type f -mtime +1 | xargs rm -f

配置监控报警

  • 配置服务器的磁盘、内存、cpu load报警
  • 配置Kakfa节点端口报警

总结

本文介绍了Kakfa集群的详细搭建步骤,以及Linux系统和Kafka节点的参数调优。近些年随着Kafka版本不断迭代,之前的旧版本的bug(比如0.8版本)也不断被修复,并且不断有新功能涌现,比如流量配额、exactly-once语义等,使得Kafka集群越来越稳定,这将明显降低集群故障。Kafka在很多功能点的实现上有很多巧妙的设计,值得不断地深入学习和探索~~~

Kafka_2.12-2.5.1集群搭建与参数调优的更多相关文章

  1. 每秒处理3百万请求的Web集群搭建-为最佳性能调优 Nginx

    这篇文章是<打造3百万次请求/秒的高性能服务器集群>系列的第2部分,在这个部分中你可以使用任何一种 WEB 服务器,不过我决定使用 Nginx,因其轻量级.高可靠及高性能的优点. 通常来说 ...

  2. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

  3. [spark]-Spark2.x集群搭建与参数详解

    在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的.我们可以了解到每个参数配置的作用是什么.这里将详细介绍Spark集群搭建以及xml参 ...

  4. kafka_2.11-0.10.1.1集群搭建安装配置

    在搭建kafka集群之前,请保证zookeeper已安装. 1.下载 官网下载链接:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.1.1/ ...

  5. PB级大规模Elasticsearch集群运维与调优实践

    导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与 ...

  6. PB级大规模Elasticsearch集群运维与调优实践【>>戳文章免费体验Elasticsearch服务30天】

    [活动]Elasticsearch Service免费体验馆>> Elasticsearch Service自建迁移特惠政策>>Elasticsearch Service新用户 ...

  7. [hadoop] 集群启动和内存调优

    1.启动Hadoop集群 #首先查看下zoo.cfg里面配置的server.id和集群主机的id是否一致 #如果不一致会造成yarn控制不了从节点的启动 cat /home/hadoop/zookee ...

  8. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  9. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

随机推荐

  1. 剑指Offer(三):从尾到头打印链表

    一.前言 刷题平台:牛客网 二.题目 输入一个链表,返回一个反序的链表. 1.思路 通常,这种情况下,我们不希望修改原链表的结构.返回一个反序的链表,这就是经典的"后进先出",我们 ...

  2. P2034 选择数字 / P2627 [USACO11OPEN]Mowing the Lawn G

    Link 题目描述 给定一行 \(n\) 个非负整数 \(a[1]..a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入 ...

  3. 手把手教你AspNetCore WebApi:认证与授权

    前言 这几天小明又有烦恼了,之前给小红的接口没有做认证授权,直接裸奔在线上,被马老板发现后狠狠的骂了一顿,赶紧让小明把授权加上.赶紧Baidu一下,发现大家都在用JWT认证授权,这个倒是挺适合自己的. ...

  4. Varnish 不重启使之配置生效的方法

    Varnish 在内存模式下比较高效,不过它有一个缺点就是 缓存是放在内存里的,一旦重启, 缓存文件也就没了. 往往由于需要调整 vcl 配置文件,但是又不想重启varnish服务,就让配置文件生效的 ...

  5. 多测师浅谈 学员实现价值就是我们的幸福_高级讲师肖sir

    学员实现价值就是我们的幸福 作为一名资深的IT高级讲师,在传统的行业IT薪资基本都是过万,作为一名IT培训教师,培养出在不同领域的测试,并且接触各种各样的产品,目前市场流行的比如银行业务系统,语音类系 ...

  6. MeteoInfoLab脚本示例:数据投影-FLEXPART

    FLEXPART是一个类似HYSPLIT的扩散模式,它输出的netcdf文件参照了WRF,可惜全局属性没有写全,比如只有一个投影名称(例如Lambert),没有相关的投影参数:中央经度,标准纬度等等. ...

  7. day27 Pyhton 面向对象02 类和对象的命名空间

    一.内容回顾 类:具有相同属性和方法的一类事务 # 描述一类事务轮廓的一个机制 #商品/用户/店铺 对象/实例: 对象(实例)就是类的实例化 # 对象就是类的一个具体的表现 #某一件特定的商品/某个人 ...

  8. IIS日志文件越来越大导致C盘空间变小处理方法

    问题概述 C:\inetpub\logs\LogFiles\W3SVC文件夹越来越大,IIS日志会消耗大量的硬盘空间,有潜在写满整个硬盘空间的风险,为了解决这个问题很多用户会选择关闭日志,但显然IIS ...

  9. centos 开机启动服务 systemctl

    systemctl 实现开机自启服务 转载起一个好听的名字 最后发布于2018-06-26 13:49:06 阅读数 13473  收藏 展开 systemctl是RHEL 7 的服务管理工具中主要的 ...

  10. 第三章 虚拟机的简单使用及其xshell远程工具的使用

    一.虚拟机的快照 1.虚拟机的几种状态: 开机状态 === 运行状态 关机状态 挂起状态 === 虚拟机不关机,但是你使用不了 定身术 快照就是虚拟机的某种状态 === 月光宝盒 2.快照分类: 开机 ...