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

相关文章
相关标签/搜索