• Kafka 1.0.0集群增加节点


    原有环境

    主机名  IP 地址 安装路径 系统
    sht-sgmhadoopdn-01 172.16.101.58

    /opt/kafka_2.12-1.0.0

    /opt/kafka(软连接)

    CentOS Linux release 7.3.1611 (Core)

    sht-sgmhadoopdn-02  172.16.101.59
    sht-sgmhadoopdn-03 172.16.101.60

    向集群增加节点

    sht-sgmhadoopdn-04(172.16.101.66)

    过程

    一. 新节点配置和集群节点环境一致

    二. zookeeper配置

    1. 集群各节点增加新节点的zookeeper配置

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/kafka/data
    clientPort=2182
    server.1=sht-sgmhadoopdn-01:2889:3889
    server.2=sht-sgmhadoopdn-02:2889:3889
    server.3=sht-sgmhadoopdn-03:2889:3889
    server.4=sht-sgmhadoopdn-04:2889:3889

     2. 新节点创建server-id

    # echo 4 > /opt/kafka/data/myid

     3. 启动zookeeper

    # /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

     4. 查看新节点zookeeper状态

    # echo stat | nc sht-sgmhadoopdn-04 2182 | grep Mode
    Mode: follower

    三.  kafka配置

    1.新节点配置文件server.properties

    broker.id=3
    listeners=PLAINTEXT://172.16.101.66:9092
    advertised.listeners=PLAINTEXT://172.16.101.66:9092
    log.dirs=/opt/kafka/data
    zookeeper.connect=sht-sgmhadoopdn-01:2182,sht-sgmhadoopdn-02:2182,sht-sgmhadoopdn-03:2182,sht-sgmhadoopdn-04:2182

     2. 向集群中所有节点kafka配置文件增加对新zookeeper节点的支持

    zookeeper.connect=sht-sgmhadoopdn-01:2182,sht-sgmhadoopdn-02:2182,sht-sgmhadoopdn-03:2182,sht-sgmhadoopdn-04:2182

     3. 启动kafka

    /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

     4. 查看集群

    # echo dump | nc sht-sgmhadoopdn-01 2182 | grep broker
        /brokers/ids/0
        /brokers/ids/1
        /brokers/ids/2
        /brokers/ids/3

    四. 分区重分配

    1. 查看现有集群的topic以及分区方案

    # kafka-topics.sh --zookeeper 172.16.101.58:2182,172.16.101.59:2182,172.16.101.60:2182,172.16.101.66:2182 --list
    __consumer_offsets
    test-topic
    
    # kafka-topics.sh --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181,172.16.101.66:2182 --describe --topic test-topic
    Topic:test-topic    PartitionCount:6    ReplicationFactor:3    Configs:
        Topic: test-topic    Partition: 0    Leader: 1    Replicas: 1,2,0    Isr: 1,2,0
        Topic: test-topic    Partition: 1    Leader: 2    Replicas: 2,0,1    Isr: 2,1,0
        Topic: test-topic    Partition: 2    Leader: 0    Replicas: 0,1,2    Isr: 0,1,2
        Topic: test-topic    Partition: 3    Leader: 1    Replicas: 1,2,0    Isr: 1,2,0
        Topic: test-topic    Partition: 4    Leader: 2    Replicas: 2,0,1    Isr: 2,1,0
        Topic: test-topic    Partition: 5    Leader: 0    Replicas: 0,1,2    Isr: 0,1,2

    可以看到test-topic的6个分区均集中在在老集群中,新添加的节点并未参与分区方案。

    现在将执行分区重分配,将数据均匀分散在左右节点上

    2. 创建json文件

    # cat topics-to-move.json 
    {"topics":[{"topic":"test-topic"}],"version":1}

    3. 产生分区分配方案

    [root@sht-sgmhadoopdn-01 kafka]# kafka-reassign-partitions.sh --zookeeper 172.16.101.58:2182,172.16.101.59:2182,172.16.101.60:2182,172.16.101.66:2182 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2,3" --generate
    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[1,2,0],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":5,"replicas":[0,1,2],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":3,"replicas":[1,2,0],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":2,"replicas":[0,1,2],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":4,"replicas":[2,0,1],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":1,"replicas":[2,0,1],"log_dirs":["any","any","any"]}]}
    
    Proposed partition reassignment configuration
    {"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[3,0,1],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":5,"replicas":[0,2,3],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":3,"replicas":[2,3,0],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":2,"replicas":[1,2,3],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":4,"replicas":[3,1,2],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":1,"replicas":[0,1,2],"log_dirs":["any","any","any"]}]}

    注意“Proposed partition reassignment configuration”为kafka提供的分区方案,实际上并没有真正执行,我们将该分区方案保存为另外一个文件expand_cluster_reassignment.json,然后再真正执行这个分区方案。

    4. 执行分区重分配

    # kafka-reassign-partitions.sh --zookeeper 172.16.101.58:2182,172.16.101.59:2182,172.16.101.60:2182,172.16.101.66:2182 --reassignment-json-file expand_cluster_reassignment.json --execute
    Current partition replica assignment
    
    {"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[1,2,0],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":5,"replicas":[0,1,2],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":3,"replicas":[1,2,0],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":2,"replicas":[0,1,2],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":4,"replicas":[2,0,1],"log_dirs":["any","any","any"]},{"topic":"test-topic","partition":1,"replicas":[2,0,1],"log_dirs":["any","any","any"]}]}
    
    Save this to use as the --reassignment-json-file option during rollback
    Successfully started reassignment of partitions.

    通过--verify查看分区进程

    # kafka-reassign-partitions.sh --zookeeper 172.16.101.58:2182,172.16.101.59:2182,172.16.101.60:2182,172.16.101.66:2182 --reassignment-json-file expand_cluster_reassignment.json --verify
    Status of partition reassignment: 
    Reassignment of partition test-topic-4 is still in progress
    Reassignment of partition test-topic-1 completed successfully
    Reassignment of partition test-topic-0 is still in progress
    Reassignment of partition test-topic-5 is still in progress
    Reassignment of partition test-topic-2 is still in progress
    Reassignment of partition test-topic-3 is still in progress

    5. 等到上述分区过程结束后,再次查看topic分区情况

    # kafka-topics.sh --zookeeper 172.16.101.58:2182 --describe --topic test-topic
    Topic:test-topic    PartitionCount:6    ReplicationFactor:3    Configs:
        Topic: test-topic    Partition: 0    Leader: 1    Replicas: 3,0,1    Isr: 0,1,3
        Topic: test-topic    Partition: 1    Leader: 2    Replicas: 0,1,2    Isr: 0,1,2
        Topic: test-topic    Partition: 2    Leader: 1    Replicas: 1,2,3    Isr: 1,2,3
        Topic: test-topic    Partition: 3    Leader: 2    Replicas: 2,3,0    Isr: 0,2,3
        Topic: test-topic    Partition: 4    Leader: 2    Replicas: 3,1,2    Isr: 1,2,3
        Topic: test-topic    Partition: 5    Leader: 0    Replicas: 0,2,3    Isr: 0,2,3
  • 相关阅读:
    八皇后之回溯算法
    手撕堆排序 优先级队列的实现方式
    扩展1000!(n!)的尾数零的个数
    #12. 整数转罗马数字 穷举法
    #11 盛最多水的容器
    Sql Server 复制数据库
    常见dos命令行
    JSP页面中,EL表达式获取根路径。
    maven springTest结合junit单元测试
    【Java异常】Exception in thread“main” java util ConcurrentModificationException的解决方案
  • 原文地址:https://www.cnblogs.com/ilifeilong/p/10665032.html
Copyright © 2020-2023  润新知