美文网首页
zookeeper && kafka集群安装

zookeeper && kafka集群安装

作者: 斜月86 | 来源:发表于2019-03-15 16:51 被阅读0次
    0 环境准备

    准备三台虚拟机,初始化一下机器环境(主要是安装jdk)

    机器名称 IP地址 对应域名
    centos7.2M 192.168.235.128 a.node.com
    centos7.2N 192.168.235.130 b.node.com
    centos7.2O 192.168.235.131 c.node.com

    为了安装方便,建议对三台机器进行免密登录设置,由于配置文件基本都是相似的,所以M机器上安装完成后可以通过scp的方式软件以及配置文件复制过去进行简单的修改即可。
    将以下信息写入 /etc/hosts文件中

    192.168.235.128 a.node.com
    192.168.235.130 b.node.com
    192.168.235.131 c.node.com
    
    添加节点hosts

    echo -e "192.168.235.128 a.node.com \n192.168.235.130 b.node.com \n192.168.235.131 c.node.com" >> /etc/hosts

    注意点:
    1 关闭各个节点的防火墙
    2 zookeeper && kafka 的软件安装都放在了 /etc/local/software目录下面

    1 安装zk集群

    1.1 下载zookeeper
    cd /etc/local/software
    ## 两种下载方式都可以
    curl -L -O https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
    
    1.2 解压文件并配置
    tar -xvf zookeeper-3.4.13.tar.gz
    cd /usr/local/software/zookeeper-3.4.13/conf 创建 zoo.cfg
    zk 配置文件如下
    
    ## 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
    tickTime=2000
    ##  这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
    initLimit=10
    ## 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
    syncLimit=5
    ## 事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
    dataLogDir=/opt/zookeeper/logs
    ## 快照日志的存储路径
    dataDir=/opt/zookeeper/data
    ## 端口
    clientPort=2181
    autopurge.snapRetainCount=500
    autopurge.purgeInterval=24
    server.1=a.node.com:2888:3888
    server.2=b.node.com:2888:3888
    server.3=c.node.com:2888:3888
    

    修改为a节点配置文件后,将zookeeper复制到b节点和c节点

    scp -r zookeeper-3.4.13 root@b.node.com:/usr/local/software/
    scp -r zookeeper-3.4.13 root@c.node.com:/usr/local/software/
    

    然后在a/b/c接点上依次执行

    a节点 echo "1" > /opt/zookeeper/data/myid
    b节点 echo "2" > /opt/zookeeper/data/myid
    c节点 echo "3" > /opt/zookeeper/data/myid
    
    1.3 启动

    执行完成之后,依次启动a/b/c 接点即可

    启动&&查看状态
    cd /usr/local/software/zookeeper-3.4.13/bin && sh zkServer.sh start
    ## 启动| 前台启动|停止|重启| 查看状态 |
    {start|start-foreground|stop|restart|status|upgrade|print-cmd}
    ## 查看状态
    sh zkServer.sh status
    ## 连接zk
    sh zkClient.sh 
    quit 退出连接
    

    至此,zk集群搭建完毕

    2 kafka 集群搭建

    2.1 kafka下载
    ### cd /usr/local/software
    curl -L -O https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz
    tar -xvf kafka_2.11-1.1.0.tgz
    
    2.2 修改配置文件
    cd /usr/local/software/kafka_2.11-1.1.0/config
    修改server.properties
    
    broker.id=1
    port=9092
    num.network.threads=3
    num.io.threads=8
    log.dirs=/opt/kafka/kafkalogs/
    socket.send.buffer.bytes=102400 
    num.partitions=2
    log.retention.hours=168
    message.max.byte=5242880
    default.replication.factor=2
    replica.fetch.max.bytes=5242880
    log.retention.check.interval.ms=300000
    log.cleaner.enable=true
    zookeeper.connect=a.node.com:2181,b.node.com:2181,c.node.com:2181
    
    

    修改完配置后将文件发送到 b/c两个节点上,修改broker.id b修改为2 c 修改为3

    2.3 启动kafka 集群

    在 a/b/c 节点上依次执行

    ## -daemon 为后台启动
    cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh -daemon config/server.properties
    ## 停止集群 
    cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-stop.sh
    
    

    2.4 安装管理工具

    https://github.com/quantifind/KafkaOffsetMonitor
    
    ## 查看管理平台
    java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
        com.quantifind.kafka.offsetapp.OffsetGetterWeb \
        --zk a.node.com:2181,b.node.com:2182,c.node.com:2181 \
        --port 8088 \
        --refresh 10.seconds \
        --retain 2.days
    
    2.5 kafka 操作
    ## 创建topic
    ./bin/kafka-topics.sh --create --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --replication-factor 3 --partitions 3 --topic test-topic
    
    ## 列出topic
    ./bin/kafka-topics.sh --list --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181
    
    ## 模拟发送
    ./bin/kafka-console-producer.sh --broker-list a.node.com:9092,b.node.com:9092,c.node.com:9092 --topic test-topic
    
    ## 模拟接受
    ./bin/kafka-console-consumer.sh --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --from-beginning --topic test-topic
    
    ## 查看topic detail
    ./bin/kafka-topics.sh --describe --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --topic test-topic
    
    
    ## 启动zk
    cd /usr/local/software/zookeeper-3.4.13/bin/ && sh zkServer.sh start
    
    stop 
    cd /usr/local/software/zookeeper-3.4.13/bin/ && sh zkServer.sh stop
    
    ## 启动kafka 后台启动kafka 
    cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh -daemon config/server.properties
    
    ## 启动kafka 前台启动kafka 
    cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh config/server.properties
    

    至此,zk&&kafka集群搭建完毕!

    相关文章

      网友评论

          本文标题:zookeeper && kafka集群安装

          本文链接:https://www.haomeiwen.com/subject/oqjrmqtx.html