• kafka在linux上集群部署说明


    前言:

    以本人的三台虚机:10.97.22.3、10.97.22.4、10.97.22.5为例,分别部署zookeeper和kafka集群环境

    一、部署Zookeeper:

    1、进入到 /usr/local/kafka/目录中:

    cd /usr/local/kafka/

    2、下载 zookeeper-3.4.10.tar.gz:
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

    3、解压缩 zookeeper-3.4.10.tar.gz:
    tar -zxvf zookeeper-3.4.10.tar.gz

    4、进入到 /usr/local/kafka/zookeeper-3.4.10/conf 目录中:
    cd zookeeper-3.4.10/conf/

    5、复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:
    cp zoo_sample.cfg zoo.cfg

    6、用 vim 打开 zoo.cfg 文件并修改其内容为如下:
    vi zoo.cfg 
    修改之后 :wq 保存退出

    tickTime=2000

    initLimit=10

    syncLimit=5

    dataDir=/usr/local/kafka/zookeeper-3.4.10/data

    dataLogDir=/data/zookeeper

    clientPort=2181

    server.1=10.97.22.3:2888:3888
    server.2=10.97.22.4:2888:3888
    server.3=10.97.22.5:2888:3888

    7、保存并关闭 zoo.cfg 文件:

    8、用 vim 打开 /etc/ 目录下的配置文件 profile:

    vi /etc/profile
    并在其尾部追加如下内容:

    # idea - zookeeper-3.4.10 config start - 2016-09-08

    export ZOOKEEPER_HOME=/usr/local/kafka/zookeeper-3.4.10/
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    export PATH

    # idea - zookeeper-3.4.10 config start - 2016-09-08

    9、使 /etc/ 目录下的 profile 文件即可生效:
    source /etc/profile

    10、启动 zookeeper 服务:
    zkServer.sh start
    如打印如下信息则表明启动成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/kafka/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    11、查询 zookeeper 状态:
    zkServer.sh status

    12、关闭 zookeeper 服务:
    zkServer.sh stop
    如打印如下信息则表明成功关闭:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/kafka/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED

    13、重启 zookeeper 服务:
    zkServer.sh restart
    如打印如下信息则表明重启成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/kafka/zookeeper-3.4.10/bin/../conf/zoo.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/kafka/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    ZooKeeper JMX enabled by default
    Using config: /usr/local/hikvision/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

    14、分布式 zookeeper 环境:
    (1)、在每台机子的hosts中都加上如下的映射:

    vi /etc/hosts
    10.97.22.3 server-1
    10.97.22.4 server-2
    10.97.22.5 server-3
    (2)、切记在zookeeper的data目录下,创建一个myid的文本文件,里面为每台机子配上不同的id,如:
    10.97.22.3服务器上zookeeper的data目录下的myid文件中只要写上一个字符“1”就好了
    10.97.22.4服务器上zookeeper的data目录下的myid文件中只要写上一个字符“2”就好了
    10.97.22.5服务器上zookeeper的data目录下的myid文件中只要写上一个字符“3”就好了
    (4)、最后分别重启zookeeper服务,会发现三台机子中,有两台的mode:follower,一台的mode:leader,这样zookeeper就部署成功了!

    二、部署kafka:

    1、下载 kafka_2.11-1.1.0.tgz:

    wget http://mirrors.hust.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz

    2、解压缩 kafka_2.11-1.1.0.tgz:
    tar -zxvf kafka_2.11-1.1.0.tgz

    3、配置日志:进入到/usr/local/kafka/kafka_2.11-1.1.0/config目录创建日志目录;
    cd /data
    mkdir kafka


    4、修改kafka配置文件:

    进入到/usr/local/kafka/kafka_2.11-1.1.0/config目录,修改server.properties。
    cd /usr/local/kafka/kafka_2.11-1.1.0/config
    vi server.properties 替换以下配置,具体host.name、port和broker.id,根据实际情况修改

    broker.id=1
    port=9092
    host.name=10.97.22.3
    delete.topic.enable=true

    num.network.threads=3

    num.io.threads=8

    socket.send.buffer.bytes=102400

    socket.receive.buffer.bytes=102400

    socket.request.max.bytes=104857600

    log.dirs=/data/kafka/

    num.partitions=1

    num.recovery.threads.per.data.dir=1

    offsets.topic.replication.factor=1
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1

    log.retention.hours=168

    log.segment.bytes=1073741824

    log.retention.check.interval.ms=300000

    zookeeper.connect=10.97.22.3:2181,10.97.22.4:2181,10.97.22.5:2181

    zookeeper.connection.timeout.ms=6000

    group.initial.rebalance.delay.ms=0

    :wq! #保存退出

    5、修改日志配置文件:
    进入到/data/kafka目录,修改meta.properties。
    cd /data/kafka
    vi meta.properties #修改为如下配置,注意broker.id应与server.properties中的broker.id一致

    broker.id=1
    version=0

    6、Kafka操作:

    (1)、启动kafka命令:
    cd /usr/local/kakfa/kafka_2.11-1.1.0/bin
    nohup ./kafka-server-start.sh /usr/local/kafka/kafka_2.11-1.1.0/config/server.properties &

    (2)、停止kafka命令:
    ./kafka-server-stop.sh
    (3)、创建Topic:(创建一个名为test的topic,只有一个副本,一个分区。)
    ./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
    (4)、列出所有Topic:
    ./kafka-topics.sh -list -zookeeper 127.0.0.1:2181 
    (5)、启动Producer并发送消息:
    ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
    (输入相应的消息,eg:hello kafka;按Ctrl+C结束)
    (6)、启动Consumer并接收消息:
    ./kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning

    7、Kafka配置集群:
    (1)、在每台机子的配置文件中的broker.id都设置成唯一,如:
    10.97.22.3服务器上kafka的server.properties文件中broker.id=1
    10.97.22.4服务器上kafka的server.properties文件中broker.id=2
    10.97.22.5服务器上kafka的server.properties文件中broker.id=3 
    (2)、因为前面在zookeeper的部署说明中,已经把每台集群服务host文件设置了,所以只需在每台服务的server.properties文件中配上:zookeeper.connect=10.97.22.3:2181,10.97.22.4:2181,10.97.22.5:2181
    (3)、重启kafka,集群部署完毕!

    三、部署kafka-manager:

    1、下载好kafka-manager编译好的压缩包,我这里下的是“kafka-manager-1.3.3.7.zip”,并在10.86.22.3上创建目录/usr/local/services/kafka-manager
    2、上传kafka-manager-1.3.3.7.zip到跳板机
    3、在跳板机上执行:scp kafka-manager-1.3.3.7.zip root@10.86.22.3:/usr/local/services/kafka-manager
    4、解压:unzip kafka-manager-1.3.3.7.zip
    5、定位到conf下的application.conf文件,修改配置信息如下:
    kafka-manager.zkhosts=10.97.22.3:2181,10.97.22.4:2181,10.97.22.5:2181
    6、在解压的目录中运行:
    nohup bin/kafka-manager &
    7、在浏览器中输入10.86.22.3:9000,弹出kafka-manager的管理界面,选择Add Cluster
    8、Cluster Name随便输一个,如“test-kafka-cluster”,Cluster Zookeeper Hosts输入:
    10.97.22.3:2181,10.97.22.4:2181,10.97.22.5:2181
    选择保存(其他没啥好填的,有需要的以后再更改)弹出Add Cluster Done的界面
    9、再次回到10.97.22.3:9000,可以看到界面上已经有个名为test-kafka-cluster的集群了,点进去可以看到zookeepers的数目和topics的数目,继续点进去可以查看每个topic的状态!

    四、部署kafka-offset-monitor:

    1、下载包:wget https://github.com/quantifind/KafkaOffsetMonitor/releases/download/v0.2.1/KafkaOffsetMonitor-assembly- 0.2.1.jar
    2、安装解压工具:yum install -y unzip zip
    3、安装jar工具:yum install java-devel
    4、解压到test文件夹:unzip KafkaOffsetMonitor-assembly-0.2.1.jar -d test
    5、下载下来的包里,含有直接连google的angularjs的配置,所以要改成国内的。进入offsetapp目录,打开index.html,找到google
    的angularjs,分别替换为:
    https://code.angularjs.org/1.2.9/angular.js
    https://code.angularjs.org/1.2.9/angular-route.js
    https://code.angularjs.org/1.2.9/angular-resource.js
    6、重新打包:
    jar cvfm KafkaOffsetMonitor-saas.jar ./META-INF/MANIFEST.MF ./
    7、创建自启动脚本:vi kafka-monitor-start.sh
    java -cp KafkaOffsetMonitor-saas.jar \
    com.quantifind.kafka.offsetapp.OffsetGetterWeb \
    --offsetStorage kafka \
    --zk 10.97.22.3:2181,10.97.22.4:2181,10.97.22.5:2181 \
    --port 9900 \
    --refresh 10.seconds \
    --retain 2.days
    8、给自启动脚本授权:chmod +x kafka-monitor-start.sh
    9、后台启动:nohup ./kafka-monitor-start.sh >/dev/null 2>&1 &
    10、查看进程:ps -ef|grep KafkaOffsetMonitor
    11、浏览器输入http://ip:9900 即可查看

    五:开启kafka JMX

    开启kafka的JMX后,可以直接在kafka manager里面直接观察集群的吞吐量、单topic的吞吐量等信息。

    开启方法:

    1.启动kafka前,执行命令:export JMX_PORT=9999 ,端口号随意,但是别和其他进程冲突。

    2.进入kafka manager,编辑集群配置。

     3.结果展示

     

  • 相关阅读:
    Android 顶部标签栏及内容列表的设计与实现
    三分钟快速了解什么是MES系统
    二叉树的先序、中序、后序、层序遍历(递归&非递归)
    成像雷达量产突破:木牛携手全球合作伙伴突破智驾瓶颈
    暴雨服务器:科技创新构建高效、高质、可持续的新质生产力
    2023.10.11 面试罗同学
    数据管理70个名词解析
    Xilinx FPGA模式配置
    DPDK初始化
    MAYA粒子基础_场
  • 原文地址:https://blog.csdn.net/xrq1995/article/details/126437779