版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高性能集群软件——KeepalivedLinux服务器安全管理高级运维项目11“十四五”高等教育网络空间安全产业人才培养系列丛书“互联网+”新形态立体化一体精品教材+Keepalived01Keepalived简介Keepalived最初是针对LVS进行研发的,专门用于监控集群系统中各个服务节点的状态。后来,Keepalived又加入了VRRP的功能。VRRP(VritualRouterRedundancyProtocol,虚拟路由冗余协议)的出现旨在解决静态路由出现的单点故障问题。通过VRRP,可以实现网络的不间断稳定运行。因此,Keepalived既具有服务器状态检测和故障隔离功能,又具有HAcluster功能。健康检查和失败切换是Keepalived的两大核心功能。健康检查通过TCP三次握手、ICMP请求、HTTP请求和UDPEcho请求等方式对负载均衡器后面的实际服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的“心跳”,当主负载均衡器出现问题时,由备份负载均衡器接管对应的业务,从而最大限度地减少流量损失,并保证服务的稳定性。VRRP协议与工作原理在实际网络环境中,主机之间是通过配置静态路由或默认网关进行通信的,一旦主机之间的路由器发生故障,通信将会中断。因此,在这种通信模式下,路由器成了一个单点瓶颈。为了解决这个问题,引入了VRRP。VRRP是一种容错协议,它通过将几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来确保当主机的下一跳设备出现故障时,可以及时将业务切换到其他设备,从而保持通信的连续性和可靠性。虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是真正存在的。从VRPP备份组外面看备份组中的路由器,感觉组中的所有路由器就像一个整体一样。读者可以将其理解为在一个组中,主路由器+所有备份路由器=虚拟路由器。虚拟路由器有一个虚拟IP地址(VIP)和虚拟MAC地址。主机将虚拟路由器当作默认网关。虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。在通常情况下,虚拟路由器在回应ARP请求时使用的是虚拟MAC地址,只有在虚拟路由器进行特殊配置时,才回应真实接口的MAC地址。VRRP协议与工作原理虚拟路由器通过VIP对外提供服务,而在虚拟路由器内部,同一时间内只有一台物理路由器对外提供服务。这台提供服务的物理路由器被称为Master路由器(主路由器)。在一般情况下,Master路由器是通过选举算法产生的,它拥有对外的VIP,提供各种网络功能,如ARP请求、ICMP数据转发等。虚拟路由器中的其他物理路由器不拥有对外的VIP,也不提供网络功能,仅接受Master路由器的VRRP状态通告信息。这些路由器被称为Backup路由器(备份路由器)。当Master路由器失效时,处于Backup角色的Backup路由器将重新进行选举,产生一个新的Master路由器,继续对外提供服务。整个切换过程对用户完全透明。VRRP协议与工作原理VRRP的工作过程大致分为以下几个步骤。(1)在VRRP备份组中,设备选举出Master设备。Master设备通过发送免费ARP报文向与其相连的设备或主机通知虚拟MAC地址,以便承担报文转发任务。(2)Master设备周期性地向备份组内所有Backup设备发送VRRP通告报文。(3)如果Master设备出现故障,则VRRP备份组中的Backup设备将重新选举Master设备。(4)当VRRP组状态切换时,Master设备会从一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和VIP信息的免费ARP报文。这样可以刷新与它相连的主机或设备中的MAC表项,从而将用户流量引导到新的Master设备上,整个过程对用户完全透明。(5)当原Master设备故障恢复时,若该设备是IP地址拥有者(其优先级为255),则直接切换至Master状态。若该设备的优先级小于255,则切换至Backup状态,并且其优先级恢复为发生故障前配置的优先级。(6)当Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master设备。Keepalived的工作原理04010203Keepalived的目的是进行故障切换和转移,它通过VRRP来实现。VRRP通过一种竞选机制将路由的任务分配给某台VRRP路由器。Keepalived的目的是进行故障切换和转移,它通过VRRP来实现。VRRP通过一种竞选机制将路由的任务分配给某台VRRP路由器。Keepalived最初是专为LVS负载均衡软件设计的,用于管理并监控LVS集群系统中各个服务节点的状态。后来,它又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS负载均衡软件,还可以作为其他服务(如NGINX、Haproxy、MySQL等)的高可用解决方案软件。Keepalived主要通过VRRP实现高可用功能。VRRP能够保证当某个节点宕机时,整个网络可以不间断地运行。因此,Keepalived不仅具有配置管理LVS负载均衡软件的功能,还具有对LVS下面节点进行健康检查的功能,并且可以实现系统网络服务的高可用功能。Keepalived的工作原理Keepalived高可用集群的故障切换和转移是基于VRRP来实现的。在正常工作时,VIP会漂移在Master节点上,负责接收和处理用户的任务请求,而其他Backup节点都处于待机状态,或者承担其他业务的主工作;Master节点会不断地向Backup节点发送“心跳”消息(通过多播方式),以通知Backup节点自己的存活状态。当Master节点发生故障时,将无法发送“心跳”消息,导致Backup节点无法继续检测到来自Master节点的“心跳”消息。Backup节点会立即触发接管程序,接管Master节点的VIP资源和服务。在抢占模式下,当Master节点恢复故障后,Backup节点会释放在Master节点故障期间接管的VIP资源和服务,恢复为Backup角色。在非抢占模式下,Backup节点在接管Master节点的VIP资源和服务后,在未发生故障的情况下不会放弃Master角色,原Master节点在修复后会充当Backup角色。Keepalived的工作原理Keepalived工作在网络参考模型中的网络层、传输层和应用层。Keepalived对服务器运行状态和故障隔离的工作原理如下。(1)网络层(第三层):Keepalived通过ICMP向服务器集群中的每个节点发送一个ICMP数据包(类似于ping的功能)。如果某个节点没有返回响应数据包,那么Keepalived认为该节点发生了故障,将标记这个节点失效,并从服务器集群中移除该故障节点。(2)传输层(第四层):Keepalived在传输层利用TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常。例如,对于常见的Web服务80端口或SSH服务22端口,一旦Keepalived在传输层探测到这些端口号没有数据响应或数据返回,就认为这些端口发生异常,并强制将这些端口所对应的节点从服务器集群中移除。(3)应用层(第五层):Keepalived的运行方式变得更加全面和复杂。用户可以通过自定义Keepalived工作方式(编写程序或脚本)来运行Keepalived;Keepalived将根据用户的设定参数检测各种程序或服务是否允许正常运行。如果Keepalived的检测结果与用户设定的不一致,则Keepalived会将对应的服务器从服务器集群中移除。Keepalived的体系结构从全局上看,Keepalived的体系结构可以分为两层,分别是用户空间层(UserSpace)和内核空间层(KernelSpace)。内核空间层位于底层,涵盖IPVS和NETLINK两个模块。IPVS模块是Keepalived引入的一个第三方模块,通过IPVS可以实现基于IP地址的负载均衡集群。IPVS默认包含在LVS集群软件中。在LVS集群中,IPVS被安装在一台名为DirectorServer的服务器上,同时在DirectorServer上虚拟出一个IP地址(VIP),对外提供服务。用户只能通过这个VIP访问服务。这个VIP一般被称为LVS的VIP,即VirtualIP。访问的请求首先经过VIP到达DirectorServer,然后由DirectorServer从服务器集群节点中选择一个服务节点来响应用户的请求。Keepalived最初为LVS提供服务。由于Keepalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡,因此Keepalived通过第三方模块IPVS协作,可以轻松地搭建一套负载均衡系统。然而,这里有一个误解:由于Keepalived可以与IPVS一起协同工作,因此很多人认为Keepalived是一个负载均衡软件,这种理解是不正确的。Keepalived的体系结构在Keepalived中,IPVS模块是可配置的。如果需要启用负载均衡功能,则可以在编译Keepalived时打开负载均衡功能;同样,也可以通过配置编译参数来关闭负载均衡功能。NETLINK模块主要用于实现一些高级路由框架和一些相关的网络功能,以处理用户空间层NetlinkReflector模块发来的各种网络请求。用户空间层位于内核空间层之上,Keepalived的所有具体功能都在这里实现。下面介绍几个重要部分所实现的功能。在用户空间层,Keepalived又可以分为4部分,分别是SchedulerI/OMultiplexer、MemoryManagement、ControlPlane和CoreComponents。其中,SchedulerI/OMultiplexer是一个I/O复用分发调度器,其职责是安排Keepalived所有内部的任务请求。MemoryManagement是一个内存管理机制,提供了一些通用方法来访问内存。ControlPlane是Keepalived的控制面板,用于对配置文件进行编译和解析。Keepalived的配置文件解析比较特殊,它不是一次解析所有模块的配置,而是在需要使用某个模块时才解析相应的配置。CoreComponents是Keepalived的核心组件,包含一系列模块,主要有WatchDog、Checkers、VRRPStack、IPVSWrapper和NetlinkReflector。+Keepalived
的安装与配置02Keepalived的安装首先安装Keepalived,可以通过yum源和源码编译两种方式进行安装。通过yum源方式安装的流程如下。(1)输入以下命令安装依赖包。(2)输入以下命令初始化及启动Keepalived。Keepalived的安装通过源码编译方式安装的流程如下。(1)在官网下载最新版本的Keepalived(这里以Keepalived2.0.7为例),解压缩并进行安装。Keepalived的安装(2)在完成后,会在相应路径生成文件。(3)初始化及启动Keepalived。Keepalived启动脚本中引用的变量文件的默认文件路径为/etc/sysconfig/,读者可以直接修改启动脚本中的文件路径(在安装目录下),而不需要创建软链接。Keepalived的安装将Keepalived主程序加入环境变量(在安装目录下)。将Keepalived启动脚本(在源码目录下)放到/etc/init.d/目录下,即可方便地使用service命令进行调用。Keepalived的安装(4)以下是一些命令操作。加入系统服务:chkconfig-addkeepalived。开机启动:chkconfig
keepalivedon。查看开机启动的服务:chkconfig-list。启动、关闭、重新启动:servicekeepalived
start|stop|restart。Keepalived的全局配置在安装完Keepalived后,需要在keepalived.conf文件中配置HA(HighAvailability,高可用性)和负载均衡。一个功能比较完整且常用的Keepalived配置文件主要包含3个块:全局定义块、VRRP实例定义块和虚拟服务器定义块。其中,全局定义块是必需的,如果Keepalived仅用于HA,则虚拟服务器定义块是可选的。下面是一个功能比较完整的配置文件参考模板:Keepalived的VRRP配置Keepalived的基础功能应用实例在默认情况下,Keepalived可以监控系统死机、网络异常及Keepalived本身的状态,即当系统出现死机、网络出现故障或Keepalived进程出现异常时,Keepalived会进行主备节点的切换。但这些仍然无法满足需求,因为集群中运行的服务可能会随时遇到问题。因此,需要对集群中运行服务的状态进行监控,一旦服务出现问题,就进行主备节点切换操作。Keepalived作为一款优秀的高可用集群软件,也考虑到了这一点,它提供了vrrp_模块,用于监控集群中的服务资源。通过vrrp_script模块实现对集群资源的监控在一般情况下,使用Keepalived进行热备份可以将一台服务器设置为Master服务器,另一台服务器设置为Backup服务器。当Master服务器出现异常时,Backup服务器会自动切换为Master服务器,但当Backup服务器成为Master服务器后,原Master服务器恢复正常后会再次抢占成为Master服务器。然而,这会导致不必要的主备切换。因此,可以将两台服务器的Keepalived初始状态均设置为Backup状态,并设置不同的优先级,通过对优先级较高的服务器设置nopreempt来解决异常恢复后再次抢占的问题。Keepalived只能实现对网络故障和自身状态的监控,即当网络出现故障或Keepalived本身出现问题时进行主备切换。然而,这些仍无法满足需求,因为我们还需要监控Keepalived所在服务器上的其他业务进程,如NGINX。通过Keepalived+NGINX,可以实现NGINX的负载均衡高可用性。如果NGINX出现异常,仅有Keepalived保持正常是无法保证系统正常运行的,因此需要根据业务进程的运行状态决定是否进行主备切换。这时,我们可以通过编写脚本对业务进程进行检测监控。Keepalived集群中Master和Backup角色选举策略在Keepalived集群中,并没有严格意义上的主备节点,虽然可以在Keepalived配置文件中通过state选项将节点设置为Master状态,但是这并不意味着此节点就一直是Master角色。Keepalived配置文件中的priority值可以控制节点角色,但它并不能控制所有节点的角色。另一个改变节点角色的因素是在vrrp_script模块中设置的weight值。priority和weight选项都对应一个整数值,其中weight值可以是个负整数。节点在集群中的角色取决于这两个值的大小。在一个一主多备的Keepalived集群中,priority值最大的节点将成为集群中的Master节点,而其他节点都是Backup节点。在Master节点发生故障后,Backup节点之间将进行选举,通过计算节点的优先级值priority和weight值,选出新的Master节点来接管集群服务。在vrrp_script模块中,如果不设置weight值,那么集群优先级的选择将由Keepalived配置文件中的priority值决定。当需要对集群中的优先级进行灵活控制时,可以通过在vrrp_script模块中设置weight值来实现。Keepalived集群中Master和Backup角色选举策略下面进行举例说明。假定由A和B两个节点组成Keepalived集群。在A节点的keepalived.conf配置文件中,设置priority值为100,在B节点的keepalived.conf配置文件中,设置priority值为80。同时,A、B两个节点都使用了vrrp_script模块来监控MySQL服务,并且都设置weight值为10。在这种情况下,将会发生如下场景。在两个节点都启动Keepalived服务后,正常情况是A节点将成为集群中的Master节点,而B节点自动成为Backup节点。此时,将A节点的MySQL服务关闭,通过查看日志发现,B节点没有接管A节点的日志,仍然处于Backup状态,而A节点依旧处于Master状态。在这种情况下,整个HA集群将失去意义。下面分析产生这种情况的原因:这涉及Keepalived集群中主备角色的选举策略。下面总结在Keepalived中使用vrrp_script模块时整个集群角色
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全知识伴我成长小学主题班会课件
- 催办2026年6月客户对账单提交的催办函(7篇范文)
- 文明礼仪周:传承中华美德小学主题班会课件
- 办公区域电气故障排除预案
- 运营专员工作效能绩效考核表
- 数据安全合规管理家庭厨房紧急预案
- 环境责任与可持续发展能力考核表
- 体育产业赛事策划组织及活动执行绩效衡量表
- 非传统领域业绩评估表格
- 警惕交通安全警钟长鸣永不停歇,小学主题班会课件
- 2025年四川省水电投资经营集团有限公司招聘真题
- 2026北京朝阳区王四营乡人民政府编外辅助岗招聘2人笔试参考题库及答案详解
- 2026年文山州州属事业单位公开选调工作人员(37人)笔试备考试题及答案详解
- 2026贵州民航产业集团招聘试题及答案
- 2026年内蒙古自治区中考语文真题含解析
- 2026年党建知识竞赛题库含答案
- 精益管理基础消除八大浪费模板
- 2026年西交大版(新教材)初中信息科技七年级下册(全册)教学设计(附目录)
- 光储充施工安全方案
- 2026贵州建养公路技术咨询有限公司招聘6人笔试参考题库及答案详解
- 2026年应急局机关遴选面试经典题集
评论
0/150
提交评论