Apache Flume-高阶-负载均衡功能|学习笔记

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 快速学习 Apache Flume-高阶-负载均衡功能

开发者学堂课程【Flume 基础应用实战-企业全场景解决方案Apache Flume-高阶-负载均衡功能】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/715/detail/12771


Apache Flume-高阶-负载均衡功能


内容介绍:

一、负载均衡概述

二、负载均衡的核心配置

三、演示


一、负载均衡概述

1、负载均衡的概念:

负载均衡是一种机制,一个算法,用于解决当一个人或者一个机器无法解决所有请求多个一起来做的问题

2、产生背景:

图片1.png

flume 串联的架构举个简单例子,在工作当中,flume 不需要一台,可能需要多台,比如左是数据源,右边首先部署第一个 agent然后再部署另外一个agent,最后面是要存放数据的最终目的地,这个图就是 flume 串联架构图。其中哪一个环节容易产生问题?涉及两个以上 flume 的时候进行串联,最怕两个之间工作的能力不一样 ,比如边的是一个高配版的机器,大概一秒钟可以处理100个event边是个性能比较低的,只能处理10个,这两个一旦配合起来进行串联工作,随着时间进行,边数据会阻塞得越来越多因为能力有限,解决不了上面那么多的数据。这时候,上面请求非常多数据非常多,但能力有限,一个解决不了什么,可以安排多个一起解决再去部署多个 agent 的,多个之后,上一级就会涉及数据或者是请求分配的问题,这就涉及一些算法

图片2.png

举个简单例子,给这三个分别起名字 abc,轮流分发,比如前面第一台机器,它的性能比较好是高配版的,就 a 消费3bc 各消费1条,按照权重;也可以随机.要具体地写算法实现,整个机制要明确

图片3.png

这里有4agent左边这个叫 agent1右边3agent3个构成了 flume 的一个串联,当中所谓负载均衡就是第一到第二之间,不管发送给谁,同一个数据,同一个请求,只能发送给同一个人。因为如果 agent1 收集到一条数据,在把它发送给 agent2 之后又发送给 agent3 和 agent4,相当于发送了3次,这3个再一次聚集是把数据存了3收集1条存3条变成了数据的冗余在负载均衡当中,一条数据只能发给一个,就一个来进行请求消费

3、小结一:

(1)flume 的负载均衡用于解决一个进程者程序处理不了所有请求多个进程一起处理的场景

(2)同一个请求只能交给一个进行处理避免数据的重复

