Apache Flume-高阶-容错(故障转移)功能|学习笔记

简介: 快速学习 Apache Flume-高阶-容错(故障转移)功能

开发者学堂课程【Flume 基础应用实战-企业全场景解决方案Apache Flume-高阶-容错(故障转移)功能】学习笔记,与课程紧密联系,让用户快速学习知识。  

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


Apache Flume-高阶-容错(故障转移)功能

 

目录

一、容错的概念

二、如何配置容错的相关核心属性

三、演示

 

一、容错的概念

容错应叫做容忍错误的发生故障转移,它背后所包含的是,当出现单点故障一个地方出现问题导致整体不可用之后,该怎么办?以 flume 的串联架构为例,简单画个图来梳理一下。

图片1.png

比如说搭建 flume 一个串联架构,左边是一个 agent,右边再来一个 agent,它们两个之间互相配合,甚至有三个 agent 之间进行一个串联,如果在这样的串联过程当中它们都正常工作,肯定没有什么问题,怕就如果哪一天哪一时刻这台机器突然出现了故障,整个串联的体系就不能正常的运转就是一个地方出现故障,导致整体不可用,这叫做单点故障,该怎么去解决它呢?

flume 当中解决单点故障,容易出问题,可以在这里设置一个备份,比如给第二再部署一个备份的 flume,当它出现故障之后,备份顶替继续干活,这个顶替的过程就一个容错的过程

再出问题,就再部署,可以部署多个备份备份越多,容错的能力越强,但备份越多,浪费的资源越多,因为同一时刻只能有一个对外提供服务,如果它一直没问题其它备份都只能闲置

小结一:

(1)容错又称之为故障转移,叫做容忍错误的发生

(2)常用于解决单点故障给容易出问题的地方设置备份;

备份越多容错能力越强,但是资源的浪费越严重。


二、如何配置容错的相关核心属性

从价格上来说跟之前所讲的负载均衡差不多,其实用这一套架构也可以去表示容错的一个能力,只不过当中一个机器消费了之后,其他机器不再消费,都做一个备份。

接下来看下图该怎么样去配置容错的相关核心属性。

图片2.png

图片3.png

首先,指定一个 groupg1,当中有三个 sink,分别为 k1、k2、k3,它组成的不再叫做 load_balance,而是叫作 failover

讲到容错,这里会有个问题,三台机器容错,到底谁先干活,谁是备份比如这里的2、3、4,同一时间只能有一个到底是谁,flume 当中,通过一个权重的数字来表示的,这个属性叫做优先级,这个词背后的数字的绝对值越大表示的优先级越高,我们这里有三个 sink, 分别是5、7、6绝对值来看7对应的 k2 优先级最高,它应该先消费,就是说当它消费的时候 k1 k3 都是份,也只有当 k2 出现故障之后k3 顶上,再之后 k1 可以顶上

最后还有个参数,叫做最大的惩罚时间20秒钟就是在 flume 实现容错的时候会有一个优先级的列表,如果当中有一个 sink 现故障,比如 k2 出现故障它会首先把它转移到失败的一个池子当中,给一个冷却的时间。

在这个冷却的时间内,如果能够成功地接受处理sink,就认为能够恢复了,说明没有问题,反之,如果状态没有恢复,这个惩罚的时间将会越来越多,这就是相当于先判一个缓刑最后判个死刑,果你能够将功补过,再把你拉回来就是一个活跃的池子和一个冷却的池子,一个优先级概念,核心要记住,这里面根据属性的优先级来决定谁是备份谁先干活如果不指定这三个参数,就根据 sink 的顺序来确定排在前面的先执行排在后面的后执行


三、演示


打开参考资料在资料下面有一个叫做 failover这里还是node-1、node-2、node-3三台机器来做一个演示,这里面涉及两级

把这个配置来修改一下事实上看到这里可以发现跟负载均衡,基本上核心配置差不多需要改的就是里面的 type,一个叫做 load_banlance,一个叫做failover,接下来做一个相关的修改

首先来到第一台机器了方便,把之前的配置删除掉,接下来使用V编辑器重新编辑一下,把名字复制一下然后做一个粘贴接下来里面的核心配置复制过来

图片4.png

