【Flume】负载均衡环境的搭建 load_balance 和failover ---发送端配置

功能:负载均衡

flume的负载均衡即每次按照一定的算法选择sink输出到指定地方,如果在文件输出量很大的情况下,负载均衡还是很有必要的,通过多个通道输出缓解输出压力

flume内置的负载均衡的算法默认是round robin,轮询算法,按序选择

下面看一下具体实例:

# Name the components on this agent  
a1.sources = r1  
a1.sinks = k1 k2 k3 
a1.channels = c1  
   
# Describe/configure the source  
a1.sources.r1.type = exec  
a1.sources.r1.channels=c1  
a1.sources.r1.command=tail -F /home/test/data/xiaofan.txt
#define sinkgroups  
a1.sinkgroups=g1  
a1.sinkgroups.g1.sinks=k1 k2 k3 
a1.sinkgroups.g1.processor.type=load_balance  
a1.sinkgroups.g1.processor.backoff=true   # 这个里面是个惩罚机制,会有相关文章进行分析
a1.sinkgroups.g1.processor.selector=round_robin  
  
#define the sink 1  
a1.sinks.k1.type=avro  
a1.sinks.k1.hostname=192.168.14.153  
a1.sinks.k1.port=41414

#define the sink 2  
a1.sinks.k2.type=avro  
a1.sinks.k2.hostname=192.168.14.176  
a1.sinks.k2.port=41414

#define the sink 3
a1.sinks.k3.type=avro  
a1.sinks.k3.hostname=192.168.14.171  
a1.sinks.k3.port=41414

# Use a channel which buffers events in memory  
a1.channels.c1.type = memory  
a1.channels.c1.capacity = 1000  
a1.channels.c1.transactionCapacity = 100  
   
# Bind the source and sink to the channel  
a1.sources.r1.channels = c1  
a1.sinks.k1.channel = c1  
a1.sinks.k2.channel=c1
a1.sinks.k3.channel=c1

 小结

1.当三台主机中的一台进程挂掉后,发送端会报错误,但是不影响数据的发送。

2.当挂掉的进程回复后,会继续被接受数据。这里面有个惩罚机制,如果开启的失败的接受端会被等待延迟!

3.当挂掉的进程回复后,发送端会自动添加会发送列表里,报错消失!

4.这个就是一个简单的均衡方式,相当于见了一个sink组,在sink组中的数据被轮询发送!

功能:容错环境的搭建failover

这个地方上面有个小区别,请根据相关需求处理。

上面的是负载均衡,每台机器都会受到数据处理数据,但是有时候业务需求可能需要一台机器为主要一条业务的数据接收器,另一个台在挂掉后才会被启用,这时候这个就有用了。

比如:三台接受机:s1:a业务数据,s2:b业务数据,s3:c业务数据

就可以这样设计了:

s1上配置优先级:s1》s2》s3

s2上配置优先级:s2》s3》s1

s3上配置优先级:s3》s1》s2

只需要和上面一点不同:

#priority越高,优先级越高,会优先使用该sink
a1.sinkgroups=g1  
a1.sinkgroups.g1.sinks=k1 k2  
a1.sinkgroups.g1.processor.type=failover  
a1.sinkgroups.g1.processor.priority.k1=10  
a1.sinkgroups.g1.processor.priority.k2=5  
a1.sinkgroups.g1.processor.maxpenalty=10000
posted @ 2016-12-22 15:49  楚时邀月  阅读(1990)  评论(0编辑  收藏  举报