美文网首页
Linux CentOS 7.4 环境下安装Kafka

Linux CentOS 7.4 环境下安装Kafka

作者: Scallion | 来源:发表于2020-03-03 01:36 被阅读0次

    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上执行)
    [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集群信息
    1. 配置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]# 
    
    1. 创建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]# 
    
    1. 修改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服务操作
    1. 启动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]# 
    
    1. 查看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环境变量
    1. vim 修改/etc/profile 配置文件,在文件末尾添加如下内容
    export KAFKA_HOME=/home/kafka_2.11-2.4.0
    
    1. 执行 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 !
    

    相关文章

      网友评论

          本文标题:Linux CentOS 7.4 环境下安装Kafka

          本文链接:https://www.haomeiwen.com/subject/pknlqhtx.html