基于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 内部工作分为以下几个部分

基于VIP的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. 集群


  • 集群是一组相互独立的、通过高速网络互连的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。

  • 通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

  • 集群组成后,可以利用多个计算机和组合进行海量请求处理(负载均衡),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个计算机坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性。

基于VIP的Keepalived 高可用架构是怎么样的

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 加入集群。

基于VIP的Keepalived 高可用架构是怎么样的

2. 双主高可用架构
  • 在系统中,有两个 Master 节点,均对线上业务提供服务,两个 Master 节点之间保持心跳。

  • 当某一台 Master 节点因宕机服务不可用时,系统会将流量全部导向剩余的 Master 节点,继续提供服务。

  • 当宕机的 Master 节点恢复后,系统将该 Master 加入集群,提供服务。

基于VIP的Keepalived 高可用架构是怎么样的

8. Keepalived 高可用集群的解决方案


  • Keepalived 在一个节点上启动之后,会生成一个 Master 主进程,这个主进程又会生成两个子进程,分别是:

    • VRRP Stack:实现 VRRP 协议。

    • Checkers:检测 ipvs 后端 realserver 的健康状况。

  • VRRP 双方节点都启动后,要实现状态转换的,刚开始启动的时候,初始状态都是 BACKUP,而后向其他节点发送通知,以及自己的优先级信息,谁的优先级高,就转换为 MASTER,否则就还是 BACKUP。

  • 这时候服务就在状态为 MASTER 的节点上启动,为用户提供服务,如果,该节点挂掉了,则转换为 BACKUP,优先级降低,另一个节点转换为 MASTER,优先级上升,服务就在此节点启动,VIP、VMAC 都会被转移到这个节点上,为用户提供服务。

基于VIP的Keepalived 高可用架构是怎么样的

关于基于VIP的Keepalived 高可用架构是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/231860.html

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

相关推荐

发表回复

登录后才能评论