1. 程式人生 > >Flume + Keepalived構建高可用分散式採集系統

Flume + Keepalived構建高可用分散式採集系統

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)的配置修改成:

    a1.channels.c1.type = memory  
    a1.channels.c1.capacity = 1000  
    a1.channels.c1.transactionCapacity = 100  
            
    a1.sources.r1.channels = c1  
    a1.sources.r1.type = exec  
    a1.sources.r1.command = tail -n 0 -F /home/nginx/logs/access.log   
      
    a1.sinks.k1.type = avro  
    a1.sinks.k1.channel = c1  
    a1.sinks.k1.hostname = 10.0.1.71
    a1.sinks.k1.port = 41415  
      
    a1.channels = c1  
    a1.sources = r1  
    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的高可用架構可以有很多種方式,大家可以根據自己業務的特點做一些變化,以滿足公司業務的需求。