zookeeper集群+kafka集群

一、zookeeper

1.zookeeper是一个开源的,分布式的,为分布式架构提供协调服务的APACHE的项目。

2.zookeeper的工作机制:观察者模式设计的分布式服务器管理架构;负载存储和管理元数据,记录集群的变化和保存集群变化的信息。

3.zookeeper的特点:1)在集群中分为领导者和追随者,它是由此组成的集群;2)只要由半数以上的节点正常工作,整个zookeeper就可以正常工作,zookeeper集群在部署时一般选择奇数台;3)全局的数据是一致的,每个zookeeper不论是领导者还是追随者,在访问他们的数据时都是一致的;4)数据更新的原子性,一次更新数据,要么成功要么失败;5)数据更新的实时性;6)领导者追随者根据投票产生。

4.选举机制:服务器A启动后发起一次选举,A就会先投自己一票,当A只有一票不够半数,选举无法完成,A进行looking。

                    服务器B启动之后发起投票选举,服务器B首先也是投自己一票,服务器A和B这时会做一个比较,这时会根据myid的大小进行选举,myid小的就会投向大的一方,当B选举后C启动后就会自动追随,A也会成为追随者。

二、kafka

1.kafka概述:1)消息队列:MQ,在高并发环境下,同步的请求来不及处理,请求太多会造成阻塞比如说大量请求并发到数据库,too manyconnection报错消息队列,使用异步处理方式,可以缓解系统处理请求的压力。

2.kafka作用:

1)异步处理;

2)系统解耦(每个系统之间独立运行,互相之间没有必然的依赖关系);

3)负载均衡(把任务发送给多个消费者,多个消费者可以并行处理队列中的消息,谁发谁处理消费者的信息);

4)流量控制和限流(通过延迟方式可以处理生产速率和消费者的处理速度,运维了解即可);

5)数据同步和数据分发也就是日志分割(跨系统的数据同步和日志收集);

6)任务调度和定时任务;

7)实时数据处理;

8)备份和恢复

3.消息队列的模式:

1)点对点模式:一对一,消费者消费完数据之后,生产者就会自动清除已消费的数据,一个生产者对应一个消费者。

2)发布订阅模式:一对多,也叫观察者模式,消费者消费完之后生产者会保留一段时间数据;生产者发布一个消息,可以是一个消费者使用,也可以是多个消费者同时使用(主流);kafka就是订阅模式的消息队列,大数据的实时处理领域。

4.特性:高吞吐量,低延迟;每秒能处理几十万条数据,延迟只有几毫秒;集群的可扩展性(支持热扩展);消息是持久化的,生产者发布的消息可以保存到磁盘当中,防止数据丢失但是有时间限制;有一定的冗余性,挂了一台可以继续使用;高并发,数千个客户端可以同时读写。

5.kafka的组件:

tpolc主题:kafka的基本单元,所有生产者发布的消息都是发到主题,消费者订阅主题,然后消费生产者发布的消息。

分区:每个主题都可以分成多个分区,每个分区都是数据的有序子集;分区当中保留数据,按照偏移量来有序的存储数据,消费者可以根据偏移量来消费指定分区当中的信息;有分区必须要有偏移量;分区还有备份的作用,我们在创建主题时创建分区,创建分区时要指定副本数,分区和指定的集群机器数量一般是保持一致的,副本就是备份分区当中的消息,最少要2个,互为备份。

偏移量:消息在分区当中的唯一标识,跟踪和定位消息所在的位置,消费可以跟据偏移量来处理消息。

经纪人:经纪人处理生产者和消费者的请求(kafka),元数据还是由zookeeper保存

zookeeper:保存数据

6.kafak的工作流程:生产者将消息发布到指定的主机,每个消息附带一个key和calue;主题是有多个分区的,生产者把消息写入一个分区(带偏移量);经纪人(kafak)分配和处理生产者的发布请求,偏移量也是经纪人分配(在分区中是唯一的);消费者订阅主题,获取全量的消费者的消费消息(默认模式),也可以从执行的分区获取消息(代码完成,一般不用);生产者发布的消息会在本地保留一段时间,防止消费者有延迟或者处理速度过慢,导致没有成功消费,保留时间默认为7天。

