文章目录
一、Keepalived 概述
1. 为什么需要 keepalived
企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危害和损失。
2. keepalived 是什么
keepalived 软件起初是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP 功能。因此,keepalived 除了能够管理 LVS 集群外,还可以为其他服务(例如:Nginx、Haproxy、MySQL等)实现高可用。
keepalived 软件主要是通过 VRRP 协议实现高可用功能的。VRRP 是 Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP 出现的目的就是为了解决静态路由单点故障的问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
所以,keepalived 一方面具有配置管理 LVS 的功能,同时还具有对 LVS 下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用。
3. keepalived 服务重要功能
- 管理 LVS 负载均衡软件
- 支持故障自动切换(Failover)
- 实现 LVS 集群中节点的健康检查(Health Checking)
- 实现 LVS 负载调度器、节点服务器的高可用性(HA)
一般企业集群需要满足的三个特点:负载均衡、健康检查、故障切换,使用 LVS + Keepalived 完全可以满足需求。
4. keepalived 高可用故障切换转移原理
keepalived 高可用服务对集群之间的故障切换转移,是通过 VRRP(虚拟路由器冗余协议)来实现的。
在 keepalived 服务正常工作时,主(Master)节点会不断地向备(Backup)节点发送(多播的方式)心跳消息,用以告诉备节点自己还活看,当主节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主节点的心跳了,于是调用自身的接管程序,接管主节点的 IP 资源及服务。而当主节点恢复时,备节点又会释放主节点故障时自身接管的 IP 资源及服务,恢复到原来的备用角色。
5. keepalived 体系主要模块及其作用
keepalived 的主要模块 | 作用 |
---|---|
core 模块 | 为 keepalived 的核心,负责主进程的启动、维护及全局配置文件的加载和解析 |
vrrp 模块 | 是来实现 VRRP 协议的 |
check 模块 | 负责健康检查,常见的方式有端口检查及 UR L检查 |
6. 使用 keepalived 实现双机热备
- 基于 VRRP 协议的热备方式,keepalived 可以用作服务器的故障切换,每个热备组可以有多台服务器。当然,最常用的还是双机热备。
- 在双击热备方案中,故障切换主要针对虚拟 IP 地址的漂移来实现,因此可以适用于各种应用服务器(Web、FTP、Mail、SSH、DNS…)
- 其中主、备服务器都需安装 keepalived
二、LVS + DR + Keepalived 高可用集群构建
1. 集群概述
- keepalived 的设计目标是构建高可用的 LVS 负载均衡集群,可以调用 ipvsadm 工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备
- 使用 keepalived 构建 LVS 集群更加简便易用,主要优势在于:对 LVS 负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入
- 案列将以 DR 模式的 LVS 集群为基础,增加一台从负载调度器,使用 keepalived 实现主、从调度器的热备,搭建兼有负载均衡、高可用性两种能力的 LVS 集群架构
- 使用 keepalived 构建 LVS 集群时,也需要用到 ipvsadm 管理工具,但大部分工作会由 keepalived 自动完成,不需要手动执行 ipvsadm (除了查看和监控集群以外)
- 架构图示例
3. 案例配置
服务器 | IP |
---|---|
主 DR 服务器 | 192.168.10.20 |
从 DR 服务器 | 192.168.10.60 |
VIP | 192.168.10.25 |
Web 服务器 1 | 192.168.10.30 |
Web 服务器 2 | 192.168.10.40 |
NFS 服务器 | 192.168.10.50 |
Win10 客户端 | 192.168.10.85 |
keepalived 高可用集群的构建基于 LVS-DR 模式,LVS-DR 配置参考:
LVS 负载均衡集群 - 直接路由模式(LVS-DR)
只需要在 LVS-DR 模式的基础上加一台从 DR 调度器(最好与主 DR 配置相同)
4. 正式部署
(1) 从负载调度器配置