zoukankan      html  css  js  c++  java
  • ZOOKEEPER+KAFKA 集群搭建

    ZABBIX+KAFKA 集群搭建
    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、集群管理等。
    
    
    
    因为Kafka集群是把状态信息保存在Zookeeper中的,并且Kafka的动态扩容是通过Zookeeper来实现的,所以需要优先搭建Zookeerper集群,建立分布式状态管理。开始准备环境,搭建集群:
    
    zookeeper是基于Java环境开发的所以需要先安装Java 然后这里使用的zookeeper安装包版本为zookeeper-3.4.14,Kafka的安装包版本为kafka_2.11-2.2.0。
    
    AMQP协议:Advanced Message Queuing Protocol (高级消息队列协议)是一个标准开放的应用层的消息中间件协议。AMQP定义了通过网络发送的字节流的数据格式。因此兼容性非常好,任何实现AMQP协议的程序都可以和与AMQP协议兼容的其他程序交互,可以很容易做到跨语言,跨平台。
    
    server1:192.168.42.128
    
    server2:192.168.42.129
    
    server3:192.168.42.130
    
    安装之前先检查一下系统有没有自带open-jdk
    
    命令:
    
    rpm -qa |grep java
    
    rpm -qa |grep jdk
    
    如果没有输入信息表示没有安装。
    检索1.8的列表
    yum list java-1.8*   
    安装1.8.0的所有文件
    yum install java-1.8.0-openjdk* -y
    
    使用命令检查是否安装成功
    java -version
    
    cat /etc/hosts
    
    192.168.42.128 kafka01
    
    192.168.42.129 kafka02
    
    192.168.42.130 kafka03
    
     
    
    1.关闭selinux,防火墙。
    
    setenforce 0
    
    systemctl stop firewalld && systemctl disable firewalld
    
    2.创建zookeeper和Kafka的存放目录:
    
    cd /usr/local/
    
    wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz
    
    tar xzvf zookeeper-3.4.14.tar.gz
    
    tar xzvf kafka_2.11-2.2.0.tgz
    
    mkdir -pv zookeeper/{zkdata,zkdatalog}                 #zkdata是存放快照日志,zkdatalog是存放事物日志
    
    mkdir -pv kafka/kfdatalogs                 #kfdatalogs是存放消息日志
    
     
    
    4.生成并更改zookeeper的配置文件(三台服务器上都需要设置):
    
    #可以将zoo_sample理解为zookeeper自带的配置文件模板,复制出一份以.cfg结尾的配置文件。
    
    cp -av /usr/local/zookeeper/conf/{zoo_sample,zoo.cfg}
    
    tickTime=2000              #zookeeper服务器之间的心跳时间。
    
    initLimit=10                 #zookeeper的最大连接失败时间
    
    syncLimit=5          #zookeeper的同步通信时间
    
    dataDir=/usr/local/zookeeper/zkdata                 #zookeeper的存放快照日志的绝对路径
    
    dataLogDir=/usr/local/zookeeper/zkdatalog                 #zookeeper的存放事物日志的绝对路径
    
    clientPort=2181              #zookeeper与客户端的连接端口
    
    server.1=192.168.11.139:2888:3888                  #服务器及其编号,服务器IP地址,通信端口,选举端口
    
    server.2=192.168.11.140:2888:3888                 #服务器及其编号,服务器IP地址,通信端口,选举端口
    
    server.3=192.168.11.141:2888:3888                #服务器及其编号,服务器IP地址,通信端口,选举端口
    
    #以上端口都是zookeeper的默认端口,可随需求进行修改
    
    5.创建myid文件:
    
    在server1上
    
    echo "1" > /usr/local/zookeeper/zkdata/myid
    
    #就是在不同的服务器上,将服务器编号发送到zkdata下的myid。
    
    6.启动zookeeper集群
    
    cd /usr/local/zookeeper/bin
    
    ./zkServer.sh start
    
    ./zkServer.sh status
    
    #Mode: leader为主节点,Mode: follower为从节点,zk集群一般只有一个leader,多个follower,主一般是响应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。
    
    zookeeper 选举过程/工作原理
    
    https://blog.csdn.net/wyqwilliam/article/details/83537139
    
    在zookeeper的集群中,各个节点共有下面3种角色和4种状态:
    
    角色:leader,follower,observer
    
    状态:leading,following,observing,looking
    
    每个Server在工作过程中有4种状态:
    
    LOOKING:当前Server不知道leader是谁,正在搜寻。
    
    LEADING:当前Server即为选举出来的leader。
    
    FOLLOWING:leader已经选举出来,当前Server与之同步。
    
    OBSERVING:observer的行为在大多数情况下与follower完全一致,但是他们不参加选举和投票,而仅仅接受(observing)选举和投票的结果
    
    到此,zookeeper集群搭建结束,接下来基于zookeeper搭建kafka集群:
    
    Kafka的基本概念:
    
    主题:Topic特指Kafka处理的消息源(feeds of messages)的不同分类。
    
    分区:Partition Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
    
    Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
    
    Producers:消息的数据生产者,向Kafka的一个topic发布消息的过程叫做producers。
    
    Consumers:消息的数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。
    
    Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker,这里用的是AMQP协议。
    
    cd /usr/local/kafka/config/
    
    1.修改server.properties文件:
    
    broker.id=1              #这里和zookeeper中的myid文件一样,采用的是唯一标识
    
    prot=9092              #Kafka集群间连接的端口,配置文件中没有,但默认为9092,可随需求进行修改,这里咱们加上
    
    log.dirs=/usr/local/kafka/kfdatalogs                         #存放Kafka消息日志的绝对路径
    
    advertised.listeners=PLAINTEXT://kafka01:9092
    
    log.retention.hours=168                  #默认消息的最大持久化时间,168小时,7天
    
    message.max.byte=5242880                      #消息保存的最大值5M
    
    default.replication.factor=2                         #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
    
    replica.fetch.max.bytes=5242880                 #取消息的最大直接数
    
    zookeeper.connect=192.168.42.128:2181,192.168.42.129:2181,192.168.42.130:2181#集群的各个节点的IP地址及zookeeper的端口,在zookeeper集群设置的端口是多少这里的端口就是多少。
    
     
    
    未修改的配置文件信息:
    
    num.network.threads=3               #这个是borker进行网络处理的线程数
    
    num.io.threads=8                  #这个是borker进行I/O处理的线程数
    
    num.partitions=1                   #默认的分区数,一个topic默认1个分区数
    
    log.retention.hours=168                   #默认消息的最大持久化时间,168小时,7天
    
    message.max.byte=5242880                #消息保存的最大值5M
    
    default.replication.factor=2                           #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
    
    replica.fetch.max.bytes=5242880                           #取消息的最大直接数
    
    log.segment.bytes=1073741824                          #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
    
    log.retention.check.interval.ms=300000                   #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
    
    log.cleaner.enable=false                       #是否启用log压缩,一般不用启用,启用的话可以提高性能
    
    2.启动Kafka集群:
    
    cd /usr/local/kafka/bin
    
    bash kafka-server-start.sh -daemon ../config/server.properties
    
    3.开始测试:
    
    3.1创建topic
    
    ./kafka-topics.sh --create --zookeeper 192.168.21.241:2181 --replication-factor 2 --partitions 1 --topic wg01
    
    #--replication-factor 2                  复制两份
    
    #--partitions 1                 创建一个分区
    
    #--topic tian                 主题为tian
    
    3.2创建一个producter:
    
    ./kafka-console-producer.sh --broker-list 192.168.21.241:9092 --topic wg01
    
    3.3创建一个consumer:
    
    ./kafka-console-consumer.sh  --bootstrap-server 192.168.11.141:9092 --topic wg01 --from-beginning
    
    3.4查看topic:
    
    ./kafka-topics.sh --list --zookeeper 192.168.11.141:2181
    

      

  • 相关阅读:
    project
    类欧几里得算法
    还不熟悉的内容
    Hall定理
    FWT学习笔记
    最小树形图
    BZOJ 3027 [Ceoi2004]Sweet
    多项式除法
    VUE 计算属性和侦听器
    VUE 模板语法
  • 原文地址:https://www.cnblogs.com/luyuheng/p/11698741.html
Copyright © 2011-2022 走看看