1介绍

Keepalived是linux下一个轻量级的高可用解决方案,与HeartBeat,RoseHA实现的功能类似,但是还是有差别。HeartBeat是一个专业的功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测,资源接管,检测集群系统服务,功能很强大,但是部署和使用比较麻烦。Keepalived主要通过虚拟路由冗余来实现高可用,部署配置比较简单。

2 Keepalived是什么

1. Keepalived起初是为lvs设计的,专门用来检测集群系统中各个系统服务节点中的状态。

Keepalived检测节点,当检测到异常节点的时候,将有问题的节点从服务器中剔除,当故障节点恢复后,Keepalived又可以将服务节点重新加入到服务器集群中。

2. Keepalived加入VRRP功能,VRRP(虚拟路由器冗余协议)可以解决静态路由出现的单点故障。可以实现网络不间断运行。

3 VRRP协议与工作原理(keepalived的高可用原理)

解决单点瓶颈~~~~~~VRRP他是一种主备模式的协议,它可以在网络发生故障的时候透明的进行设备切换而不会影响主机之间的通信,涉及物理路由器和虚拟路由器的概念。

VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器可以通过虚拟一个或者多个ip来对外提供服务,而在虚拟路由器内部是多个物理路由器协调工作,

但同一时间只有一台物理路由器对外服务,这台物理路由器称为主路由,master角色。其他物理路由器不提供对外网络功能,只是仅仅接受master的VRRP状态信息,他们被称为备份路由器,backuo角色。

一般情况master由选举产生,当主路由失败时,备份路由将重新选举,产生一个新的主路由进入master角色来继续对外提供服务,整个过程对用户完全透明。

每个虚拟路由器有一个唯一标识,叫做VRID,一个VRID和一组IP地址构成一个虚拟路由器。处于backup角色的路由器只接收来自master发来的报文信息,来监控master的运行状态,当master不可以时,backup无法接收到master发来的报文信息,

就认定master出现故障,接着就会选举产生master,这样保证服务持续可用。

4 keepalived对服务器运行状态检测和监控的工作原理

Keepalived工作在tcp/ip模型的第三第四第五层,也就是,网络层,传输层,应用层。

1网络层中

有4个重要协议,互联网协议IP,控制报文协议icmp,地址转换协议ARP,以及反向地址转换协议RARP.,在网络层,它采用ICMP协议像服务器集群中的每个节点发送一个icmp包,如果某个接地单没有返回响应的包,就认为节点除了故障,,报告节点,并且将节点从集群中剔除。

2传输层:

有两个重要协议,传输控制协议tcp和用户数据协议udp。

tcp提供可靠的数据传输服务,keepalived在传输层就是利用tcp协议的端口连接,和扫描技术来判断集群节点是否正常。比如web的80,ssh的22端口,keepalived一旦在传输层探测到这些端口没有数据包返回,就认为这些端口发生异常,强制将这些端口对应的节点从集群中剔除。

3应用层

可以在应用层运行ftp,telnet,Smtp,DNS等不同类型的高级协议,用户可以自定义Keepalived的工作方式,如:用户通过自定义脚本程序来运行Keepalived,而Keeplived将根据用户的设定来检查各种程序或者服务是否正常,如果检测异常,将对应的节点从集群中剔除。

5Keepalived的体系结构

Keepalived体系结构图
包含两部分1,用户空间层,和内核空间层
先说内核空间层:
位于最底层,包含两个模块IPVS和NETLINK两个模块.其中IPVS模块是第三方模块,主要是和负载均衡集群有关
IPVS默认包含在LVS中。
NETLINK模块主要来实现一些高级路由框架,和一些相关的网络功能,完成用户空间层Netlink Reflector模块发来的各种网络请求
用户空间层:
4个部分
Scheduler I/O Multiplexer.---负责安排Keepalived内部的所有任务请求。
Memory Management -----是一个内存管理机制,提供了访问内存的一些方法。
control Plane-------Keepalived的控制面板,可以实现对配置文件进行编译和解析,Keepalived的配置文件解析比较特殊,它并不是一次解析所有模块的配置,只是在用到的时候才解析相应配置。
Core components------是Keepalived的核心组件,包含一系列的功能模块,主要有,
watchDog,----原理是针对被监视的目标设置一个计数器和一个阈值,WatchDog会自己增加计数值,然后等待被监视的机器周期性的重置该计数值,一旦监控目标发生错误,就会无法重置此计数值,watchDog就会检测到,采取回复措施
Keepalived就是通过watchDog的运行机制来监控Checker和VRRP进程的。

Checkers,实现对服务器状态的检测和故障隔离。

VRRP Stack,可以实现HA(高可用)集群中失败的切换功能。通过此功能然后结合LVS可以构建高性能的负载均衡集群系统。

IPVS wrapper,可以将设置好的IPVS规则发送到内核空间并且提交给IPVS模块,最终实现负载均衡的功能。
Netlink Reflector-----用来实现高可用集群中Failover时虚拟IP的设置和切换。Netlink Reflector的所有请求最后都发送到内核空间层的NETLINK模块来完成

结构图:

高性能集群软件Keepalived(1)的更多相关文章

  1. 高性能集群软件keepalived

     Keepalived介绍 以下是keepalive官网上的介绍.官方站点为http://www.keepalived.org.         Keepalived is a routing sof ...

  2. 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)

    大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...

  3. LVS集群和Keepalived高可用实战

    第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...

  4. Linux 高可用(HA)集群之keepalived详解

    http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...

  5. 高可用集群之keepalived+lvs实战-技术流ken

    keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...

  6. 高性能集群(HPC

    串行计算与并行计算1.串行计算串行计算是指在单个计算机(拥有单个中央独立单元) 上执行软件写操作.CPU 逐个使用一系列指令解决问题.为了加快处理速度,在原有的串行计算的基础上演变出并行计算2.并行计 ...

  7. 高可用集群之keepalived+lvs实战2

    keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...

  8. 高可用集群之keepalived+lvs实战

    keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...

  9. Deinstall卸载RAC之Oracle软件及数据库+GI集群软件

    Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...

随机推荐

  1. iOS开发-UI 从入门到精通(五)

    近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕): 但是放到更 ...

  2. 时间戳转化为日期TimeStamp转NSDate转NSString

    //时间戳处理 NSInteger time = [self.album.updatedAt integerValue] / 1000; NSNumber *timer = [NSNumber num ...

  3. cocos2dx骨骼动画Armature源码分析(一)

    源码分析一body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-to ...

  4. android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)

    原地址 :http://www.cnblogs.com/wangmars/p/3914090.html SQLite,是一款轻型的数据库,被广泛的运用到很多嵌入式的产品中,因为占用的资源非常少,二其中 ...

  5. CocoaPods的使用及安装

    本文转自:http://www.jianshu.com/p/6e5c0f78200a 一.什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理.开发i ...

  6. Retrofit 入门学习

    Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...

  7. Android中的HTTP通信

    前言:近期在慕课网学习了慕课网课程Android中的HTTP通信,就自己总结了一下,其中参考了不少博文,感谢大家的分享. 文章内容包括:1.HTTP简介2.HTTP/1.0和HTTP/1.1之间的区别 ...

  8. 关于git,你需要知道一点命令

    最近有朋友经常问git的一些操作,写在这里与大家分享,以后也不用一一解释了.惯例,这是基础分享,从安装开始说起: 安装: 去这里 https://git-scm.com/ 找到你所需要的版本,下载并安 ...

  9. [转]看懂UML类图

    这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图所表达的含义和最终的代码 ...

  10. MongoDB学习笔记~索引提高查询效率

    回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...