基于VIP的Keepalived 高可用架构是怎么样的
这篇文章将为大家详细讲解有关基于VIP的Keepalived 高可用架构是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1. Keepalived 简介
1. keepalived 的作用
Keepalived 的作用是检测服务器的状态。如果有一台 web 服务器宕机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived 自动将服务器加载到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
2. Keepalived 的特性
配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能。
稳定性强:keepalived 是一个类似于 layer3/4/7 交换机机制的软件,具备我们平时说的第 3 层、第 4 层和第 7 层交换机的功能,常用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
成本低廉:开源软件,可直接下载配置使用,没有额外费用。
应用范围广:因为 keepalived 可应用在多个层面,所以它几乎可以对所有应用做高可用,包括 LVS、数据库、http 服务、nginx 负载均衡等等。
支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。
2. Keepalived 工作原理
1. Keepalived 内部工作分为以下几个部分
WatchDog 监控 checkers 和 VRRP 进程的状况。
Checkers 负责真实服务器的健康检查 healthchecking。
VRRP Stack 负责负载均衡器之间的失败切换。
IPVS wrapper 用来发送设定的规则到内核 IPVS 代码。
Netlink Reflector 用来设定 vrrp 的 vip 地址等。
2. VRRP 协议
Keepalived 是以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
VRRP 根据优先级来确定虚拟路由器中每台路由器的角色(Master 路由器或 Backup 路由器)。VRRP 优先级的取值范围为 0 到 255(数值越大表明优先级越高),可配置的范围是 1 到 254,优先级 0 为系统保留给路由器放弃 Master 位置时候使用,255 则是系统保留给 IP 地址拥有者使用。优先级越高,则越有可能成为 Master 路由器。当两台优先级相同的路由器同时竞争 Master 时,比较接口 IP 地址大小。接口地址大者当选为 Master。
3. 主要模块
core 模块:keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check 模块:负责健康检查,包括各种常见的检查方式。
vrrp 模块:是来实现 VRRP 协议的。
3. Keepalived 应用场景
1. 在网络层、数据链路层,运行着 4 个重要的协议
IP:互联网协议。
ICMP:互联网控制报文协议。
ARP:地址转换协议。
RARP:反向地址转换协议。
2. 网络层场景
Keepalived 在网络层采用的最常见的工作方式是通过 ICMP 协议向服务器集群中的那个节点发送一个 ICMP 数据包(类似于 ping 实现的功能),如果某个节点没有返回响应数据包,那么认为此节点发生了故障,Keepalived 将报告此节点失效,并从服务器集群中剔除故障节点。
3. 传输层场景
在传输层,提供了两个主要的协议:传输控制协议 TCP 和用户数据协议 UDP。传输控制协议 TCP 可以提供可靠的数据传输服务、IP 地址和端口代表 TCP 的一个连接端。要获得 TCP 服务,需要在发送机的一个端口上和接收机的一个端口上建立连接。
Keepalived 在传输层就是利用 TCP 协议的端口连接和扫描技术来判断集群点是否是正常的。比如,对于常见的 WEB 服务默认的 80 端口、SSH 服务默认的 22 端口等,Keepalived 一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,然后强制将此端口对应的节点从服务器集群组中移除。
4. 应用层场景
在应用层,可运行 FTP、TELNET、HTTP、DNS 等各种不同类型的高层协议。
Keepalived 在应用层的运行方式也更加全面化和复杂化,用户可以通过自定义 Keepalived 的工作方式;例如:用户可以通过编写程序来运行 keepalived。而 keepalived 将根据用户的设定检测各种程序或服务是否运行正常,如果 Keepalived 的检测结果与用户设定不一致时,Keepalived 将把对应的服务从服务器中移除。
4. 集群
集群是一组相互独立的、通过高速网络互连的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。
通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个计算机坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性。
5. 高可用
HA(High Available),高可用性集群是通过系统的可靠性(reliability)和维护性(maintainability)来度量的。
工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:
HA=MTTF/(MTTF+MTTR)*100%
(平均无故障时间/总时间,总时间=平均无故障时间+平均维修时间)。具体 HA(可用性)衡量标准:
99% 一年宕机时间不超过 4 天。
99.9% 一年宕机时间不超过 10 小时。
99.99% 一年宕机时间不超过 1 小时。
99.999% 一年宕机时间不超过 6 分钟。
6. 高可用集群实现
高可用工作方式
主从方式(非对称方式)
双机双工方式(互备互援)
集群工作方式(多服务器互备方式)
高可用的资源分类
网络高可用(用户 -> 机房、机房内网)
服务器高可用(CPU、内存、磁盘)
存储高可用(关系型数据库、分布式缓存、分布式存储系统)
服务高可用等(Web 服务:Nginx、DNS、CDN 等)
开源高可用解决方案
keepalived:通过实现 vrrp 协议来实现地址漂移。
7. 高可用架构
1. 主从高可用架构
在系统中,有一个 Master 节点和一个 Backup 节点,其中 Master 节点对线上业务提供服务,Backup 与 Master 节点之间保持心跳。
当 Master 节点因宕机服务不可用时,系统会切换到 Backup 节点上线,提供服务。
当宕机 Master 节点恢复后,系统将该 Master 节点作为 Backup 加入集群。
2. 双主高可用架构
在系统中,有两个 Master 节点,均对线上业务提供服务,两个 Master 节点之间保持心跳。
当某一台 Master 节点因宕机服务不可用时,系统会将流量全部导向剩余的 Master 节点,继续提供服务。
当宕机的 Master 节点恢复后,系统将该 Master 加入集群,提供服务。
8. Keepalived 高可用集群的解决方案
Keepalived 在一个节点上启动之后,会生成一个 Master 主进程,这个主进程又会生成两个子进程,分别是:
VRRP Stack:实现 VRRP 协议。
Checkers:检测 ipvs 后端 realserver 的健康状况。
VRRP 双方节点都启动后,要实现状态转换的,刚开始启动的时候,初始状态都是 BACKUP,而后向其他节点发送通知,以及自己的优先级信息,谁的优先级高,就转换为 MASTER,否则就还是 BACKUP。
这时候服务就在状态为 MASTER 的节点上启动,为用户提供服务,如果,该节点挂掉了,则转换为 BACKUP,优先级降低,另一个节点转换为 MASTER,优先级上升,服务就在此节点启动,VIP、VMAC 都会被转移到这个节点上,为用户提供服务。
关于基于VIP的Keepalived 高可用架构是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。