上一篇《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