本文主要讲CentOS7下安装Kafka集群

安装vim

输入命令

1
rpm -qa |grep vim

如果未出现以下安装包

vim-common-7.4.629-8.el7_9.x86_64
vim-filesystem-7.4.629-8.el7_9.x86_64
vim-enhanced-7.4.629-8.el7_9.x86_64
vim-minimal-7.4.629-7.el7.x86_64

则使用命令,安装缺少的

1
2
3
yum -y install vim-minimal
yum -y vim-common
yum -y install vim-enhanced

如果都没有则使用命令

1
2
3
yum -y install vim-enhanced
或者
yum -y install vim*

JDK安装

安装openjdk

  1. 查看服务器上是否已经安装过jdk

    1
    2
    [root@Centos7 ~]# java -version
    -bash: java: 未找到命令
  2. 如果没有则搜索jdk 的yum源,执行yum安装jdk

    1
    2
    yum search java | grep jdk
    yum install java-1.8.0-openjdk-devel.x86_64
  3. 查看版本

    1
    2
    3
    4
    [root@Centos7 ~]# java -version
    openjdk version "1.8.0_232"
    OpenJDK Runtime Environment (build 1.8.0_232-b09)
    OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

卸载openjdk

  1. 检查系统jdk版本

    1
    2
    3
    4
    [root@Centos7 ~]# java -version
    openjdk version "1.8.0_232"
    OpenJDK Runtime Environment (build 1.8.0_232-b09)
    OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
  2. 检测jdk安装包

    1
    2
    3
    4
    5
    6
    [root@Centos7 ~]# rpm -qa | grep java
    javapackages-tools-3.4.1-11.el7.noarch
    python-javapackages-3.4.1-11.el7.noarch
    tzdata-java-2019c-1.el7.noarch
    java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
    java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64
  3. 卸载openjdk

    1
    2
    3
    4
    [root@Centos7 ~]# rpm -qa | grep java
    [root@Centos7 ~]# rpm -e --nodeps tzdata-java-2019c-1.el7.noarch
    [root@Centos7 ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
    [root@Centos7 ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64

    或者

    1
    yum remove *openjdk*
  4. 查看卸载情况

    1
    2
    3
    [root@Centos7 ~]# rpm -qa | grep java
    javapackages-tools-3.4.1-11.el7.noarch
    python-javapackages-3.4.1-11.el7.noarch

重装jdk

  1. 下载并解压

    1
    [root@Centos7 download]# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/local/java
  2. 配置环境变量

    1
    vim /etc/profile
  3. 配置参数

    1
    2
    3
    4
    export JAVA_HOME=/usr/local/java/jdk1.8.0_201
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
  4. 执行profile文件,检查安装版本

    1
    2
    3
    4
    5
    [root@Centos7 jdk1.8.0_201]# source /etc/profile
    [root@Centos7 jdk1.8.0_201]# java -version
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

zookeeper集群

  1. 创建文件夹

    1
    2
    3
    mkdir /opt/zookeeper
    mkdir /opt/zookeeper/zkdata
    mkdir /opt/zookeeper/zkdatalog
  2. 在opt/zookeeper目录下下载zookeeper

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
    #未找到wget,执行一下
    yum -y install wget
    #解压文件
    tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
    #进入zookeeper的conf目录下,复制一份配置文件
    cd /conf
    cp zoo_sample.cfg zoo.cfg
    或者
    cp conf/zoo_sample.cfg conf/zoo.cfg
  3. zookeeper默认读取zoo.cfg配置文件,因此需重命名zoo_sample.cfg为zoo.cfg

    编辑zoo.cfg

    1
    vim zoo.cfg

    配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #心跳间隔
    tickTime=2000
    #其他服务器连接到Leader时,最长能忍受的心跳间隔数:10*2000 = 20秒
    initLimit=10
    #发送消息时,多长忍受心跳间隔数:5*2000 = 10秒
    syncLimit=5
    #快照日志;数据保存路径
    dataDir=/opt/zookeeper/zkdata
    #事务日志;日志输出路径
    dataLogDir=/opt/zookeeper/zkdatalog
    #zookeeper服务器的端口
    clientPort=2181
    #==================多台机器==========================
    #对应的server.x=0.0.0.0:2888:3888,其他两个ip为另外两台机器,克隆虚拟机时需要记得修改成0.0.0.0
    server.1=0.0.0.0:2888:3888 或者192.168.211.138
    server.2=192.168.211.139:2888:3888
    server.3=192.168.211.140:2888:3888
    #==================多台机器==========================
  4. 克隆虚拟机,如果你已经有多台机器,可跳过此步

  5. 快照目录zkdata下,创建myid文件,对应配置文件里的server.1、server.2、server.3

    进入zookeeper目录执行

    1
    2
    3
    4
    5
    6
    #server1
    echo "1" > myid
    #server2
    echo "2" > myid
    #server3
    echo "3" > myid
  6. 进入zookeeper的bin目录,启动zookeeper,如果有多台都启动

    1
    2
    3
    4
    5
    6
    ./zkServer.sh start
    #显示
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    查看状态

    1
    2
    3
    4
    5
    6
    7
    ./zkServer.sh status
    #显示
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost. Client SSL: false.
    Mode: standalone

    停止执行

    1
    2
    3
    4
    5
    6
    7
    ./zkServer.sh stop
    #显示
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper/apache-zookeeper-3.6.2/bin/../conf/zoo.cfg
    Stopping zookeeper ... ./zkServer.sh: 第 213 行:kill: (6096) - 没有那个进程
    STOPPED

    重启restart

    如果报错,查看日志,在bin目录的zookeeper.out文件

    1
    tail -f 100 zookeeper-xx.out

    zookeeper启动会占用三个端口,分别的作用是

    1
    2
    3
    2181:对cline端提供服务
    3888:选举leader使用
    2888:集群内机器通讯使用(Leader监听此端口)

    记得使用命令开启防火墙端口,并重启防火墙

    1
    2
    3
    4
    firewall-cmd --zone=public --add-port=2181/tcp --permanent
    firewall-cmd --zone=public --add-port=3888/tcp --permanent
    firewall-cmd --zone=public --add-port=2888/tcp --permanent
    firewall-cmd --reload

    检查防火墙状态

    systemctl status firewalld

    开启防火墙

    systemctl start firewalld

    关闭防火墙

    systemctl stop firewalld.service

    检查端口

    netstat -antp | grep 2181

kafka集群

Kafka安装

  1. 创建文件夹

    1
    mkdir /opt/kafka
  2. 在/opt/kafka下载

    1
    wget https://mirror.bit.edu.cn/apache/kafka/2.7.0/kafka_2.13-2.7.0.tgz

    解压

    1
    tar -zxvf kafka_2.13-2.7.0.tgz
  3. 修改配置文件

    1
    vim /kafka_2.13-2.7.0/config/server.properties

    配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #分别对应每台虚拟机1,2,3
    broker.id=1
    #所在虚拟机ip
    listeners=PLAINTEXT://192.168.211.137:9092
    #所在虚拟机ip
    advertised.listeners=PLAINTEXT://192.168.211.137:9092
    # kafka日志输出路径
    # log.dirs=/tmp/kafka-logs
    # kafka分区数量
    # num.partitions=1
    #zookeeper集群地址
    zookeeper.connect=192.168.211.137:2181,192.168.211.139:2181,192.168.211.140:2181
    # kafka连接zookeeper超时时间
    zookeeper.connection.timeout.ms=6000
  4. kafka操作相关

    启动kafka

    1
    2
    3
    4
    ./bin/kafka-server-start.sh -daemon ./config/server.properties
    或者
    cd /opt/kafka/bin
    ./kafka-server-start.sh -daemon ../config/server.properties

    ./kafka-server-stop.sh -daemon ../config/server.properties

    查看当前是否有kafka进程

    1
    jps -l

    如果-bash: jps: 未找到命令

    注:安装open-jdk后发现jps不能用,需要安装另外一个包才能使用java-1.8.0-openjdk-devel.x86_64

    1
    yum install java-1.8.0-openjdk-devel.x86_64

    如果没有启动或者报错,可以查看日志文件

    1
    tail -fn 100 logs/server.log

    停止kafka

    1
    ./bin/kafka-server-stop.sh

    创建topic名为kafka1,如果创建成功,则kafka搭建成功

    1
    2
    ./bin/kafka-topics.sh --create --zookeeper 192.168.211.137:2181,192.168.211.139:2181,
    192.168.211.140:2181 --replication-factor 3 --partitions 3 --topic kafka1

    参数解析

    1
    2
    3
    replication-factor 3  复制3份
    partitions 3 创建3个分区
    topic 主题名为kafka1

    查看所有topic

    1
    bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --list

    查看topic信息

    1
    bin/kafka-topics.sh --zookeeper 192.168.211.137:2181 --describe --topic kafka1

    删除kafka的topic

    1
    bin/kafka-topics.sh --delete --zookeeper 192.168.211.137:2181 --topic kafka1
  5. 生产消息与消费消息

    生产消息

    单机

    1
    bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092 --topic kafka1

    集群

    1
    2
    bin/kafka-console-producer.sh --broker-list 192.168.211.137:9092,192.168.211.139:9092,\
    192.168.211.140:9092 --topic kafka1

    消费消息

    单机

    1
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092 --from-beginning --topic kafka1

    集群,其中 –from-beginning 从第一个消息开始消费

    1
    2
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.211.137:9092,192.168.211.139:9092,\
    192.168.211.140:9092 --topic kafka1 --from-beginning

Kafka可视化客户端工具

  1. 点击下载安装地址 选择相关的版本安装即可

  2. 配置连接信息

    • 新建连接
    • 输入Cluster name、Kafka Cluster Version、Zookeeper Host 和 Port
    • 输入Advanced ip 和端口 如broker.1:9092; broker.2:9092

    连接成功之后即可