首页 > 其他 > 详细

Kafka+zookeeper安装部署2021

时间:2021-04-27 14:40:09      阅读:123      评论:0      收藏:0      [点我收藏+]
环境
  • centos7

1.JDK安装

  • JDK8
    官网下载jdk8以上的版本,官网地址
    cd /root
    tar zxf jdk-8u181-linux-x64.tar.gz 
    mv jdk1.8.0_181 /usr/local/ 
    echo ‘export JAVA_HOME=/usr/local/jdk1.8.0_181‘ >> /etc/profile 
    echo ‘export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar‘ >> /etc/profile 
    echo ‘export PATH=$PATH:$JAVA_HOME/bin‘ >> /etc/profile 

2.keekeeper集群安装

  • 2.1keekeeper集群安装
  • keekeeper-3.7.0
    zk01 192.168.31.165
    zk02 192.168.31.166
    zk03 192.168.31.167
    ZooKeeper主要有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。
    ZooKeeper集群需要是>1的奇数节点。例如3、5、7等等。
    注意:三台机只能挂一台,至少有两台才可以正常工作,

  • 安装包下载
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
  • 创建ZooKeeper相关目录

    #创建应用目录
    mkdir /usr/zookeeper -p 
    #创建数据目录
    mkdir /data/zookeeper -p 
    mkdir /data/zookeeper/data -p 
    mkdir /data/zookeeper/logs -p 
  • 解压到指定目录

    tar -zvxf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/zookeeper
  • 配置环境变量

    #修改环境变量文件
    cat >> /etc/profile <<EOF
    export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.7.0-bin
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    EOF
    #使环境变量生效
    source /etc/profile
    echo $ZOOKEEPER_HOME
  • 2.2配置ZooKeeper
  • ZooKeeper基础配置
    #进入ZooKeeper配置目录
    cd $ZOOKEEPER_HOME/conf
    #新建配置文件
    cat > zoo.cfg << EOF
    #zk之间心跳间隔2秒
    tickTime=2000
    #LF初始通信时限
    initLimit=10
    #LF同步通信时限
    syncLimit=5
    #Zookeeper保存数据的目录
    dataDir=/data/zookeeper/data
    #Zookeeper保存日志文件的目录
    dataLogDir=/data/zookeeper/logs
    #客户端连接 Zookeeper 服务器的端口
    clientPort=2181
    server.1=192.168.31.165:2888:3888
    server.2=192.168.31.166:2888:3888
    server.3=192.168.31.167:2888:3888
    EOF
  • 配置节点标识

    zk01:
    echo "1" > /data/zookeeper/data/myid
    zk02:
    echo "2" > /data/zookeeper/data/myid
    zk03:
    echo "3" > /data/zookeeper/data/myid
  • 防火墙开放
    2181、2888、3888端口

  • 2.3启动ZooKeeper

    sh $ZOOKEEPER_HOME/bin/zkServer.sh start
  • 2.4 测试
    2.4.1查看节点状态
    sh $ZOOKEEPER_HOME/bin/zkServer.sh status

    2.4.2客户端连接测试
    这里随机选其中一个节点作为客户端连接其他节点即可

    sh $ZOOKEEPER_HOME/bin/zkCli.sh -server 192.168.31.165:2181
    ] ls /

