Kafka部署过程记录

2018-10-30  本文已影响0人  海涛_meteor

0-前言

Kafka是一种高吞吐量的分布式消息发布订阅系统,由Scala语言编写,其分布式特性基于Zookeeper实现。需要指出的是Kafka虽然也是类似于消息队列发布订阅的使用模式,但其并不完全遵循JMS协议。

1-集群原理

结构.png

上图展示了Kafka中各个元素及互相之间的关联关系,下面就几个重点部分进行说明:

  1. NonExistentPartition -- 表示该分区要么没有被创建过或曾经被创建过但后面被删除了
  2. NewPartition -- 分区创建之后就处于NewPartition状态。在这个状态中,分区已经分配了副本,但是还没有选举出leader和ISR
  3. OnlinePartition -- 一旦分区的leader被推选出来,它就处于OnlinePartition状态
  4. OfflinePartition -- 如果leader选举出来后,leader宕机了,那么该分区就处于OfflinePartition状态

2-集群搭建

Kafka部署需要准备以下环境:

  1. java环境
  2. Gradle环境
  3. Zookeeper
    操作系统为Centos6.9,java采用jdk1.8,Zookeeper版本3.6.4,由于这些都是已安装的所以在此不做安装说明,只说一下Gradle的安装
2.1-Gradle安装

我安装的是4.10.2版本,首先对安装包进行解压

unzip -d /opt/gradle gradle-4.10.2-bin.zip

打开/etc/profile配置环境变量path

export PATH=$PATH:/opt/gradle/gradle-4.10.2/bin

通过以下命令检查是否配置成功

gradle -v

看到如下信息说明已成功

------------------------------------------------------------
Gradle 4.10.2
------------------------------------------------------------

Build time:   2018-09-19 18:10:15 UTC
Revision:     b4d8d5d170bb4ba516e88d7fe5647e2323d791dd

Kotlin DSL:   1.0-rc-6
Kotlin:       1.2.61
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_181 (Oracle Corporation 25.181-b13)
OS:           Linux 2.6.32-696.13.2.el6.x86_64 amd64
2.2-Kafka安装

Kafka集群使用了三台服务器,每台上单独部署一个Kafka节点,Kafka版本2.0.0
首先进行解压

tar -xzf kafka_2.11-2.0.0.tgz

进入Kafka目录

cd kafka_2.11-2.0.0

修改配置文件

vi config/server.properties

其中有几个重要参数如下

broker.id=0
advertised.listeners=PLAINTEXT://ip:9092
zookeeper.connect=ip1:2181,ip2:2181,ip3:2181
log.dirs=/tmp/kafka-logs
log.retention.hours=168
num.partitions=3

broker.id可以随便设置,但必须保证同一集群下的节点不重复;zookeeper.connect是zookeeper的地址,需要按实际填写;advertised.listeners是对外展示的地址和端口(端口默认使用9092),在后面配置管理页面的时候有用;log.dirslog.retention.hours表示日志的存放路径和保存时间;num.partitions是Topic下默认分配的Partition数量。
接着修改一下Kafka的启动配置

vi bin/kafka-server-start.sh

文件中增加下述内容

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    export JMX_PORT="9999"
fi

这里设置了堆的大小以及JMX监控端口,方便后续使用监控页面。

bin/kafka-server-start.sh -daemon config/server.properties

以上设置都完成后启动Kafka

2.3-监控页面安装

Kafka官方没有提供可视化的监控页面,但有不少第三方的开源产品可供选择,比较主流的有以下三款

最终我选择的是yahoo开源的Kafka Manager,项目地址https://github.com/yahoo/kafka-manager
首先下载源码包kafka-manager-1.3.3.18.tar.gz,这里安装的是最新的1.3.3.18版

tar -zxf kafka-manager-1.3.3.18.tar.gz
cd kafka-manager-1.3.3.18
./sbt clean dist

依次执行上述三条命令,解压并进入目录,生成安装包。Kafka-manager使用了Play框架,如果之前从来没有用过Play框架,下载依赖的jar包会花费较长的时间(真的不是一般的久,我花了2个小时。。。),想要加快这个过程可以将源配置为aliyun的私服。
操作如下,通过cd ~进入当前用户目录,然后通过命令mkdir .sbt创建.sbt目录,进入创建的该目录,使用vi创建repositories文件,编辑内容如下:

[repositories]
local
aliyun: http://maven.aliyun.com/nexus/content/groups/public
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly

待命令执行完成后,在target/universal 目录中会生成一个zip压缩包kafka-manager-1.3.3.18.zip
解压并进入该压缩包

unzip kafka-manager-1.3.3.18.zip
cd kafka-manager-1.3.3.18

修改配置信息

vi conf/application.conf

修改配置文件中的zookeeper相关配置项kafka-manager.zkhosts,修改完成后通过下述命令启动工程

bin/kafka-manager 

启动默认使用9000端口,若要指定其它端口也可以通过以下命令启动

bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=9000

接着便可以通过http://ip:9000地址访问

Kafka manager.png

3-总结

本文介绍了Kafka的集群原理,记录了Kafka集群的部署过程,以及可视化监控页面kafka manager的安装过程。

上一篇 下一篇

猜你喜欢

热点阅读