爱玩科技网
您的当前位置:首页高可用架构和keepalive原理

高可用架构和keepalive原理

来源:爱玩科技网

‌高可用架构的原理主要围绕保证业务的连续性和服务的高可用性,通过设计冗余和自动故障转移机制来实现。‌

高可用(High Availability,简称HA)的目标是确保业务系统能够持续、稳定地对外提供服务,几乎不发生服务中断。为了实现这一目标,高可用架构设计通常涉及以下几个方面:

综上所述,高可用架构的设计原理是通过冗余设计、自动故障转移、分层和组件化、负载均衡和弹性扩缩容、以及监控和容灾演练等多种技术手段的综合应用,来确保业务系统的连续性和高可用性。


高可用架构方案

高可用服务器

系统都是部署在物理服务器上的,无论是自建,还是部署到云上,本质都是物理服务器。这时候,就会涉及到非常重要的硬件服务器的高可用了。

比如:多台硬件服务器、多块硬盘......等,需要确保单点硬件故障,导致的系统停机。

这个时候,第一优先:就需要考虑到架构的冗余,出现故障,是否可用马上切换。

这就是典型的高可用硬件的设计原则,比如:

消除单点故障: 确保每个硬件组件都有备份、或冗余设计。

冗余配置: 通过冗余电源、网络、存储等,增强系统的容错能力。

自动化管理: 利用监控和管理工具,实现硬件故障的自动检测、和处理。

定期测试和维护: 定期进行硬件故障演练和维护,确保在实际故障发生时系统能迅速恢复。

这些都是典型的高可用服务器方案,可用根据自己的情况,来综合考虑使用。

高可用负载

负载均衡不仅可以提升系统的性能,另一个重要的作用:还可以极大的提升可用性。原因很简单,如果负载的机器出现了故障,可以快速把新的服务器来替换。

主要包含常见的两大类:

1、硬件负载均衡器

使用硬件负载均衡设备,比如:F5 Big-IP、Cisco ACE...将网络流量分配到多个服务器或服务节点,提高系统的可用性和性能。

硬件负载最大的好处就是性能高,最大的缺点也是一样:就是贵。

2、软件负载均衡器

由于硬件比较贵,所以,后续出现大量的软件负载均衡。

比如:Nginx、HAProxy、keepalive.等软件负载均衡来分发流量,增强应用层的高可用性。

高可用数据

高可用数据,在架构设计上是非常重要的,因为数据是最宝贵的,所以必须保证数据备份,这是大家容易做到,但大家经常忽视的。

全量备份: 对整个数据集进行完全备份,优点是恢复时只需一次操作即可完成,但备份时间长、占用存储空间大。

增量备份: 只备份自上次备份以来发生变化的数据,优点是备份速度快、占用空间少,但恢复时需依次应用所有增量备份。

每日备份: 适用于重要数据,每天进行全量或增量备份,确保数据尽可能最新。

每周备份: 适用于变化不频繁的数据,每周进行一次全量备份,配合每日增量、或差异备份。

异地备份: 将备份数据存储在远程数据中心,确保在本地灾难发生时数据仍然安全。

可以结合自己的情况,来最终选择备份的方案。

高可用安全

高可用安全,是指在设计和配置上确保系统和数据不仅具备高可用性,同时也需要考虑数据的安全。

数据加密: 对备份数据进行加密,防止在传输、和存储过程中被窃取、或篡改。

传输加密: 使用TLS/SSL加密网络传输,确保数据在传输过程中不被窃取、或篡改。

访问控制: 实施严格的访问控制策略,确保只有授权人员、和系统能够访问备份数据。

合规性: 确保备份、和恢复流程,符合行业法规和企业内部的安全、和隐私。

这些都可以有效提升系统和数据的高可用性、和安全性,确保系统能够持续稳定运行。

高可用冗余

常见的数据库,主备模式就是典型的高可用冗余。

主备模式:部署两台、或多台负载均衡器,其中一台作为主负载均衡器,其他作为备份。

当主负载均衡器故障时,备份负载均衡器自动接管。

主主模式:多台负载均衡器同时工作,共同分担流量,此模式提高了负载均衡器的总处理能力、和高可用性。

高可用运维

自动化运维,是通过自动化工具和流程来简化系统的部署、监控、维护和故障恢复工作。为什么要使用自动化呢?原因很简单,因为:很多故障不能靠人为来解决,需要自动运维来解决是最高效的。所以,需要考虑自动化运维来,一起解决高可用。

这包括:使用配置管理工具、自动化测试和部署流水线、以及自动化故障检测、和恢复机制等,还会结合监控和报警,来提醒人为去提前解决高可用的问题。

通过监控和警报系统,可以实时监测系统健康状态和性能指标,并在发生异常或超过预设阈值时发出警报的系统。

这包括实施系统监控、日志记录、性能指标收集和警报通知等功能,以及故障检测和恢复机制。


keepalived的前世今生

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

后来Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。

健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

Keepalived服务的重要功能

1、实现对LVS集群节点健康检查功能(healthcheck)

Keepalived可以通过在自身的keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。

2、作为系统网络服务的高可用功能

Keepalived高可用功能实现的简单原理为,两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备;当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务;而当角色为Master的主机故障修复后,又会自动接管回它原来处理的工作,角色为Backup的主机则同时释放Master主机失效时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。

3、Keepalived高可用故障切换转移原理

Keepalived高可用服务对之间的故障切换转移,是通过VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)来实现的。

在Keepalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

keepalived的通信原理

1、在网络中,主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,服务就会中断,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

2、VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

3、VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。

4、工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对

5、VRRP路由器在运行过程中有三种状态:

a、Initialize状态:系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;

b、 Master状态;

c、 Backup状态;

一般主路由器处于Master状态,备份路由器处于Backup状态。

6、VRRP选举机制

7、VRRP通过一竞选(election)协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

keepalived服务的工作原理

1、Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

2、在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。

保证高可用性

一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。


Heartbeat与Keepalived的区别

Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual RouterRedundancy Protocol,简称VRRP);Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机,heartbeat的目的是用户service的双机
lvs的高可用建议用keepavlived,业务的高可用建议heartbeat

因篇幅问题不能全部显示,请点此查看更多更全内容