zoukankan      html  css  js  c++  java
  • kafka高可用集群环境搭建

    kafka是分布式发布订阅消息系统

    Kafka作为一个集群,运行在一台或者多台服务器上.

    Kafka 通过 topic 对存储的流数据进行分类。

    每条记录中包含一个key,一个value和一个timestamp(时间戳)。

    中文官方网站:http://kafka.apachecn.org/quickstart.html

    优点:

    a、高吞吐量、低延迟:kafka每秒可以处理几十万条消息,延迟最低只有几毫秒,每个topic可以分多个partition、consumer group 对partition进行consumer操作

    b、可扩展性:集群支持可扩展性

    c、持久性:消息被持久化到本地磁盘,支持数据备份

    d、高并发:支持数千个客户端同时进行读写操作

    kafka存储

    kafka是以topic来进行消息管理,每个topic包含多个partition,每个partition对应一个逻辑log

    topic相当于消息存放目录,partition是topic物理上的分组,一个topic可分为多个partition,每个partition是一个有序的队列

    环境搭建:

    1)关闭各节点防火墙、selinux

    2)各节点安装jdk

    3)搭建zookeeper集群环境

    4)搭建kafka集群

    zookeeper安装包地址:http://archive.apache.org/dist/zookeeper/

    节点jdk安装  略

    [root@lb ~]# ansible all -a "java -version"
    192.168.53.7 | CHANGED | rc=0 >>
    openjdk version "1.8.0_161"
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
    192.168.53.8 | CHANGED | rc=0 >>
    openjdk version "1.8.0_161"
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
    192.168.53.6 | CHANGED | rc=0 >>
    openjdk version "1.8.0_161"
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

    zookeeper集群搭建

    下载zookeeper安装包并解压

    [root@lb ~]# wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
    [root@lb ~]# tar xf zookeeper-3.4.10.tar.gz -C /usr/local/
    [root@lb local]# ln -s /usr/local/zookeeper-3.4.10/ /usr/local/zookeeper

    修改zoo_sample.cfg配置文件

    主要修改两个地方

      1、dataDir=/usr/local/zookeeper/data  指定完之后data目录要手动创建

      2、server.0=192.168.53.6:2888:3888

         server.1=192.168.53.7:2888:3888

         server.2=192.168.53.8:2888:3888

    [root@lb ~]# cd /usr/local/zookeeper/conf
    [root@lb conf]# ls
    configuration.xsl  log4j.properties  zoo_sample.cfg
    [root@lb conf]# mv zoo_sample.cfg zoo.cfg        //原有的名字并不规范
    [root@lb conf]# grep -Ev "#|^$" zoo.cfg
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/zookeeper/data        ##目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等
    clientPort=2181
    server.0=192.168.53.6:2888:3888
    server.1=192.168.53.7:2888:3888
    server.2=192.168.53.8:2888:3888
    

    说明:

      clientPort=2181  客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181

      在zoo.cfg这个文件中,配置集群信息是存在一定的格式 

        server.服务器编号(myid里面的值):服务器地址:服务端内部通信的端口(默认2888):选举端口(默认是3888)

    创建服务器标识

    [root@lb zookeeper]# pwd
    /usr/local/zookeeper
    [root@lb zookeeper]# mkdir data
    [root@lb zookeeper]# echo "0" >data/myid
    [root@lb zookeeper]# cat data/myid
    0

    将zookeeper目录分发各节点,还有环境变量的配置文件

    [root@lb zookeeper]# ansible node -a "ln -s /usr/local/zookeeper-3.4.10 /usr/local/zookeeper"

    修改节点myid文件

    [root@web1 zookeeper]# echo "1" >data/myid
    [root@web2 zookeeper]# echo "2" >data/myid

    启动zookeeper

    用bin下面的脚本zkServer.sh来启停

    /usr/local/zookeeper/bin/zkServer.sh start

    查看状态

    /usr/local/zookeeper/bin/zkServer.sh status

    kafka集群搭建

    安装包下载地址:http://mirror.bit.edu.cn/apache/kafka/

    下载安装包并解压

    [root@lb ~]# wget http://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.12-2.4.1.tgz
    [root@lb ~]# tar xf kafka_2.12-2.4.1.tgz -C /usr/local/
    [root@lb ~]# ln -s /usr/local/kafka_2.12-2.4.1/ /usr/local/kafka

    修改配置文件server.properties

    192.168.53.6需修改的地方如下:(其他节点服务器也需做相应的修改)

      broker.id=0

      listeners=PLAINTEXT://192.168.53.6:9092

      zookeeper.connect=192.168.53.6:2181,192.168.53.7:2181,192.168.53.8:2181

      log.dirs=/usr/local/kafka/logs  #日志路径 方便查看日志

    创建日志的存放路径

      mkdir -p /usr/local/kafka/logs

    将kafka目录发送各节点

    [root@lb local]# scp -rp /usr/local/kafka_2.12-2.4.1/ 192.168.53.7:/usr/local/
    [root@lb local]# scp -rp /usr/local/kafka_2.12-2.4.1/ 192.168.53.8:/usr/local/
    [root@lb local]# ansible node -a "ln -s /usr/local/kafka_2.12-2.4.1 /usr/local/kafka"

    分别对分发过去的配置文件进行修改

      如:53.7  server.properties

      broker.id=1

      listeners=PLAINTEXT://192.168.53.7:9092

    启动kafka(kafka/bin/ 目录下有服务启动和停止的脚本)

    [root@lb bin]# ./kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties  
    
    [root@web1 kafka]# /usr/local/kafka/bin/kafka-server-start.sh -daemon config/server.properties
    
    [root@web2 local]# /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

    创建一个topic

    创建一个名为test的topic,一个分区一个副本  (一个节点创建topic之后会自动同步到另外的两个broker上,可在另外两个broker上用--list进行查看)

    [root@lb bin]# /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.53.6:2181 --replication-factor 1 --partitions 1 --topic test
    --partitions 1  指定分区,一个分区表示只会在一个borker进行存放  如果是3就是3个broker进行均摊存放

    运行--list查看这个topic

    [root@lb bin]# /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.53.6:2181
    test
    
    [root@web1 kafka]# /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.53.7:2181
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
    test
    
    [root@web2 local]# /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.53.8:2181
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
    test

    发送消息

    kafka自带命令行客户端,它从文件或者标准输入中读取输入,并将其作为message(消息)发送到集群

    [root@lb ~]# /usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.53.6:9092 --topic test
    >111
    >

    启动一个consumer 

    kafka还有一个命令行consumer(消费者),将消息转储到标准输出

    [root@web1 kafka]# /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.53.6:9092 --topic test --from-beginning
    111

     

     可以看到数据只存放在了主节点,如果分区指定为3个得话,3个节点会分别都存放

  • 相关阅读:
    2020.10.23 19级training 补题报告
    2020.10.17 天梯赛练习 补题报告
    2020.10.16 19级training 补题报告
    2020.10.9 19级training 补题报告
    2020.10.10 天梯赛练习 补题报告
    2020.10.3 天梯赛练习 补题报告
    2020.10.2 19级training 补题报告
    第十届山东省ACM省赛复现补题报告
    VVDI Key Tool Plus Adds VW Passat 2015 Key via OBD
    Xhorse VVDI Prog Software V5.0.3 Adds Many MCUs
  • 原文地址:https://www.cnblogs.com/goujinyang/p/13285920.html
Copyright © 2011-2022 走看看