keepalived VS zookeeper
keepalived VS zookeeper
兩者都可以做高可用HA,那么有什么區別呢?
?
1.從主被動的角度考慮
? ? 我們知道,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的一個優點。
3.從存儲數據的角度
? ? keepalived不可以存儲數據,假設keepalived的主現在有50個連接,如果沒有外部數據庫存儲這些連接的信息,主掛了的話,連接信息也就丟了,所以使用keepalived需要一個外部的數據庫,但是如果主掛了的同時數據庫也掛了,那么就over了,信息就會丟失,或者從起來后,連不上數據庫,那么之前的連接信息也會丟失。
? ? zookeeper可以存儲數據,zookeeper中可以創建一個zNode,里面存放數據,zookeeper可以做到一個分布式數據的一致性,zookeeper中每個節點的視圖是一致的,數據本身可以做到最終一致性,也就是說其中一個server掛了,其他的server還有存的數據,那么這樣的話就不需要額外的數據庫,zookeeper本身就可以存儲一定量的信息。這也可以說是zookeeper的另一個優點。
4.從業務的角度
? ? keepalived可以說比較簡單,只需要簡單的配置一下就可以了,使用keepalived的場景:如果我們只需要簡單的知道當前的業務中哪個是主,哪個是從,那么可以選用keepalived。
? ? 如果除了高可用以外,比如kafka,storm等還要想zookeeper中寫一些數據,這時候就需要zookeeper。
總結
以上是生活随笔為你收集整理的keepalived VS zookeeper的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hadoop3.1.2版本中FsImag
- 下一篇: 日常生活小技巧 -- markdown编