接下来看一下第二级和第三级跟之前的一样,,也是接收端口接收数据绑定即可把数据打印屏幕终端上这一块跟之前一样,这里就不再进行配置了可以直接使用之前的配置。cd conf 当中做一个查看,可以发现已经配置好了

图片5.png

启动完成配置完成之后接下来就做一个集群的启动,从远离数据第二节开始启动,复制启动命令首先来到 node-3回车,接下来回到 node-2 中,cd.. 也给它做一个启动启动完之后,接下来到第一当中,把第一也启动一下,第一的启动命令复制过,启动完成之后,可以发现23两台机器报信息说成功的连接上,整个串联的架构体系对接完成接下来去模拟数据的产生,它用来追踪的数据是叫做 456.log因此接下来可以用循环来写一下,睡0.5秒钟睡得稍微慢点。

图片6.png

可以发现当执行 shell 命令的时候文件就会有数据产生,一旦有数据产生,第一台机器就会去采集到数据,接下来可以发现第二台机器开始打印数据了,第三机器依然没有任何信息因为它是一个备份,现在处理数据的全是第二台机器通过当中的参数,可以确认一下 k1 的权重是10,那么它所代表的机器就是 node-2,node-3 将会存在备份一直在这里,除非 node-2 出现故障。

接下来看一下怎样实现故障转移和容错能力,手动结束一下进程结束完发现一旦结束这里立马报了错,说连接失败

图片7.png

node-2 连接不上第三的机器依然可以连接,依然可以接受数据,这样就容忍了一次错误的发或者说发生了一次错误的转移,把第二台机器的故障转移走第三接着替它继续干活,保证了业务的稳定性,这就是 failover 的实现。

这时候如果把第三台机器再关掉就不能容错了。所以里会有一个冲突,设置的备份越多,容错能力越强,但是浪费资源越严重。如果第二台机器永远不出故障,后面的机器永远白白地浪费了。

这就是在 failover 在 flume 中的实现,它所解决的就是单点故障问题一个人容易出现问题,多个人一起来备份的解决,只有当第一个挂第二个顶上第二个挂掉,第三个顶上,弄清对比理解一下负载均衡跟容错之间的别。

相关文章
|
2月前
|
域名解析 Linux Apache
Linux Apache服务详解——虚拟网站主机功能实战
Linux Apache服务详解——虚拟网站主机功能实战
44 5
|
8月前
|
存储 物联网 数据管理
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(12)
现在到了使用Apache IoTDB进行IoT相关开发的架构设计与功能实现的最后一个环境,在本文中我将向大家介绍IoTDB的查询语言。IoTDB为咱们广大开发者提供了类似SQL的查询语言,用于与IoTDB进行交互,查询语言可以分为4个主要部分:架构语句、数据管理语句、数据库管理语句、功能。
139 0
|
8月前
|
SQL 物联网 Apache
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(11)
目前,IoTDB中不存在冲突的权限,因此用户的真正权限是用户自身权限和用户角色权限的结合。也就是说,要确定用户是否可以执行操作,取决于用户自己的权限之一或用户角色的权限是否允许该操作。用户自己的特权和用户角色的特权可能会重叠,但这并不重要。
136 1
|
8月前
|
SQL 传感器 物联网
使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(10)
物联网提供限制/限制条款和偏移/偏移子句,以使用户对查询结果有更多的控制权。使用 LIMIT 和 SLIMIT 子句允许用户控制查询结果的行数和列数,使用 OFFSET 和 SOFSET 子句允许用户设置结果的起始位置进行显示。
|
2月前
|
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) 类问题整理+其他类型问题总结】【避坑指南】
69 2
|
2月前
|
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 并验证
40 0
|
2月前
|
运维 Linux Apache
LAMP架构调优(九)——Apache Rewrite功能实战
LAMP架构调优(九)——Apache Rewrite功能实战
15 1
|
2月前
|
消息中间件 JSON Kafka
实战 | Apache Hudi回调功能简介及使用示例
实战 | Apache Hudi回调功能简介及使用示例
19 0
|
2月前
|
监控 Java Apache
|
2月前
|
存储 SQL Apache
Apache Hudi 1.x 版本重磅功能展望与讨论
Apache Hudi 1.x 版本重磅功能展望与讨论
45 4

推荐镜像

更多