🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
原文首发:
你好,我是悟空。
前言
上次我们遇到了一个 MySQL 故障的事故,这次我又遇到了另外一个奇葩的问题:
Keepalived 高可用组件的虚拟 IP 持续漂移,导致 MySQL 主从不断切换,进而导致 MySQL 主从数据同步失败。
虽然没能重现 Keepalived 的这个问题,但是我深入研究了下 Keepalived 的原理以及针对核心配置参数做了大量实验。悟空带着大家一起看下 Keepalived 到底是如何运转的,以及为什么它能做到高可用。
原理讲解分为上、中、下三篇:
上篇涉及以下知识点:
- Keepalived 如何提供数据流量转发。
- Keepalived 选举的原理。
- Keepalived 的负载均衡算法。
中篇涉及以下知识点:
- Keepalived 的路由规则。
- Keepalived 如何监控服务的。
- Keepalived 如何进行故障切换。
- 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 的核心功能就是提供负载均衡,负载均衡技术有多种&