Flume + Keepalived构建高可用分布式采集系统

上一篇《Flume之Failover和Load balancing原理及实例》的实例的架构如下:

10.0.1.76作为Client,通过exec获取nginx的日志信息,然后将数据传到10.0.1.68(配置了Failover和Load balancing)的节点,最后10.0.1.68将数据发送的10.0.1.70,77,85,86,87节点,这些节点最终将数据写到本地硬盘。


那么问题来了,如果10.0.1.68的Flume异常退出或者服务器down机的话,10.0.1.76(Client)无法将数据发送出去。无论Channel采用的MemoryChannel还是FileChannel都会导致数据积压甚至数据丢失,即使10.0.1.68恢复正常,也有可能因为Client积压的数据太多给10.0.1.68节点造成压力,那么有没有更好的方式解决这个问题呢?


下面我们采用Flume + Keepalived的方式解决单点故障,架构改成:


10.0.1.76(Client)通过虚拟IP(10.0.1.71)访问Keepalived绑定的主备节点10.0.1.68和10.0.1.69。这样的话,某个节点挂了keepalived会自动切换,保证程序的正确运行,而不会出现数据积压的情况。

10.0.1.76(Client)的配置修改成:

[java]  view plain  copy
  1. a1.channels.c1.type = memory    
  2. a1.channels.c1.capacity = 1000    
  3. a1.channels.c1.transactionCapacity = 100    
  4.           
  5. a1.sources.r1.channels = c1    
  6. a1.sources.r1.type = exec    
  7. a1.sources.r1.command = tail -n 0 -F /home/nginx/logs/access.log     
  8.     
  9. a1.sinks.k1.type = avro    
  10. a1.sinks.k1.channel = c1    
  11. a1.sinks.k1.hostname = 10.0.1.71  
  12. a1.sinks.k1.port = 41415    
  13.     
  14. a1.channels = c1    
  15. a1.sources = r1    
  16. a1.sinks = k1    

其他的配置不需要更改,10.0.1.68和10.0.1.69的配置保持一致即可。

最后只需要配置keepalived,实现10.0.1.68和10.0.1.69节点的高可用,从而避免单点故障。Keepalived具体的配置参照:《keepalived安装部署及Flume+keepalived高可用


基于Flume的高可用架构可以有很多种方式,大家可以根据自己业务的特点做一些变化,以满足公司业务的需求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值