zoukankan      html  css  js  c++  java
  • 03_Kafka集群操作

    1、集群配置思路

    1)每台节点上要启动一个broker进程,因此要配置每台的server.properties
    broker id, log.dirs, zookeeper.connect

    2) 每台broker都要连接zookeeper将状态写入,因此要配置每台的zookeeper.properties
    dataDir, zookeeper集群snapshot数据的存放地址,和zookeeper集群的配置保持一致

    3)zookeeper.properties 可以在一台节点上配置,并分发给其他
    4)server.properties 可以在一台节点上配置,分发给其他节点后,修改broker id为各自的id

    2、集群配置文件

    zookeeper.properties

    3台节点的配置相同

    server.properties(broker0 )

    其他2个节点除了broker.id,都保持相同的配置

     3、集群起停

    在每个节点上运行启动脚本

    # ./bin/kafka-server-start.sh ./config/server.properties 

     在每个节点上运行停止脚本

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

    4、集群操作

    1) Topic查看

    # ./bin/kafka-topics.sh --list --zookeeper master:2181/kafka

    --zookeeper参数一定要带 (broker无状态,通过zookeeper维护kafka元数据),  chroot进行过修改的话,也一定要带

    2)创建Topic
    3副本,3个partition

    # ./bin/kafka-topics.sh --create --zookeeper master:2181/kafka --topic mytopic --replication-factor 3 --partitions 3

    replication-factor     包括leader和follower在内的所有broker个数

    3) 查看Topic描述

    # ./bin/kafka-topics.sh --describe --zookeeper master:2181/kafka --topic mytopic

     

    4) 删除Topic

    # ./bin/kafka-topics.sh --delete --zookeeper master:2181/kafka --topic mytopic

     

    注意:
    1)server.properties中的delete.topic.enable=true, 否则只是标记为删除,并不是真正删除
    2)topic的数据会被同时删除,如果因为某些原因导致topic数据不能完全删除,topic只会被marked for deletion
         此时创建同名的topic就会出现名称冲突

    5) 选择一个节点,启动producer,模拟消息发布
    在master上启动producer进程

    # ./bin/kafka-console-producer.sh  --broker-list master:9092,slave1:9092,slave2:9092  --topic ctopic

    写入的数据,每行一条消息,针对每条消息(由于没有key), 随机选择1个partiton进行存储,3条消息被分别存储在了3个partition中

    6) 选择一个节点,启动consumer,模拟消息订阅

    # ./bin/kafka-console-consumer.sh  --topic ctopic --from-beginning --zookeeper master:2181/kafka

    在slave1上启动consumer,由于消息分布在3个partition中,因此consumer收到的消息只能保证同一个partition内的有序

     

    7) 模拟broker挂掉,查看partition的leader,ISR变化
    slave2挂掉前, topic的partition情况

    停止slave2上的broker

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

     slave2挂掉后,topic的partition情况,Partiton的leader和ISR发生了变化

    zookeeper中记录broker在线情况ids目录也发生了变化

    8) 恢复broker,查看partition的leader,ISR变化
    leader将维持故障后的状态,但ISR(in-sync replica)中slave2将恢复

     

    9)如果想将leader恢复为最初的状态,则可以进行prefer-leader的重新选举

    # ./bin/kafka-preferred-replica-election.sh --zookeeper master:2181/kafka

    partition的leader将恢复为初始状态

    注意:如果server.properties中的auto.leader.rebalance.enable=ture, 则将自动进行preferred-leader选举,自动恢复各个partition的leader为故障前的状态
     

    10)集群节点替换
    如果某个broker机器出现故障,无法重启,就需要使用新的机器来代替,主要是做两件事情
    1、将新机器kafka配置文件中的broker.id设置为与原机器一样, 配置文件和原始broker保持严格一致
    2、启动kafka,注意kafka保存数据的目录不会自动创建,需要手工创建

  • 相关阅读:
    点云平台之图像算法篇
    点云平台之CloudCompare开发
    点云平台之创建工程文件
    pcl介绍
    原型讲解二:原型是干什么用的
    原型讲解一
    博主平时主要发布什么?
    蒙特利尔大学工学院流程
    ubuntu 开热点
    argos3-simulator
  • 原文地址:https://www.cnblogs.com/shay-zhangjin/p/8011289.html
Copyright © 2011-2022 走看看