3)如何分配请求:涉及到负载均衡的算法问题常见有询(按照轮流来,还有随机分配,还有根据权重,只要把规则计算出来就可以完成


二、负载均衡的核心配置

在上一级,需要指定下面的三个 sink因为涉及两个 flume 之间的串联,势必会有上一级 sink 的对接着下一级的 source,因此负载均衡配置应该是在上一级完成

图片4.png

首先,因为有三个 sink 都在分别指定了,起个共同的组名叫做 g1,当中分别有三个,k1、k2、k3,这三个组成了负载均衡的机制。下面有个 selector 叫选择序,round_robin 翻译成中文就是,后面还有个 random 叫作随机,当下的 flume就支持这两种算法,一个叫 round_robin,一个叫 random。如果有能力,也可以去制定开发一些其他常见的算法

指定做完之后,再看一下其他的参数backoff=true 黑名单,最大的超时时间黑名单机制比如把它设置为2、3、4、2、3、4如果当中第四台机器,它有一些故障半死不活,一会好一会不好,说好一会数据非常慢,不好又能消费数据为这些有问题失败地故障的开启黑名单机制,如果有问题,先把放到黑名单当中,给一个超时时间如果在这些时间之内还没有恢复稳定,超时时间将会呈指数倍增长要不要开启黑名单机制根据需求来做这样就满足了在上一级和下一级当中开启的负载均衡,上一级的三个sink按照轮询的方式轮流消费采集到的数据,就是从理论上来推导一下,所谓的负载均衡在 flume 中的应用


三、演示

conf 有一个叫做因为这里只有三台机器,所以第二配置两个

输入:Scp -r /export/servers/flume/node-2:/export/servers

第一件事把 flume 的安装包分发给第二,第三台机器,使用 scp 命令把 flume 首先拷贝给 node-2 机器。注意配置好免密登录,接下来,再赋给 node-3 这台机器,保证三台机器上都有 flume 安装包

进行核心的配置,这里面1表示第一级,后面的表示第二的两个

图片5.png

给两个 sink 个名字叫做g1

图片6.png

Channel 这边使用内存 memory 进行缓类型是 exec,用来监控一个文件的变化

图片7.png

重点在于下面定了两个 sink,一个指向 node-2,一个指向 node-3,这时候背后产生了一个非常重要的问题。当涉及两个 flume 进程之间串联传递数据的时候,上一个的 sink 怎么传递给下一个 source?这两个进程可能在一台机器上,也可能不在一台机机器上跨网络该怎么传递?这个问题 flume 帮我们解决了,在上面有Avro sink 和 Avro sourceAvro 是一个协议,只要绑定端口指定端口就可以发送接收数据,因此这里面有个小插曲

flume 串联跨网络传输数据:它提供了两个非常好用的组件一个叫做 Avro sink一个叫做 Avro source,使用上述的两个组件指定绑定的端口 ip 就可以满足数据跨网络的传递,通常用于 flume 串联架构中。

第一个它指向的是 node-2,端口是52020另外一个node-3,端口是52020,相当于这一会把数据一个通过到 Avro 协议发送到 node-2 这台机器上,另外一个发送到 node-3,在另一边只要去监听这台机器的52020端口就可以接收到传的数据了

图片8.png

下面给这两个起个名字叫做 k1、k2然后选择的方式叫做负载均衡,采用随机的方式轮询的方式进行数据的接收,把配置文件配置一下。

首先来到第一台机器,cd 到 conf 的路径下做一个相关的编辑 vim字复制一下接下来把配置当中的内容全部复制过来,然后做一个粘贴,这里监听的是 /root/logs/123.log,接下来就到了第二和第二级当中的两个,右键打开来看一下source 只能去对接上一级的 sink别人通过 Avro 给你发送数据,你必须使用Avro 绑定本机的指令口,人家发送的是 node-252020,这边绑定的就是本机52020端口,这样相当于两个之间完成了数据的对接数据打印在屏幕上,logger 终端上做一个演示,下面这些都是固定的配置2-1是这样2-2跟它基本上类似它们的 ip 不一样,这就意味着在负载均衡的架构当中,这三个准确来能力是一样的,职责也是一样的,只不过每次处理的数据是不一样的,就是一个数据交给谁都能完成同样的事,但是不能同时就给多个人一起完成,所以说它们之间核心的配置都是一样的,只有绑定的ip不一样接下来把它复制到机器上首先名字复制一下,打开第二台机器

图片9.png

注意不要把里面配置复制错了,尤其是 ip 端口之类的然后做一个粘贴保存好

之后来到第三台机器上也是一样

注意:flume 的配置不需要全记住,只用在需要的时候能够从官网上找到这些配置文件,根据需求做一个修改即可

保存完之后,开始去启动机器

这里有个小插曲,当涉及 flume 串联架构的时候,以图上来说,这里有agent的1234按照1234的顺序启动,还是按照什么规则启动可以看到整个图上数据来自左边web server最终的目的地是在右边,有一个生动形象描述,就是从海边去修水管修到家,到底怎么去是先把水接通,再修管,接通,还是先把家里都铺通好了,才去通水,背后所包含的就是说为了保证数据在管道中传递不会丢失,通常会从远离数据源的那一始启动,也就说,当先把2、3、4启动的时候,因为没有数据,没有问题下来再把1启动,然后对接成功数据开始流转

接下来开始启动一下,首先启动 node-2node-3,启动的命令就在对应的配置文件路径下复制一下首先来到3上cd..返回根目录下启动

回到2cd..启动

接下来第一个启动方案在路径下复制一下,cd..返回上一。当把第一启动成功之后,23突然显示有数据传输成功地对接上了

相当于第二级的两个都跟第一级连接上了保证整个框架启动没问题

开始数据的传递,现在并没有数据

怎么来模拟数据它用来干的数据是监视一个文件的变化,叫做 /root/logs/123.log,正好来做一个模拟把它做完之后就有数据了,两个在轮询消数据,如果要想看更好的效果应该多设计几个,比如2、3、4、5、6,会发现它像跑马灯一样轮来进行处理,因为现在只有两个,所以看到效果不明显。如果觉得数据太快,看起去不好加一个 sleep一会,这样看起来数据就不会那么快

图片10.png

各种参数可以自己调整下,这就是负载均衡的具体演示

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
域名解析 Linux Apache
Linux Apache服务详解——虚拟网站主机功能实战
Linux Apache服务详解——虚拟网站主机功能实战
181 5
|
7月前
|
Shell
Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
【2月更文挑战第17天】Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
373 2
|
22天前
|
监控 测试技术
slb测试会话保持功能
slb测试会话保持功能
31 6
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
56 1
|
2月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
55 3
|
7月前
|
Java Linux
Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
【2月更文挑战第16天】Flume【环境搭建 01】CentOS Linux release 7.5 安装配置 apache-flume-1.9.0 并验证
143 0
|
4月前
|
负载均衡 Cloud Native 容灾
阿里云负载均衡SLB价格_ALB、NLB和CLB区别_负载均衡功能和使用场景说明
阿里云负载均衡SLB分为应用型ALB、网络型NLB及传统型CLB。ALB与NLB仅支持按量付费,而CLB则提供包年包月和按量付费选项。ALB专长于7层HTTP/HTTPS/QUIC协议处理,支持丰富的内容路由功能;NLB聚焦于4层TCP/UDP/TCPSSL协议,擅长处理大规模并发连接。两者均基于NFV技术,支持自动弹性伸缩,并与云原生环境如ACK/SAE/K8S深度集成。此外,SLB提供多协议支持、多级容灾、安全防护等功能,确保服务的高可用性和安全性。具体收费方面,ALB的基础版实例费为0.049元/小时起,NLB实例费限时免费,两者还需支付性能容量单位LCU费及公网网络费(仅公网实例)
|
5月前
|
负载均衡 监控 Kubernetes
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
|
6月前
|
XML 负载均衡 Java
Spring Boot 中实现负载均衡:概念、功能与实现
【6月更文挑战第28天】在分布式系统中,负载均衡(Load Balancing)是指将工作负载和流量分配到多个服务器或服务实例上,以提高系统可用性和响应速度。负载均衡器可以是硬件设备,也可以是软件解决方案。
300 0
|
6月前
|
存储 SQL 数据管理
基于阿里云数据库 SelectDB 版内核 Apache Doris 全新分区策略 Auto Partition 应用场景与功能详解
自动分区的出现进一步简化了复杂场景下的 DDL 和分区表的维护工作,许多用户已经使用该功能简化了工作流程,并且极大的便利了从其他数据库系统迁移到 Doris 的工作,自动分区已成为处理大规模数据和应对高并发场景的理想选择。

推荐镜像

更多