7.kafka消息堆积该怎么办:消费者出现延迟或者处理能力太差,导致消息堆积。

1)减少kafka持久化的保存时间;

2)修改主题的分区数,扩大分区的数量,提高消费者获取的通道;

3)可以指定多个消费者共同工作,处理消息的积压;

三、实验:

1.首先部署zookeeper(基于mysql)  三台主机同步执行

关闭防火墙及安全机制,安装时间同步的命令

同步时间并查看

安装Java的依赖环境

 查看java的版本信息,减压zookeeper的安装包

 将减压好的安装包进行改名

进入到zookeeper的配置文件当中

 vim  /opt/zookeeper/conf/zoo.cfg

在每个节点上创建数据目录和日志目录同时也要创建myid文件,在每个节点的dataDir指定的目录下创建一个 myid 的文件,不同节点分配1、2、3

echo 1 > /opt/zookeeper/data/myid     80主机

echo 2 > /opt/zookeeper/data/myid     90主机

echo 3 > /opt/zookeeper/data/myid      99主机

配置zookeeper的启动脚本:vim /etc/init.d/zookeeper

三台节点全部配置

#!/bin/bash

#chkconfig:2345 20 90

#description:Zookeeper Service Control Script

ZK_HOME='/opt/zookeeper'

case $1 in

start)

echo "---------- zookeeper 启动 ------------"

$ZK_HOME/bin/zkServer.sh start

;;

stop)

echo "---------- zookeeper 停止 ------------"

$ZK_HOME/bin/zkServer.sh stop

;;

restart)

echo "---------- zookeeper 重启 ------------"

$ZK_HOME/bin/zkServer.sh restart

;;

status)

echo "---------- zookeeper 状态 ------------"

$ZK_HOME/bin/zkServer.sh status

;;

*)

    echo "Usage: $0 {start|stop|restart|status}"

esac

给脚本权限并且设置开机自启

 分别启动 Zookeeper

查看zookeeper状态

 部署kafka   拖包、减压、改名

找到卡夫卡的配置文件并且复制

修改Kafka的配置文件:

取消同步

三台经纪人id不要一致 分别可以是0   1   2

 listeners相当于与映射主机名和IP映射,不需要再/etc/hosts里增加

 kafak日志存放的地方

同步操作

 export KAFKA_HOME=/usr/local/kafka

export PATH=$PATH:$KAFKA_HOME/bin

启动脚本kafka

vim /etc/init.d/kafka

#!/bin/bash
#chkconfig:2345 22 88
#description:Kafka Service Control Script
KAFKA_HOME='/opt/kafka'
case $1 in
start)
    echo "---------- Kafka 启动 ------------"
    ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties
;;
stop)
    echo "---------- Kafka 停止 ------------"
    ${KAFKA_HOME}/bin/kafka-server-stop.sh
;;
restart)
    $0 stop
    $0 start
;;
status)
    echo "---------- Kafka 状态 ------------"
    count=$(ps -ef | grep kafka | egrep -cv "grep|$$")
    if [ "$count" -eq 0 ];then
        echo "kafka is not running"
    else
        echo "kafka is running"
    fi
;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
esac

//给启动脚本权限及设置开机自启
chmod +x /etc/init.d/kafka
chkconfig --add kafka

//分别启动 Kafka
service kafka start 

退出同步其中一台主机创建主题、副本、分区

 查看主题

主机1模拟发布

其它主机模拟消费

查看主题的详细信息

如何删除主题:

如何修改分区数

ELK+filebeat+kafka的安装部署

先操作nginx

修改 vim filebeat.yml配置文件

nginx1上加双引号 

 回到logstash

先去nginx启动filbeat,再启logstash

 

如何打开kafka及zookeeper

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值