Created
Jun 6, 2024 03:36 AM
Tags
高可用集群
HAC,High Availability Cluster,又称 HA Cluster
Keepalived官方文档:介绍 — keepalived 1.4.3 文档 (keepalived-doc.readthedocs.io)
定义
指以 减少服务中断时间 为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。
目的
最大限度的保证用户的应用程序持久、不间断的提供服务。(故障转移)
高可用性
是指通过 尽量缩短系统停机时间(因日常的维护操作或突发的系统崩溃等),以提高系统和应用的可用性。
一般是2个节点做出的 HA 集群,有很多通俗不科学的名称,比如“双机热备”,“双机互备”。 这样做的好处是当服务启动的时候,两台服务器一个作主(ser1),另外一个作从(ser2)。测试机每几秒会 ping 主机,当发现主机没有回应,就证明主机拓机了,那么从机马上会启动相应的服务,继续进行服务。这样就可保证服务不间断。
衡量标准
通常用平均无故障时间(MTTF)来度量系统的 可靠性 ,用平均故障维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%。
具体HA衡量标准:
描述 | 通俗叫法 | 可用性级别 | 年度停机时间 |
基本可用性 | 2个9 | 99% | 87.6小时 |
较高可用性 | 3个9 | 99.9% | 8.8小时 |
具有故障自动恢复能力的可用性 | 4个9 | 99.99% | 53分钟 |
极高可用性 | 5个9 | 99.999% | 5分钟 |
高可用集群实现原理
高可用集群主要实现自动侦测(Auto-Detect)故障、自动切换/故障转移(FailOver)和自动恢复(FailBack)。
简单来说就是,用高可用集群软件实现故障检查和故障转移(故障/备份主机切换)的自动化,当然像负载均衡、DNS分发也可提供高可性。
自动侦测阶段由主机上的软件通过冗余侦测线,经由复杂的监听程序,逻辑判断,来相互侦测对方运行的情况。常用的方法是:集群各节点间通过心跳信息判断节点是否出现故障。
故障切换
心跳检测
RS232串口线
串行电缆被认为是比以太网连接安全性稍好些的连接方式,因为 hacker 无法通过串行连接运行诸如 telnet、ssh 或 rsh 类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。
双机备份软件:Haproxy | Keepalived | Heartbeat
脑分裂
在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的“脑裂”,造成数据不完整,服务不可访问。
解决:
- 方法一:设置参考 IP,抢夺资源之前,都去 ping 参考 IP (网关),ping不通时,不去抢资源,而是释放资源,将控制权交出去;
- 方法二:设置冗余线路,设置两条心跳线,两个网卡,第一个测时不通,再拿第二个去测;
- 方法三:stonish(shoot the other node in the head “爆头”):基于能够通过软件指令关闭某节点特殊的硬件设备,掐电源。
keepalived
概述
案例环境专为 LVS 和 HA 设计的一款健康检查工具。
Keepalived 是一个基于VRRP(Virtual Router Redundancy Protocol)协议实现的高可用性解决方案,它通过将虚拟 IP 地址绑定到集群中的一台主服务器上,以确保在主服务器故障时,能够快速将虚拟IP地址迁移到备用服务器进行服务。
- 支持故障自动切换
- 支持节点健康状态检查
- 主备模式,共用同一个IP地址,但优先级不同
抢占模式 & 非抢占模式
在 Keepalived 中,抢占模式和非抢占模式是针对 虚拟IP(Virtual IP,VIP)的处理方式。
- 抢占模式(Preempt mode)
在抢占模式下,主服务器恢复正常后,会试图立即夺回虚拟IP地址,将其迁移到主服务器上。其他备用服务器会意识到主服务器已经恢复,并主动将虚拟IP地址释放给主服务器。这种模式下,主服务器具有优先级,一旦恢复,它会立即成为主服务器并接管虚拟IP地址。
- 非抢占模式(Non-Preempt mode)
在非抢占模式下,主服务器恢复正常后,不会主动夺回虚拟IP地址,而是保留当前状态,继续承担主服务器的角色。只有当主服务器发生故障,虚拟IP地址才会迁移到备用服务器上。备用服务器等待主服务器发生故障,然后才能成为主服务器并接管虚拟IP地址。
- 模式选择
选择使用抢占模式还是非抢占模式取决于具体的业务需求和应用场景。抢占模式下,主服务器恢复后能够更快地接管虚拟IP地址,但这也可能导致服务器频繁地切换,造成一些不必要的网络开销和服务中断;而非抢占模式下,主服务器恢复后不会立即接管虚拟IP地址,可以减少频繁的切换,但是当主服务器发生故障时,会有一定的时间延迟来进行故障切换。因此,在部署 Keepalived 时,需要根据实际情况选择合适的模式。