KeepAlived的介绍
KeepAlived介绍
keepalived
keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机或工作出现故障,Keepalived将检测到,会将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。
一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
keepAlived和LVS完全不是同一个概念,它们是独立互不影响的完成自己的工作。
keepAlived是工作在LVS之上的,所谓的工作在之上,是keepAlived自身的模块通过配置文件调用ipvsadm命令对LVS进行配置,实现负载均衡。
LVS通过负载均衡实现对服务器的高扩展性。
keepAlived通过自身的子进程对LVS进行健康检查,实现LVS的高可用性(即防止LVS崩溃,发送主从服务器的健康状态和通知切换主从LVS)。
Layer3,4&7工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3,网络层:
Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。
Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4,传输层:
Layer4主要以TCP端口的状态来决定服务器工作正常与否。
如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer7,应用层:
Layer7就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。
Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
相关缩略词
VRRP virtual router redundancy protocol 虚拟路由器冗余协议
NQA network quality analyzer 网络质量分析
BFD bidirectional forwarding detection 双向转发检测
IRDP icmp router discovery protocol icmp 路由发现协议
VRID virtual router id 虚拟路由器号
AVF active virtual forwarder 活动虚拟路由转发器
LVF listening virtual forwarder 监听虚拟路由转发器
术语
虚拟路由器:
Virtual Router,由一个Master路由器和多个Backup路由器组成,主机将虚拟路由器当作默认网关。
虚拟路由器标识:
VRID(0-255),唯一标识虚拟路由器,有相同的VRID的一组路由器构成一个虚拟路由器。
master路由器:
主设备,虚拟路由器中承担报文转发任务的路由器
backup路由器:
备用设备,master路由器出现故障时,能够代替master路由器工作的路由器
VIP :
Virtual IP,虚拟路由器的ip地址,一个虚拟路由器可以有一个或多个ip地址
VMAC :
Virutal MAC (00-00-5e-00-01-VRID),一个虚拟路由器拥有一个虚拟MAC地址,虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。
通常情况,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。
priority :
优先级,VRRP根据优先级来确定虚拟路由器中每台路由器的地址。
通告:
心跳,优先级等;周期性
工作方式:
抢占式,非抢占式
安全工作,认证:
无认证
简单字符认证,预共享密钥
MD5
工作模式:
主/备:单虚拟路径器
主/主:主/备(虚拟路径器1),备/主(虚拟路径器2)
keepalived的主要作用
主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
vrrp 协议完成地址流动
为vip 地址所在的节点生成ipvs 规则(在配置文件中预先定义)
为ipvs 集群的各RS 做健康状态检测
基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务
高可用web架构是LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选可不选)
keepAlived有三个进程
VRRP协议子进程(VRRP child),healthcheck子进程(Healthchecking child),WatchDog父进程。
每个子进程都有其独立的多连接I/O调度方式,这种设计一方面有利于优化VRRP调度的稳定性,同时也有利于避免进程自身可能存在的因素导致调度不稳定甚至失灵。
1》父进程是全局进程,专门负责forked子进程并且监控子进程的状态,也就是管理两个子进程。
父进程的监控框架被命名为WatchDog,其工作原理是,每个子进程open一个UNIX-doman socket套接字,然后父进程会连接这些套接字,并以5s为周期发送hello信息给子进程来检查进程是否存活。
如果不能发送hello了,其会重启子进程。
WatchDog有两个好处,一个是所有的hello包是通过I/O多链路的方式调度给子进程,这种方式可以及时发现子进程的调度体系结构是否死循环,另一个是使用sysV的信息检测子进程的调度体系。
2》VRRP协议子进程负责VRRP框架,负责实现VRRP协议及主从之间的通信。
3》healthcheck子进程辅助检查LVS和HTTP的健康状态。
keepAlived组件

