高性能集群软件Keepalived(1)
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)的更多相关文章
- 高性能集群软件keepalived
Keepalived介绍 以下是keepalive官网上的介绍.官方站点为http://www.keepalived.org. Keepalived is a routing sof ...
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- LVS集群和Keepalived高可用实战
第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...
- Linux 高可用(HA)集群之keepalived详解
http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...
- 高可用集群之keepalived+lvs实战-技术流ken
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- 高性能集群(HPC
串行计算与并行计算1.串行计算串行计算是指在单个计算机(拥有单个中央独立单元) 上执行软件写操作.CPU 逐个使用一系列指令解决问题.为了加快处理速度,在原有的串行计算的基础上演变出并行计算2.并行计 ...
- 高可用集群之keepalived+lvs实战2
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- 高可用集群之keepalived+lvs实战
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- Deinstall卸载RAC之Oracle软件及数据库+GI集群软件
Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...
随机推荐
- Android 手机卫士--设置界面&功能列表界面跳转逻辑处理
在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...
- RoboGuice 3.0 (二)进阶篇
上篇介绍了RoboGuice的接入及基本使用,其中涉及到了一个@Singleton和@ContextSingleton的注解,这些都是作用域的注解,这篇我们先说明有关作用域的问题. 一.作用域 Sco ...
- 第一课 ionic 日志输出
写程序的首要问题就是要打印日志,因为只有将日志输出才能真正了解程序的运行状态. 日志输出有两种方式 1.console输出 console.log("测试一下") console. ...
- XML语言基础2 DTD
XML DTD 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档结构. DTD可被声明于XML文档中,也可以作为一个外部的引用. 内部的DOCTYPE声明 假如D ...
- jQuery标签选择器
$(function() { //alert("hello jquery"); //选择器 //id选择器 $("#bt1").click( function( ...
- .NET框架设计(常被忽视的C#设计技巧)
阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的对象如虎添翼(要学会使用扩展方法的设计思 ...
- FFmpeg编译找不到库文件
在编译FFmpeg的时候,用./configure 进行配置,经常会出现找不到库文件的情况,原因大概就两个: 1.没有安装库文件或者安装的库文件版本不对 2.FFmpeg没有找到库文件 前者的问题好解 ...
- jquery $.trim()去除字符串空格详解
jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...
- 理解 Node.js 里的 process.nextTick()
有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...
- [bootstrap]bootstrap2如何引导div垂直居中
参考网址:http://www.4byte.cn/question/138712/bootstrap-how-to-center-vertical.html 部分参考自上面网页中的方法.用过boots ...