logo

Keepalived 高可用

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 所示。

图 6-5 LVS 配合 Keepalived 实现高可用时的架构图

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

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

Keepalived 让众多服务高可用

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

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

阅读数:1902      字数:821 最后更新:2023-10-26 01:25:34