• Kafka/Zookeeper集群的实现(二)


    [root@kafkazk1 ~]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

    [root@kafkazk1 ~]# java -version
    java version "1.8.0_131"
    Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
    [root@kafkazk1 ~]# tar zxvf zookeeper-3.4.12.tar.gz -C /usr/local/

    [root@kafkazk1 ~]# mv /usr/local/zookeeper-3.4.12/ /usr/local/zookeeper

    [root@kafkazk1 conf]# cp zoo_sample.cfg zoo_sample.cfg.back
    [root@kafkazk1 conf]# mv zoo_sample.cfg zoo.cfg
    [root@kafkazk1 conf]# vim zoo.cfg

    [root@kafkazk1 conf]# egrep -v "#|^$" zoo.cfg

    tickTime=2000             #zookeeper使用基本时间单位,以毫秒为单位,用来控制心跳和超时
    initLimit=10               #配置zookeeper集群中follower服务器初始化连接到Leader时,能够承受心跳时间间隔数;10*2000=20秒
    syncLimit=5                 #配置Leader与Follower之间发送消息,请求和应答时长不能超过心跳LinitLimit时间长度;5*2000=10秒
    dataDir=/data/zookeeper     #用于存储快照文件的目录
    clientPort=2181              #zookeeper服务进程监听的TCP端口,默认情况下,会监听2181端口
    server.1=192.168.37.134:2888:3888     #server.1:表示第几个服务器,IP地址表示本地IP,2888端口是服务器与集群中的Leader服务通信端口;
    server.1=192.168.37.135:2888:3888

    server.1=192.168.37.136:2888:3888
    #echo "1"  > /data/zookeeper/myid 

    # mkdir /data/zookeeper -p

    # mkdir /data/zookeeper/zkdata -p 

    Ps:以下是其他两台(192.168.37.135/192.168.37.136)zookeeper配置依次对应即可

    
    

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/data/zookeeper
    dataLogDir=/data/zookeeper/zkdata
    clientPort=2181

    server.1=192.168.37.134:2888:3888
    server.2=192.168.37.135:2888:3888
    server.3=192.168.37.136:2888:3888

    #echo "2"  > /data/zookeeper/myid 

    # mkdir /data/zookeeper -p

    # mkdir /data/zookeeper/zkdata -p

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/data/zookeeper
    dataLogDir=/data/zookeeper/zkdata
    clientPort=2181

    server.1=192.168.37.134:2888:3888
    server.2=192.168.37.135:2888:3888
    server.3=192.168.37.136:2888:3888

    echo "3"  > /data/zookeeper/myid

    # mkdir /data/zookeeper -p

    # mkdir /data/zookeeper/zkdata -p

    添加环境变量到系统的/etc/profile,这样在任意路径都可执行“zkServer.sh start”启动命令了

    [root@kafkazk1 conf]# cat <<EOF>>/etc/profile
    > export ZOOKEEPER_HOME=/usr/local/zookeeper
    > export PATH=$PATH:$ZOOKEEPER_HOME/bin
    > EOF
    [root@kafkazk1 conf]# source /etc/profile
    [root@kafkazk1 conf]# zkServer.sh start
    ZooKeeper JMX enabled by defaul

    [root@kafkazk1 conf]# jps      #可通过jps命令(jdk内置命令)验证zookeeeper是够启动

    2809 QuorumPeerMain        #Zookeeper启动进程,前面数字表示zookeeper进程PID

    [root@kafkazk1 conf]# tail /usr/local/zookeeper/conf/zoo
    zoo.cfg              zookeeper.out        zoo_sample.cfg.back  
    [root@kafkazk1 conf]# tail /usr/local/zookeeper/conf/zookeeper.out 
    2018-08-12 22:39:28,926 [myid:] - INFO  [main:Environment@100] - Server environment:os.arch=amd64
    2018-08-12 22:39:28,926 [myid:] - INFO  [main:Environment@100] - Server environment:os.version=3.10.0-862.el7.x86_64
    2018-08-12 22:39:28,926 [myid:] - INFO  [main:Environment@100] - Server environment:user.name=root
    2018-08-12 22:39:28,926 [myid:] - INFO  [main:Environment@100] - Server environment:user.home=/root
    2018-08-12 22:39:28,926 [myid:] - INFO  [main:Environment@100] - Server environment:user.dir=/usr/local/zookeeper/conf
    2018-08-12 22:39:28,933 [myid:] - INFO  [main:ZooKeeperServer@835] - tickTime set to 2000
    2018-08-12 22:39:28,937 [myid:] - INFO  [main:ZooKeeperServer@844] - minSessionTimeout set to -1
    2018-08-12 22:39:28,937 [myid:] - INFO  [main:ZooKeeperServer@853] - maxSessionTimeout set to -1
    2018-08-12 22:39:28,942 [myid:] - INFO  [main:ServerCnxnFactory@117] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory
    2018-08-12 22:39:28,945 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181

     【Kafka分布式式集群构建】

    [root@kafkazk1 ~]# wget https://mirrors.cnnic.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz

    [root@kafkazk1 ~]# tar zxvf kafka_2.11-2.0.0.tgz -C /usr/local/

    [root@kafkazk1 ~]# mv /usr/local/kafka_2.11-2.0.0/ /usr/local/kafka
    [root@kafkazk1 ~]# vim /usr/local/kafka/config/server.properties

    broker.id=0    #集群节点唯一标识
    listeners=PLAINTEXT://192.168.2.129:9092      #本地Kafka监听地址与端口号,可以设置监听地址为主机名或者IP地址,如果设置主机名,需要将主机名与IP对应关系解析到/etc/hosts中
    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=/usr/local/kafka/logs            #用于配置kafka保存数据的位置,kafka所有消息都会存在该目录下,可通过逗号指定多个路径,kafka会更具最少被使用的原则选择分配partition,
    kafka在分配partition的选择原则是根据分配的partition的个数来决定的 num.partitions
    =6 #设置新创建的topic有多少个分区, 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=60 #配置kafka中消息保存的时间,还支持log.retention.minutes和log.retention.ms配置项 log.segment.bytes=1073741824 #配置partition中每个segment数据文件的大小,默认是1Gb,如果超过这个大小,则自动创建一个新的segment file log.retention.check.interval.ms=300000 zookeeper.connect=192.168.37.134:2181,192.168.37.135:2181,192.168.37.136:2181 #指定zookeeper所在地址,它存储了broker的元数据, auto.create.topics.enable=true #用于设置是否自动创建topic,broker上面没有手动创建,此时如果consumer没有请求到topic,则broker会自动创建一个topic delete.topic.enable=true 0.8.2版本之后,kafka提供了自动删除topic功能,但是默认情况下,不会直接删除,如果要从物理上删除(删除topic后,数据文件也会一同删除)就需要设置true zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0

    [root@kafkazk1 kafka]# nohup bin/kafka-server-start.sh config/server.properties &

    【测试】

    1)创建topic主题

    [root@zk-kafkanode1 bin]# ./kafka-topics.sh --create --zookeeper 192.168.37.134:2181,192.168.37.135:2181,192.168.37.136:2181 --replication-factor 1 --partitions 3 --topic test_topic

    2)查看各个主题状态信息

    [root@zk-kafkanode1 bin]#./kafka-topics.sh --describe --zookeeper 192.168.2.129:2181,192.168.2.151:2181,192.168.2.155:2181 --topic test_bxytopic,test_topic

    详情:
    
    leader:表示当前负责读写的Leader broker
    
    replicas:表示当前分区的所有副本对应的broker列表
    
    isr:表示处于活跃状态的broker

    --create:创建一个topic

    
    

    --replication-factor:表示这个topic的副本数,这里的设置为1个

    
    

    --partitions:指定topic的分区数,一般设置为小于或等于kafka集群节点数即可

    
    

    --topic:指定要创建的topic的名称

    --describe:查看topic指定

    --from-beginning:该参数是读取生产消息的最开始的历史记录,如果不加上该指定,则读取当前生产消息 

    3)node1节点充当生产者producer,写入消息发送到broker各个集群主机列表

    [root@zk-kafkanode1 bin]# ./kafka-console-producer.sh --broker-list 192.168.37.134:9092,192.168.37.135:9092,192.168.37.136:9092 --topic test_topic

    [root@zk-kafkanode3 bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.37.134:9092,192.168.37.135:9092,192.168.37.136:9092 --topic test_topic --from-beginning

    4)删除topic主题

    [root@zk-kafkanode1 bin]# ./kafka-topics.sh --zookeeper 192.168.37.134:2181,192.168.37.135:2181,192.168.37.136:2181 --delete --topic test_topic
    Topic test_topic is marked for deletion.
    Note: This will have no impact if delete.topic.enable is not set to true.

    【拓展】

    ps:kafka版本之间还是有很大的区别的,就拿kafka2.11版本和2.10版本对比,本篇博客使用的是2.11版本,它的启动消费命令便有区别

    2.11版本消费命令:./kafka-console-consumer.sh --bootstrap-server 192.168.37.134:9092,192.168.37.135:9092,192.168.37.136:9092 --topic test01 --from-beginning

    2.10版本消费命令:./kafka-console-consumer.sh --zookeeper 192.168.37.134:2181,192.168.37.135:2181,192.168.37.136:2181 --topic test01 --from-beginning

    在生产者上,命令没区别,但是生产界面没有了箭头,哈哈,当时还以为是卡屏了呢,折腾了好久~~

  • 相关阅读:
    DOM操作的性能优化
    jquery+ajax 实现搜索框提示
    js家的排序算法
    javascript实现集合Set、字典Dictionary、HashTable
    js创建链表
    js优先队列的定义和使用
    js将正整数转化为二进制
    在CSS中水平居中和垂直居中:完整的指南
    原生JS发送Ajax请求、JSONP
    操作系统——笔试面试高频题
  • 原文地址:https://www.cnblogs.com/bixiaoyu/p/9465406.html
Copyright © 2020-2023  润新知