参考文档:
http://www.keepalived.org/documentation.html
核心组件:
vrrp stack
ipvs wrapper
checkers
控制组件:配置文件分析器
IO 复用器
内存管理组件
Control Plane :
Keepalived配置通过文件keepalived.conf完成。
编译器设计用于解析。
解析器使用关键字树层次结构将每个配置关键字映射到具体的处理程序。
中央多级递归函数读取配置文件并遍历关键字树。
在解析期间,配置文件被转换为内部存储器表示。
Scheduler - I/O Multiplexer :
所有事件都安排在同一进程中。
Keepalived是一个单一的过程。
Keepalived是一个网络路由软件,它对I / O非常封闭。
这里使用的设计是一个中央选择(...),负责调度所有的内部任务。
POSIX线程库不被使用。
该框架为网络目的提供了自己的线程抽象优化。
Memory Management :
这个框架提供了一些通用的内存管理功能,如分配,重新分配,发布等。
这个框架可以在两种模式下使用:normal_mode&debug_mode。
当使用debug_mode时,它提供了一种强有力的方法来消除和跟踪内存泄漏。
这个低级别环境通过跟踪分配内存并发布来提供缓冲区欠运行保护。
所有使用的缓冲区都是长度固定的,以防止最终的缓冲区溢出。
Core components :
此框架定义了所有代码中使用的一些常用和全局库。
这些库是:html解析,链接列表,定时器,向量,字符串形成,缓冲区转储,网络工具,守护进程管理,pid处理,低级TCP层4。
这里的目标是将代码分解为最大限度地将代码重复,以增加模块化。
WatchDog:
此框架提供子进程监视(VRRP和Healthchecking)。
每个子进程接受连接到自己的看门狗unix域套接字。
父进程向该子进程unix域套接字发送“hello”消息。
Hello消息使用父节点上的I / O多路复用器发送,并使用I / O多路复用器进行接收/处理。
如果父进程检测到断开的管道,如果子进程仍然存在并重新启动,则使用sysV信号进行测试。
Checkers :
这是Keepalived的主要功能之一。
Checkers负责realserver健康检查。
如果realserver存在,则进行检查测试,此测试以二进制决定结束:从LVS拓扑中删除或添加realserver。
内部检查器设计是实时网络软件,它采用完全多线程的FSM设计(有限状态机)。
此检查器堆栈提供LVS拓扑操作,以按层4到层5/7测试结果。
它在一个由父进程监视的独立进程中运行。
VRRP Stack :
其他最重要的Keepalived功能。
VRRP(虚拟路由器冗余协议:RFC2338)专注于导演接管,为路由器备份提供低级设计。
它实现了完整的IETF RFC2338标准,具有LVS和防火墙设计的一些规定和扩展。
它实现了vrrp_sync_group扩展,保证协议接管后的持久路由路径。
它使用MD5-96位密码提供实现IPSEC-AH,用于保护协议广告交换。
有关VRRP的更多信息,请阅读RFC。
重要的事情:VRRP代码可以在没有LVS支持的情况下使用,它被设计为独立使用。
它运行在由父进程监视的独立进程中。
System call :
该框架提供了启动额外系统脚本的功能。
它主要用于MISC检查器。
在VRRP框架中,它提供了在协议状态转换期间启动额外脚本的功能。
系统调用完成到一个分叉进程,不能全局调度定时器。
Netlink Reflector :
与IPVS包装器相同。
Keepalived工作与自己的网络接口表示。
IP地址和接口标志通过内核Netlink通道进行设置和监控。
Netlink消息传递子系统用于设置VRRP VIP。
另一方面,Netlink内核消息广播功能用于反映我们的用户空间Keepalived内部数据表示与接口相关的任何事件。
因此,任何其他用户空间(其他程序)netlink操作通过Netlink内核广播(RTMGRP_LINK和RTMGRP_IPV4_IFADDR)反映到我们的Keepalived数据表示。
SMTP:
SMTP协议用于管理通知。
它实现了IETF RFC821 使用多线程FSM设计。
发送管理通知用于healthcheckers活动和VRRP协议状态转换。
SMTP是常用的,可以与任何其他通知子系统(如GSM-SMS,寻呼机,...)进行接口
IPVS wrapper :
此框架用于向内核IPVS代码发送规则。
它提供了Keepalived内部数据表示和IPVS rule_user表示之间的转换。
它使用IPVS libipvs来保持与IPVS代码的通用集成。
IPVS:Wensong
从LinuxVirtualServer.org OpenSource Project 提供的Linux内核代码。
NETLINK:
由Alexey Kuznetov提供的Linux内核代码,其非常好的高级路由框架和子系统功能。
KeepAlived的介绍的更多相关文章
- Keepalived详细介绍简介
1.1.Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可 ...
- keepalived配置介绍
第一节 keepalived 高可用集群: 系统的可性= MTBF /(MTBF+MTTR) 系统可用时间,系统故障修复时间. 活动的节点将通过心跳不停的将自己的状态信息同步到备用节点上,一但主节点挂 ...
- Keepalived高可用集群介绍
1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...
- keepalived介绍
keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但是它 ...
- lvs keepalived 安装配置详解
前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较.F5相当的贵,真不是一般企业能负担的起的.负载均衡软件也用过不少,nginx,apache,hapro ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- keepalived工作原理
keepalived是一个类似于Layer2,4,7交换机制的软件.是Linux集群管理中保证集群高可用的一个服务软件,其功能是用来防止单点故障. keepalived的工作原理: ...
- 使用Keepalived配置主从热备实现Nginx高可用(HA)
Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务 ...
- Nginx+keepalived高可用配置实战(内附彩蛋)
1.整体架构图如下 2.环境准备 今天所配置的是keepalived+nginx 的负载均衡 下载keepalived软件 [root@LB01 tools]# wget http://www.kee ...
随机推荐
- 转载:Django之Form组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 +? 1 2 3 ...
- [WPF自定义控件库]为Form和自定义Window添加FunctionBar
1. 前言 我常常看到同一个应用程序中的表单的按钮----也就是"确定"."取消"那两个按钮----实现得千奇百怪,其实只要使用统一的Style起码就可以统一按 ...
- ASP.NET获取客户端IP及MAC地址
朋友最近问如何获取客户端IP及MAC地址,一直想把这段给整理一下,契机来了:下边分为了C#后台获取的方法和前台Javascript(调用ActiveX)获取的方法,大家如果有好的方法一起讨论撒O(∩_ ...
- 关于Windows 10 初始安装的VS2013 SSDT-BI 的BUG 问题
初始安装,正常安装会出现以下出现信息,随后会被告知未安装成功. 关于SSDT-BI信息可以参见这里 http://jimshu.blog.51cto.com/3171847/1420469 从Wind ...
- Jmeter关联-获取token值
1. token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件:也叫关联 2. cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某 ...
- 九度oj 题目1490:字符串链接
题目1490:字符串链接 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2610 解决:1321 题目描述: 不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char ...
- MTK平台如何定位显示花屏和界面错乱等绘制异常的问题?
[DESCRIPTION] 在测试手机各项功能过程中,经常会遇到概率性复现“屏幕画花了,界面画错乱了等绘制异常问题”,而且概率还非常小: 这类问题请不要直接提交eService,而是先请测试人员及工程 ...
- 乱记结论之OI常用四大数列
一.斐波那契数列 $f(0)=1,f(1)=1,f(i)=f(i-1)+f(i-2) \ \ \ \ (i>=2)$ 经典的解释是兔子生小孩,第0年一对兔子,一对兔子需要一年长大,后面每年都生小 ...
- Java高概率面试题目—finally
在Java面试中关于finally的面试题目出现的概率非常高,而且一旦面试官问起绝不会是蜻蜓点水,而是会向你发起层层递进地“连环问”,并且回答这系列问题常常需要代码的辅助,可谓考验基础的面试利题.究竟 ...
- Linux下汇编语言学习笔记4 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...