本节详细介绍 Kafka 运行环境的搭建,为了节省篇幅,本节的内容以 Linux CentOS 作为安装演示的操作系统,其他 Linux 系列的操作系统也可以参考本节的内容。具体的操作系统的信息如下:
[root@node1 ~]# uname -a Linux node1 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [root@node1 ~]# cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m
由第1节中第1张图可知,搭建 Kafka 运行环境还需要涉及 ZooKeeper,Kafka 和 ZooKeeper 都是运行在 JVM 之上的服务,所以还需要安装 JDK。Kafka 从2.0.0版本开始就不再支持 JDK7 及以下版本,本节就以 JDK8 为例来进行演示。
1. JDK的安装与配置
很多学习 Kafka 的读者也都是 JVM 系语言的支持者,如果你的操作系统中已经安装了 JDK8 及以上版本则可以跳过这段内容。
安装 JDK 的第一步就是下载 JDK 1.8的安装包,可以进入 Oracle 官网页面进行下载。示例中选择的安装包是 jdk-8u181-linux-x64.tar.gz,我们这里将其先复制至/opt 目录下,本书所有与安装有关的操作都在这个目录下进行。
其次将/opt 目录下的安装包解压,相关信息如下:
[root@node1 opt]# ll jdk-8u181-linux-x64.tar.gz -rw-r--r-- 1 root root 185646832 Aug 31 14:48 jdk-8u181-linux-x64.tar.gz [root@node1 opt]# tar zxvf jdk-8u181-linux-x64.tar.gz # 解压之后当前/opt目录下生成一个名为jdk1.8.0_181的文件夹 [root@node1 opt]# cd jdk1.8.0_181/ [root@node1 jdk1.8.0_181]# pwd /opt/jdk1.8.0_181 # 上面这个就是当前JDK8的安装目录
然后配置 JDK 的环境变量。修改/etc/profile 文件并向其中添加如下配置:
export JAVA_HOME=/opt/jdk1.8.0_181 export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=./://$JAVA_HOME/lib:$JRE_HOME/lib
再执行 source /etc/profile 命令使配置生效,最后可以通过 java –version命令验证 JDK 是否已经安装配置成功。如果安装配置成功,则会正确显示出 JDK 的版本信息,参考如下:
[root@node1 ~]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
2. ZooKeeper安装与配置
ZooKeeper 是安装 Kafka 集群的必要组件,Kafka 通过 ZooKeeper 来实施对元数据信息的管理,包括集群、broker、主题、分区等内容。
ZooKeeper 是一个开源的分布式协调服务,是 Google Chubby的一个开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护等功能。
在 ZooKeeper 中共有3个角色:leader、follower 和 observer,同一时刻 ZooKeeper 集群中只会有一个 leader,其他的都是 follower 和 observer。observer 不参与投票,默认情况下 ZooKeeper 中只有 leader 和 follower 两个角色。更多相关知识可以查阅 ZooKeeper 官方网站来获得。
安装 ZooKeeper 的第一步也是下载相应的安装包,安装包可以从官网中获得,示例中使用的安装包是 zookeeper-3.4.12.tar.gz,同样将其复制到/opt 目录下,然后解压缩,参考如下:
[root@node1 opt]# ll zookeeper-3.4.12.tar.gz -rw-r--r-- 1 root root 36667596 Aug 31 15:55 zookeeper-3.4.12.tar.gz [root@node1 opt]# tar zxvf zookeeper-3.4.12.tar.gz # 解压之后当前/opt目录下生成一个名为zookeeper-3.4.12的文件夹 [root@node1 opt]# cd zookeeper-3.4.12 [root@node1 zookeeper-3.4.12]# pwd /opt/zookeeper-3.4.12
第二步,向/etc/profile 配置文件中添加如下内容,并执行 source /etc/profile 命令使配置生效:
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.12 export PATH=$PATH:$ZOOKEEPER_HOME/bin
第三步,修改 ZooKeeper 的配置文件。首先进入$ZOOKEEPER_HOME/conf目录,并将zoo_sample.cfg 文件修改为 zoo.cfg:
[root@node1 zookeeper-3.4.12]# cd conf [root@node1 conf]# cp zoo_sample.cfg zoo.cfg
然后修改 zoo.cfg 配置文件,zoo.cfg 文件的内容参考如下:
# ZooKeeper服务器心跳时间,单位为ms tickTime=2000 # 允许follower连接并同步到leader的初始化连接时间,以tickTime的倍数来表示 initLimit=10 # leader与follower心跳检测最大容忍时间,响应超过syncLimit*tickTime,leader认为 # follower“死掉”,从服务器列表中删除follower syncLimit=5 # 数据目录 dataDir=/tmp/zookeeper/data # 日志目录 dataLogDir=/tmp/zookeeper/log # ZooKeeper对外服务端口 clientPort=2181
默认情况下,Linux 系统中没有/tmp/zookeeper/data 和/tmp/zookeeper/log 这两个目录,所以接下来还要创建这两个目录:
[root@node1 conf]# mkdir -p /tmp/zookeeper/data [root@node1 conf]# mkdir -p /tmp/zookeeper/log
第四步,在${dataDir}目录(也就是/tmp/zookeeper/data)下创建一个 myid 文件,并写入一个数值,比如0。myid 文件里存放的是服务器的编号。
第五步,启动 Zookeeper 服务,详情如下:
[root@node1 conf]# zkServer.sh start JMX enabled by default Using config: /opt/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
可以通过 zkServer.sh status 命令查看 Zookeeper 服务状态,示例如下:
[root@node1 ]# zkServer.sh status JMX enabled by default Using config: /opt/zookeeper-3.4.12/bin/../conf/zoo.cfg Mode: Standalone
以上是关于 ZooKeeper 单机模式的安装与配置,一般在生产环境中使用的都是集群模式,集群模式的配置也比较简单,相比单机模式而言只需要修改一些配置即可。下面以3台机器为例来配置一个 ZooKeeper 集群。首先在这3台机器的 /etc/hosts 文件中添加3台集群的IP地址与机器域名的映射,示例如下(3个IP地址分别对应3台机器):
192.168.0.2 node1 192.168.0.3 node2 192.168.0.4 node3
然后在这3台机器的 zoo.cfg 文件中添加以下配置:
server.0=192.168.0.2:2888:3888 server.1=192.168.0.3:2888:3888 server.2=192.168.0.4:2888:3888
为了便于讲解上面的配置,这里抽象出一个公式,即 server.A=B:C:D。其中A是一个数字,代表服务器的编号,就是前面所说的 myid 文件里面的值。集群中每台服务器的编号都必须唯一,所以要保证每台服务器中的 myid 文件中的值不同。B代表服务器的IP地址。C表示服务器与集群中的 leader 服务器交换信息的端口。D表示选举时服务器相互通信的端口。如此,集群模式的配置就告一段落,可以在这3台机器上各自执行 zkServer.sh start 命令来启动服务。
3. Kafka的安装与配置
在安装完 JDK 和 ZooKeeper 之后,就可以执行 Kafka broker 的安装了,首先也是从官网中下载安装包,示例中选用的安装包是 kafka_2.11-2.0.0.tgz,将其复制至/opt 目录下并进行解压缩,示例如下:
[root@node1 opt]# ll kafka_2.11-2.0.0.tgz -rw-r--r-- 1 root root 55751827 Jul 31 10:45 kafka_2.11-2.0.0.tgz [root@node1 opt]# tar zxvf kafka_2.11-2.0.0.tgz # 解压之后当前/opt目录下生成一个名为kafka_2.11-2.0.0的文件夹 [root@node1 opt]# cd kafka_2.11-2.0.0 [root@node1 kafka_2.11-2.0.0]# # Kafka的根目录$KAFKA_HOME即为/opt/kafka_2.11-2.0.0,可以将Kafka_HOME添加到/etc/profile文件中,具体做法可以参考前面JDK和ZooKeeper的安装示例
接下来需要修改 broker 的配置文件 $KAFKA_HOME/conf/server.properties。主要关注以下几个配置参数即可:
# broker的编号,如果集群中有多个broker,则每个broker的编号需要设置的不同 broker.id=0 # broker对外提供的服务入口地址 listeners=PLAINTEXT://localhost:9092 # 存放消息日志文件的地址 log.dirs=/tmp/kafka-logs # Kafka所需的ZooKeeper集群地址,为了方便演示,我们假设Kafka和ZooKeeper都安装在本机 zookeeper.connect=localhost:2181/kafka
如果是单机模式,那么修改完上述配置参数之后就可以启动服务。如果是集群模式,那么只需要对单机模式的配置文件做相应的修改即可:确保集群中每个 broker 的 broker.id 配置参数的值不一样,以及 listeners 配置参数也需要修改为与 broker 对应的IP地址或域名,之后就可以各自启动服务。注意,在启动 Kafka 服务之前同样需要确保 zookeeper.connect 参数所配置的 ZooKeeper 服务已经正确启动。
启动 Kafka 服务的方式比较简单,在$KAFKA_HOME 目录下执行下面的命令即可:
bin/kafka-server-start.sh config/server.properties
如果要在后台运行 Kafka 服务,那么可以在启动命令中加入 -daemon 参数或&字符,示例如下:
bin/kafka-server-start.sh –daemon config/server.properties # 或者 bin/kafka-server-start.sh config/server.properties &
可以通过 jps 命令查看 Kafka 服务进程是否已经启动,示例如下:
[root@node1 kafka_2.11-2.0.0]# jps -l 23152 sun.tools.jps.Jps 16052 org.apache.zookeeper.server.quorum.QuorumPeerMain 22807 kafka.Kafka # 这个就是Kafka服务端的进程
到此这篇关于Kafka 安装与配置的文章就介绍到这了,更多相关Kafka 安装与配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!