Kafka环境搭建
搭建kafka运行环境需要涉及到zookeeper,zookeeper与Kafka都是运行在JVM环境下的,因此还需要提前准备Jdk环境,在kafka 2.0.0版本开始,不再支持Jdk1.7及以下版本,本次安装就准备Jdk 1.8的环境。
配置服务器环境
本次安装kafka集群,准备了三台服务器。在安装kafka相关组件前,需要对服务器进行简单配置
- 环境信息
[root@node1 bin]# uname -a
Linux node1 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@node1 bin]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@node1 bin]#
- 修改主机名称
每台服务配置主机名称,不相同:node1、node3、node2
[root@node1 bin]# hostnamectl set-hostname node1
[root@node1 bin]#
- vim /etc/hosts修改机器域名映射
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.124.145 node1
172.16.124.146 node2
172.16.124.147 node3
准备JDK环境 (以下操作需在node1、node2、node3上执行)
- Oracle官网下载Jdk安装包
Oracle 官网Jdk下载地址 - 将下载好的Jdk上传至/home目录,解压安装
[root@node1 home]# tar -zxvf jdk-8u111-linux-x64.tar.gz
[root@node1 home]# ll
总用量 177616
drwx------ 2 bitsflow bitsflow 62 1月 13 18:27 bitsflow
drwxr-xr-x 4 root root 27 9月 18 18:34 files
drwxr-xr-x 8 10 143 255 9月 23 2016 jdk1.8.0_111
-rw-r--r-- 1 root root 181442359 2月 28 11:38 jdk-8u111-linux-x64.tar.gz
-rw-r--r-- 1 root root 432020 8月 11 2017 pcre-8.32-17.el7.x86_64.rpm
drwxr-xr-x 3 root root 22 9月 18 18:37 yoyo
- 配置JDK环境变量
root权限下,键入命令 vim /etc/profile 修改配置文件,添加如下配置:
export JAVA_HOME=/home/jdk1.8.0_111
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
- 检验Jdk环境是否安装完成
[root@node1 jdk1.8.0_111]# source /etc/profile
[root@node1 jdk1.8.0_111]# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
[root@node1 jdk1.8.0_111]#
准备ZooKeeper环境 (以下操作需在node1、node2、node3上执行)
ZooKeeper是安装Kafka必须组件。Kafka 通过 ZooKeeper 来实现对元数据信息的管理,包括集群、broker、主题、分区等内容。
- 下载ZooKeeper安装包
[root@node1 home]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
--2020-02-28 13:27:40-- https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
正在解析主机 archive.apache.org (archive.apache.org)... 163.172.17.199
正在连接 archive.apache.org (archive.apache.org)|163.172.17.199|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:36667596 (35M) [application/x-gzip]
正在保存至: “zookeeper-3.4.12.tar.gz.1”
100%[======================================================================================================================================================================>] 36,667,596 7.93KB/s 用时 73m 0s
2020-02-28 14:40:43 (8.18 KB/s) - 已保存 “zookeeper-3.4.12.tar.gz.1” [36667596/36667596])
[root@node1 home]#
- 解压安装ZooKeeper
[root@node1 home]# tar -zxvf zookeeper-3.4.12.tar.gz
[root@node1 home]# cd zookeeper-3.4.12
[root@node1 zookeeper-3.4.12]# ll
总用量 1600
drwxr-xr-x 2 root root 149 3月 27 2018 bin
-rw-rw-r-- 1 root root 87945 3月 27 2018 build.xml
drwxr-xr-x 2 root root 77 3月 27 2018 conf
drwxr-xr-x 10 root root 130 3月 27 2018 contrib
drwxr-xr-x 2 root root 4096 3月 27 2018 dist-maven
drwxr-xr-x 6 root root 4096 3月 27 2018 docs
-rw-rw-r-- 1 root root 1709 3月 27 2018 ivysettings.xml
-rw-rw-r-- 1 root root 8197 3月 27 2018 ivy.xml
drwxr-xr-x 4 root root 308 3月 27 2018 lib
-rw-rw-r-- 1 root root 11938 3月 27 2018 LICENSE.txt
-rw-rw-r-- 1 root root 3132 3月 27 2018 NOTICE.txt
-rw-rw-r-- 1 root root 1585 3月 27 2018 README.md
-rw-rw-r-- 1 root root 1770 3月 27 2018 README_packaging.txt
drwxr-xr-x 5 root root 47 3月 27 2018 recipes
drwxr-xr-x 8 root root 211 3月 27 2018 src
-rw-rw-r-- 1 root root 1483366 3月 27 2018 zookeeper-3.4.12.jar
-rw-rw-r-- 1 root root 819 3月 27 2018 zookeeper-3.4.12.jar.asc
-rw-rw-r-- 1 root root 33 3月 27 2018 zookeeper-3.4.12.jar.md5
-rw-rw-r-- 1 root root 41 3月 27 2018 zookeeper-3.4.12.jar.sha1
[root@node1 zookeeper-3.4.12]#
- 配置ZooKeeper集群信息
- 配置ZooKeeper环境变量
vim 修改/etc/profile 配置文件,在文件末尾添加如下内容。
export ZOOKEEPER_HOME=/home/zookeeper-3.4.12
export PATH=$PATH:$ZOOKEEPER_HOME/bin
执行 source /etc/profile 命令使配置生效
[root@node1 zookeeper-3.4.12]# source /etc/profile
[root@node1 zookeeper-3.4.12]#
- 创建ZooKeeper用于存放数据目录与log日志目录
[root@node1 zookeeper-3.4.12]# mkdir -p /home/zookeeper-3.4.12/data
[root@node1 zookeeper-3.4.12]# mkdir -p /home/zookeeper-3.4.12/log
[root@node1 zookeeper-3.4.12]# ll
总用量 1600
drwxr-xr-x 2 root root 149 3月 27 2018 bin
-rw-rw-r-- 1 root root 87945 3月 27 2018 build.xml
drwxr-xr-x 2 root root 77 3月 27 2018 conf
drwxr-xr-x 10 root root 130 3月 27 2018 contrib
drwxr-xr-x 2 root root 6 3月 3 00:06 data
drwxr-xr-x 2 root root 4096 3月 27 2018 dist-maven
drwxr-xr-x 6 root root 4096 3月 27 2018 docs
-rw-rw-r-- 1 root root 1709 3月 27 2018 ivysettings.xml
-rw-rw-r-- 1 root root 8197 3月 27 2018 ivy.xml
drwxr-xr-x 4 root root 308 3月 27 2018 lib
-rw-rw-r-- 1 root root 11938 3月 27 2018 LICENSE.txt
drwxr-xr-x 2 root root 6 3月 3 00:06 log
-rw-rw-r-- 1 root root 3132 3月 27 2018 NOTICE.txt
-rw-rw-r-- 1 root root 1585 3月 27 2018 README.md
-rw-rw-r-- 1 root root 1770 3月 27 2018 README_packaging.txt
drwxr-xr-x 5 root root 47 3月 27 2018 recipes
drwxr-xr-x 8 root root 211 3月 27 2018 src
-rw-rw-r-- 1 root root 1483366 3月 27 2018 zookeeper-3.4.12.jar
-rw-rw-r-- 1 root root 819 3月 27 2018 zookeeper-3.4.12.jar.asc
-rw-rw-r-- 1 root root 33 3月 27 2018 zookeeper-3.4.12.jar.md5
-rw-rw-r-- 1 root root 41 3月 27 2018 zookeeper-3.4.12.jar.sha1
[root@node1 zookeeper-3.4.12]#
- 修改ZooKeeper配置文件
[root@node1 zookeeper-3.4.12]# cd conf/
[root@node1 conf]# ll
总用量 12
-rw-rw-r-- 1 root root 535 3月 27 2018 configuration.xsl
-rw-rw-r-- 1 root root 2161 3月 27 2018 log4j.properties
-rw-rw-r-- 1 root root 922 3月 27 2018 zoo_sample.cfg
[root@node1 conf]# cp zoo_sample.cfg zoo.cfg
[root@node1 conf]# ll
总用量 16
-rw-rw-r-- 1 root root 535 3月 27 2018 configuration.xsl
-rw-rw-r-- 1 root root 2161 3月 27 2018 log4j.properties
-rw-r--r-- 1 root root 922 3月 3 00:09 zoo.cfg
-rw-rw-r-- 1 root root 922 3月 27 2018 zoo_sample.cfg
[root@node1 conf]# vim zoo.cfg
配置文件调整内容
#ZooKeeper服务器心跳时间,单位为ms
tickTime=2000
# 投票选举新leader的初始化时间
initLimit=10
#zookeeper里leader和follower检测的最大延迟
syncLimit=5
#数据目录
dataDir=/home/zookeeper-3.4.12/data
#日志目录
dataLogDir=/home/zookeeper-3.4.12/log
#对外提供服务端口号
clientPort=2181
#集群信息配置,每个server号必须唯一,2888: leader 服务器交换信息的端口,3888:集群选举时服务器相互通信的端口
server.0=172.16.124.145:2888:3888
server.1=172.16.124.146:2888:3888
server.2=172.16.124.147:2888:3888
创建myid文件,myid与上面配置文件中的server.0对应起来,例如:在172.16.124.145的服务器上配置myid,myid从zoo.cfg中配置的server.0=172.16.124.145:2888:3888取值为:0,在172.16.124.146的服务器上配置myid,myid从zoo.cfg中配置:server.1=172.16.124.145:2888:3888取值为:1,以此内推并做好对应
[root@node1 zookeeper-3.4.12]# vim data/myid
[root@node1 zookeeper-3.4.12]# cat data/myid
0
[root@node1 zookeeper-3.4.12]#
- ZooKeeper服务操作
- 启动ZooKeeper服务zkServer.sh start
[root@node1 zookeeper-3.4.12]# cd bin/
[root@node1 bin]# pwd
/home/zookeeper-3.4.12/bin
[root@node1 bin]# ll
总用量 36
-rwxr-xr-x 1 root root 232 3月 27 2018 README.txt
-rwxr-xr-x 1 root root 1937 3月 27 2018 zkCleanup.sh
-rwxr-xr-x 1 root root 1056 3月 27 2018 zkCli.cmd
-rwxr-xr-x 1 root root 1534 3月 27 2018 zkCli.sh
-rwxr-xr-x 1 root root 1759 3月 27 2018 zkEnv.cmd
-rwxr-xr-x 1 root root 2696 3月 27 2018 zkEnv.sh
-rwxr-xr-x 1 root root 1089 3月 27 2018 zkServer.cmd
-rwxr-xr-x 1 root root 6773 3月 27 2018 zkServer.sh
[root@node1 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node1 bin]#
- 查看ZooKeeper状态zkServer.sh status
172.16.124.145 node1节点上查看状态
[root@node1 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@node1 bin]#
172.16.124.146 node2节点上查看状态
[root@node2 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
[root@node2 bin]#
172.16.124.146 node2节点上查看状态
[root@node3 bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@node3 bin]#
安装Kafka集群
进入kafka官网,下载安装包,本次准备的是 kafka_2.11-2.4.0
- 解压安装kafka
[root@node1 home]# tar -zxf kafka_2.11-2.4.0.tgz
[root@node1 home]# cd kafka_2.11-2.4.0
[root@node1 kafka_2.11-2.4.0]# ll
总用量 56
drwxr-xr-x 3 root root 4096 12月 10 00:51 bin
drwxr-xr-x 2 root root 4096 12月 10 00:51 config
drwxr-xr-x 2 root root 8192 3月 3 22:00 libs
-rw-r--r-- 1 root root 32216 12月 10 00:46 LICENSE
-rw-r--r-- 1 root root 337 12月 10 00:46 NOTICE
drwxr-xr-x 2 root root 44 12月 10 00:51 site-docs
[root@node1 kafka_2.11-2.4.0]#
- 配置kafka环境变量
- vim 修改/etc/profile 配置文件,在文件末尾添加如下内容
export KAFKA_HOME=/home/kafka_2.11-2.4.0
- 执行 source /etc/profile 命令使配置生效
[root@node1 kafka_2.11-2.4.0]# source /etc/profile
[root@node1 kafka_2.11-2.4.0]#
- 修改kafka配置信息
进入config目录,执行vim server.properties命令,修改配置信息。
#broker编号,集群有多个broker,必须保证每个broker编号集群内唯一
broker.id=0
#broker对外提供服务的地址
listeners=PLAINTEXT://localhost:9092
#存放消息日志的目录
log.dirs=/home/kafka_2.11-2.4.0/kafka-logs
#配置zookeeper集群地址
zookeeper.connect=localhost:2181/kafka
- 启动kafka
使用bin/kafka-server-start.sh config/server.properties &命令,后台启动kafka
[root@node1 kafka_2.11-2.4.0]# ll
总用量 56
drwxr-xr-x 3 root root 4096 12月 10 00:51 bin
drwxr-xr-x 2 root root 4096 3月 3 22:26 config
drwxr-xr-x 2 root root 6 3月 3 22:16 kafka-logs
drwxr-xr-x 2 root root 8192 3月 3 22:00 libs
-rw-r--r-- 1 root root 32216 12月 10 00:46 LICENSE
-rw-r--r-- 1 root root 337 12月 10 00:46 NOTICE
drwxr-xr-x 2 root root 44 12月 10 00:51 site-docs
[root@node1 kafka_2.11-2.4.0]# bin/kafka-server-start.sh config/server.properties &
[1] 2484
- 使用jps命令查看kafka服务进程是否启动
[root@node1 kafka_2.11-2.4.0]# jps -l
2883 sun.tools.jps.Jps
2484 kafka.Kafka
1627 org.apache.zookeeper.server.quorum.QuorumPeerMain
[root@node1 kafka_2.11-2.4.0]#
使用kafka相关脚本,生产与消费
- 创建主题
使用kafka-topics.sh创建一个分区数为4、副本数为3的主题 topic-test
[root@node3 kafka_2.11-2.4.0]# bin/kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic topic-test --replication-factor 3 --partitions 4
Created topic topic-test.
- 消费消息
使用kafka-console-consumer.sh 脚本,消费topic-test主题消息
[root@node2 kafka_2.11-2.4.0]# bin/kafka-console-consumer.sh --bootstrap-server 172.16.124.146:9092 --topic topic-test
- 生产消息
使用 kafka-console-producer.sh脚本,消费topic-test主题消息
[root@node1 kafka_2.11-2.4.0]# bin/kafka-console-producer.sh --broker-list 172.16.124.147:9092 --topic topic-test
>hello kafka !
网友评论