keepalived 和 zookeeper的區別

二者均可以作高可用HA,那麼有什麼區別呢?

1.從主被動的角度考慮nginx

    咱們知道,nginx server一般和keepalived進行結合,那麼keepalived是怎麼知道nginx是否存活呢?是nginx主動向keepalived彙報信息?不是的。keepalived是主動向nginx發送請求,若是有響應,那麼則nginx可用。數據庫

    對於zookeeper而言,HDFS,HBase,Yarn基於zookeeper作高可用,這裏的zookeeper就是被動的,也就是說HDFS,HBase,Yarn主動向zookeeper中寫數據。後端

2.從負載的角度來考慮負載均衡

    keepalived能夠幫助咱們作到主從,主從的劃分是經過配置文件(主從的priority之差>50)指定的,若是主沒有掛掉,那麼大量的請求經過主而後負載到後端的nginx,而從若是想要起做用只有等到主掛掉。分佈式

    而利用zookeeper作HA,zookeeper中能夠說是「人人平等」,客戶端不管訪問follower,仍是observer,異或是leader,都能給咱們返回相應的結果,能夠很好的實現了負載均衡,這也能夠說是zookeeper的一個優勢。spa

3.從存儲數據的角度orm

    keepalived不能夠存儲數據,假設keepalived的主如今有50個鏈接,若是沒有外部數據庫存儲這些鏈接的信息,主掛了的話,鏈接信息也就丟了,因此使用keepalived須要一個外部的數據庫,可是若是主掛了的同時數據庫也掛了,那麼就over了,信息就會丟失,或者從起來後,連不上數據庫,那麼以前的鏈接信息也會丟失。server

    zookeeper能夠存儲數據,zookeeper中能夠建立一個zNode,裏面存放數據,zookeeper能夠作到一個分佈式數據的一致性,zookeeper中每一個節點的視圖是一致的,數據自己能夠作到最終一致性,也就是說其中一個server掛了,其餘的server還有存的數據,那麼這樣的話就不須要額外的數據庫,zookeeper自己就能夠存儲必定量的信息。這也能夠說是zookeeper的另外一個優勢。kafka

4.從業務的角度it

    keepalived能夠說比較簡單,只須要簡單的配置一下就能夠了,使用keepalived的場景:若是咱們只須要簡單的知道當前的業務中哪一個是主,哪一個是從,那麼能夠選用keepalived。

    若是除了高可用之外,好比kafka,storm等還要想zookeeper中寫一些數據,這時候就須要zookeeper

相關文章
相關標籤/搜索