3 Kafka安装部署

  • 3.1 Kafka介绍
    Kafka是一个开源的分布式消息引擎/消息中间件
    在Kafka集群(Cluster)中,一个Kafka节点就是一个Broker,消息由Topic来承载,
    可以存储在1个或多个Partition中,Partition用于主题分片存储。
    发布消息的应用为Producer、消费消息的应用为Consumer,多个Consumer可以促
    成Consumer Group共同消费一个Topic中的消息。
    kafka01 192.168.31.165
    kafka02 192.168.31.166
    kafka03 192.168.31.167

  • 3.2应用&数据目录

    #创建应用目录
    mkdir /usr/kafka
    #创建Kafka数据目录
    mkdir /data/kafka -p 
    mkdir /data/kafka/logs-p 
    chmod 777 -R /data/kafka
  • 3.3 下载安装包

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.8.0/kafka_2.12-2.8.0.tgz
  • 3.4 解压到应用目录
    tar -zvxf kafka_2.12-2.8.0.tgz -C /usr/kafka
  • 3.5 Kafka节点配置
    cp  /usr/kafka/kafka_2.12-2.8.0/config/server.properties{,.bak}
  • 3.6总体配置设置

    cat >  /usr/kafka/kafka_2.12-2.8.0/config/server.properties << EOF 
    broker.id=0
    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/logs
    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=192.168.31.165:2181,192.168.31.166:2181,192.168.31.167:2181
    zookeeper.connection.timeout.ms=18000
    group.initial.rebalance.delay.ms=0
    listeners=PLAINTEXT://192.168.31.165:9092
    EOF
  • 3.7分节点配置

    cat /usr/kafka/kafka_2.12-2.8.0/config/server.properties
    #Kafka01
    broker.id=0
    listeners=PLAINTEXT://192.168.31.165:9092
    #Kafka02
    broker.id=1
    listeners=PLAINTEXT://192.168.31.166:9092
    #Kafka03
    broker.id=2
    listeners=PLAINTEXT://192.168.31.167:9092
  • 3.8 防火墙开放
    9092端口

  • 3.9 启动Kafka
    cd /usr/kafka/kafka_2.12-2.8.0
    nohup bin/kafka-server-start.sh config/server.properties >> /var/log/kafka-server.log 2>&1 &
  • 3.10 关闭Kafka
    bin/kafka-server-stop.sh
  • 3.11 kafka测试
    3.11.1、创建Topic
    在kafka01(Broker)上创建测试Tpoic:test-ken-io,这里我们指定了3个副本Broker、test-ken-io有2个分区
    cd /usr/kafka/kafka_2.12-2.8.0
    bin/kafka-topics.sh --create --bootstrap-server 192.168.31.165:9092 --replication-factor 3 --partitions 2 --topic test-ken-io

    Topic在kafka01上创建后也会同步到集群中另外两个副本Broker:kafka02、kafka03
    3.11.2、查看Topic
    我们可以通过命令列出指定Broker的topic信息

    cd /usr/kafka/kafka_2.12-2.8.0
    bin/kafka-topics.sh --list --bootstrap-server 192.168.31.165:9092
    bin/kafka-topics.sh --list --bootstrap-server 192.168.31.166:9092
    bin/kafka-topics.sh --list --bootstrap-server 192.168.31.167:9092

    3.11.3、发送消息
    这里我们向Broker(id=0)的Topic=test-ken-io发送消息

    cd /usr/kafka/kafka_2.12-2.8.0
    bin/kafka-console-producer.sh --broker-list  192.168.31.165:9092  --topic test-ken-io
    #消息内容
    > hei body
    > hei girl

    3.11.4 消费者
    从开始位置消费

    cd /usr/kafka/kafka_2.12-2.8.0
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --from-beginning
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.166:9092 --topic test-ken-io --from-beginning
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.165:9092 --topic test-ken-io --from-beginning

    然后均能收到消息
    hei body
    hei girl

    从最新位置消费

    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.165:9092 --topic test-ken-io 

    3.11.5 消费者组
    一个Consumer group,多个consumer进程,数量小于等于partition分区的数量
    test-ken-io只有2个分区,只能有两个消费者consumer进程去轮询消费消息

    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --group testgroup_ken
    bin/kafka-console-consumer.sh --bootstrap-server 192.168.31.167:9092 --topic test-ken-io --group testgroup_ken

4 zk作用

  • 4.1 broker在zk中注册
    kafka的每个broker(相当于一个节点,相当于一个机器)在启动时,都会在zk中注册,告诉zk其brokerid,在整个的集群中,broker.id/brokers/ids,当节点失效时,zk就会删除该节点,就很方便的监控整个集群broker的变化,及时调整负载均衡。
    [zk: 192.168.31.165:2181(CONNECTED) 73] ls /brokers/ids
    [0, 1, 2]
  • 4.2 topic在zk中注册
    在kafka中可以定义很多个topic,每个topic又被分为很多个分区。一般情况下,每个分区独立在存在一个broker上,所有的这些topic和broker的对应关系都有zk进行维护
    [zk: 192.168.31.165:2181(CONNECTED) 73] ls /brokers/topics/test-ken-io/partitions
    [0]
  • 4.3 consumer(消费者)在zk中注册
    注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上。
    所以,如果你为某个消费者指定了一个消费者组名称(group.id),那么,一旦这个消费者启动,这个消费者组名和它要消费的那个topic的offset信息就会被记录在broker服务器上。,但是zookeeper其实并不适合进行大批量的读写操作,尤其是写操作。因此kafka提供了另一种解决方案:增加__consumeroffsets topic,将offset信息写入这个topic
    [zk: 192.168.31.165:2181(CONNECTED) 83] ls /brokers/topics/__consumer_offsets/partitions
    [0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 6, 7, 8, 9]

Kafka+zookeeper安装部署2021

原文:https://blog.51cto.com/u_13155846/2735797

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!