一次 Keepalived 高可用的事故,让我重学了一遍它

本文详细介绍了Keepalived和LVS的概述,包括它们的原理和功能。Keepalived作为轻量级高可用解决方案,通过VRRP协议实现主备切换。文章探讨了Keepalived如何进行流量转发,以及其负载均衡机制,包括基于IP的调度方案和各种调度算法。此外,还解释了Keepalived如何通过vrrp_instance和vrrp_script配置进行主备选举。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Keepalived 高可用组件的虚拟 IP 持续漂移,导致 MySQL 主从不断切换,进而导致 MySQL 主从数据同步失败。

虽然没能重现 Keepalived 的这个问题,但是我深入研究了下 Keepalived 的原理以及针对核心配置参数做了大量实验。悟空带着大家一起看下 Keepalived 到底是如何运转的,以及为什么它能做到高可用。

一、Keepalived 和 LVS 概述

1.1 Keepalived 概述

谈到 Keepalived,给人的印象就是用在高可用架构中,保证某个服务不故障,其实它还有很多其他的功能。Keepalived 是 Linux 系统下的一个比较轻量级的高可用解决方案,这个轻量级是相对于 Heartbeat 等组件的。虽然 Heartbeat 功能完善、专业性强,但是安装部署就没有 Keepalived 简单,Keepalived 只需要一个配置文件即可。企业中大多选择 Keepalived 作为高可用组件。

1.2 LVS 概述

Keepalived 最开始是由 Alexandre Cassen 使用 C 语言编写的开源软件项目,项目的目的主要是简化 LVS 项目的配置并增强 LVS 的稳定性。简单来说,Keepalived 就是对 LVS 的扩展增强。

LVS(Linux Virtual Server)翻译过来就是 Linux 虚拟服务器,由章文嵩博士主导开发的开源负载项目,目前 LVS 已经被集成到 Linux 内核模块中。

LVS 主要用在负载均衡方面,比如 Web 客户端想要访问后端服务,Web 请求会先经过 LVS 调度器,调度器根据预设的算法决定如何分发给后端的所有服务器。

1.3 LVS 基本原理

LVS 的基本原理如下图所示:

LVS基本原理

LVS 的核心功能就是提供负载均衡,负载均衡技术有多种:

  • 基于 DNS 域名轮流解析方案。
  • 基于客户端调度访问方案。
  • 基于应用层系统的调度方案。
  • 基于 IP 地址的调度方案。

而效率最高的是基于 IP 地址的调度方案。其实就是将请求转发给对应的 IP 地址 + 端口号,它的效率是非常高的,LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 是 LVS 集群系统的核心软件。

LVS 负载均衡器会虚拟化一个IP(VIP),对于客户端来说,它事先只知道这个 VIP 的,客户端就将请求发送给 VIP,然后 LVS 负载均衡器会将请求转发给后端服务器中的一个,这些服务器都称为 Real Server(真实服务器)。转发的规则是通过设置 LVS 的负载均衡算法来的,比如随机分配、按照权重分配等。

后端服务器的提供的功能要求是一致的,不论转发到哪台服务器,最终得到的结果是一致的,所以对于客户端来说,它并不关心有多少个后端服务器在提供服务,它只关心访问的 VIP 是多少。

那么后端服务处理完请求后,如何将数据返回给客户端呢?根据 LVS 的不同模式,会选择不同的方式将数据返回给客户端。LVS 的工作模式有三种:NAT 模式、TUN 模式、DR 模式。这个后面讲到路由机制再来细说。

二、Keepalived 流量转发原理

Keepalived 为 Linux 系统提供了负载均衡和高可用能力。负载均衡的能力来自 Linux 内核中的 LVS 项目模块 IPVS(IP Virtual Server)。

Keepalived 运行在 Linux 系统中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值