Flume内置支持Failover和LoadBalance两种模式,这两种模式都支持Sink配置一个Group,Failover的Group具有故障转移的功能,LoadBalance的Group具有负载均衡的功能
- Failover支持故障转移
- LoadBalance支持负载均衡
Failover模式
我这里是用本机模拟此架构,Agent是采集端,分别写入Sink1和Sink2,Collector1和Collector2是Collect端。此架构允许Collector1和Collector2部分停机,需要在采集层(Agent)每一个Sink同时指向Collect层的2个相同的Flume Agent(Collector1和Collector2)。所以使用failover架构就是为了防止Collect层Flume Agent(Collector1和Collector2)因为故障或例行停机维护。
Agent节点的flume_failover_agent.conf配置
|
|
Collector1节点的flume_failover_collector1.conf配置
|
|
Collector2节点的flume_failover_collector2.conf配置
|
|
注意:
- 如果是多台机器实验,Collector1和Collector2的flume.conf配置其实可以是一样的,只是我这里使用的本机测试,所以需要指定不同的port来模拟2台不同的机器,flume.conf配置文件也分开了。
启动Flume
|
|
这时候我们发现采集的日志都在Agent1中的控制台输出,Agent2并没有日志输出。但是我们查看44441和44442端口号发现AgentX和Agent1,Agent2都保持TCP连接的。
|
|
此时我们杀掉Agent1的进程,我们会看到AgentX的控制台会报错提示:Connection Refused无法连接到Agent1。
|
|
这个时候我们再有日志采集会发现日志都输出到Collector2的控制台了,说明我们的failover机制生效了。
LoadBalance模式
同Failover一样,AgentX是采集端,分别写入Sink1和Sink2,Collector1和Collector2是Collect端。此架构支持负载均衡分发处理,需要在采集层(AgentX)每一个Sink同时指向Collect层的2个相同的Flume Agent(Collector1和Collector2)。所以使用loadBalance架构就是为了流量分发,防止流量过于集中到其中某些机器导致服务器负载不均衡或者过载。
Agent节点的flume_loadbalance_agent.conf配置
|
|
Collector1节点的flume_loadbalance_collector1.conf配置
|
|
Collector2节点的flume_loadbalance_collector2.conf配置
|
|
注意:
- 如果是多台机器实验,Collector1和Collector2的flume.conf配置其实可以是一样的,只是我这里使用的本机测试,所以需要指定不同的port来模拟2台不同的机器,flume.conf配置文件也分开了。
启动Flume
|
|
这个时候只要我们不断有日志采集会发现日志会分别输出到Collector1和Collector2的控制台了,说明我们的loadbalance机制生效了。
最后给出别人博客总结的三种模式的对比图,看完就非常清晰明了了
参考文章: