---
title: Keepalived 高可用
taxonomy:
    category: docs
---

LVS 单机 20G 的带宽显然和我们 200G 的目标还相去甚远，但是我们接下来要做的第一件事并不是提升系统容量，而是先提升系统的稳定性：搭建高可用架构。

Keepalived 是一款出色的开源软件，专为与 LVS 配合而设计，主要功能是构建自选举集群。它支持独立部署三台机器用作控制器集群，也可以将控制器部署到应用机器上。与 LVS 一样，基于虚拟 IP 技术，可在任意标准以太网内运行。

### Keepalived 运行原理

Keepalived 的运行原理简单明了：

1. 两台机器配置同一VIP（虚拟 IP）：即两台机器的真实 IP 分别为 10.0.0.101 和 10.0.0.102，但虚拟出一个 IP 10.0.0.100，不属于任何物理设备，可在任何机器间切换绑定。
2. 两机频繁通信，通过分数计算确定哪台机器得分更高，由该机器向局域网发送 VRRP 组播报文宣称 VIP 在我这里。
3. 当得分高的主机宕机、断网或检测到服务进程消失（如 Nginx 挂掉），得分低的机器会在极短时间内接替，宣称 VIP 在自己这里。
4. 发送给 VIP 的数据包会在短时间失效后由新机器承接（实测中断时间小于 1 秒），实现集群高可用。

### 高可用 LVS 集群

LVS 与 Keepalived 结合，基于多台物理机，可实现高可用负载均衡集群，架构如图 6-5 所示。

![](https://qn.lvwenhan.com/2023-01-09-16732350647640.jpg)
<center>图 6-5 LVS 配合 Keepalived 实现高可用时的架构图</center>

若 Master 因任何原因失效（硬件故障、断电、误操作、光缆挖断、火灾地震等），Standby 机器将迅速接替，接管流量，实现高可用目的。

金融级项目可在一城市跨三个机房做三节点 Keepalived 集群。为何不跨城市？因跨城市属于“两地三中心”高可用技术领域，一般不在二层网络上进行，跨城市专用光纤建设费用高昂，城市内拉光纤更经济实惠。最后一章将探讨终极高可用架构。

### Keepalived 让众多服务高可用

笔者在公司办公区的自建机房部署了一些非关键业务，性能要求不高，故选择单独部署 Keepalived：与 Kong 网关配合提供高可用网关；与 MySQL 配合做双主双活集群；与 Kubernetes 配合做了一个跨越四台物理机的容器集群，并提供高可用服务等。

2023 年 7 月，笔者公司机房发生了空调漏水事故，损坏两台物理服务器。由于提前搭建了三节点 Keepalived 集群，核心服务成功幸存了下来。这是笔者首次经历物理服务器和磁盘全部损毁的事故，Keepalived 经受住了考验！
