1. 企业级调度器LVS初识、工作模式详解
想学习更多相关知识请看博主的个人博客
1. LVS官网
LVS 时全球最流程的四层负载均衡开源软件。
LVS 官网:http://www.linuxvirtualserver.org/
2.Linux Virtual Server
2.1 LVS介绍
LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名 正明), 阿里的四层SLB(Server
Load Balance)是基于LVS+keepalived实现
LVS 相关术语
VS: Virtual Server,负责调度
RS: Real Server,负责真正提供服务
2.2 LVS工作原理
VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核
级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”
范例:查看内核支持LVS
[root@centos8 ~]#grep -i -C 10 ipvs /boot/config-4.18.0-147.el8.x86_64
...(省略部分内容)...
CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
...(省略部分内容)...
#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y #
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m #新增
CONFIG_IP_VS_OVF=m #新增
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
# CONFIG_IP_VS_MH is not set
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
...(省略部分内容)...
2.3 LVS集群体系架构

2.4 LVS 功能及组织架构
负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。
2.4.1 应用于高访问量的业务
如果您的应用访问量很高,可以通过配置监听规则将流量分发到不同的云服务器 ECS(Elastic
Compute Service 弹性计算服务)实例上。此外,可以使用会话保持功能将同一客户端的请求转发到同
一台后端ECS
2.4.2 扩展应用程序
可以根据业务发展的需要,随时添加和移除ECS实例来扩展应用系统的服务能力,适用于各种Web服务
器和App服务器。
2.4.3 消除单点故障
可以在负载均衡实例下添加多台ECS实例。当其中一部分ECS实例发生故障后,负载均衡会自动屏蔽故
障的ECS实例,将请求分发给正常运行的ECS实例,保证应用系统仍能正常工作
2.4.4 同城容灾 (多可用区容灾)
为了提供更加稳定可靠的负载均衡服务,阿里云负载均衡已在各地域部署了多可用区以实现同地域容
灾。当主可用区出现机房故障或不可用时,负载均衡仍然有能力在非常短的时间内(如:大约30s中
断)切换到另外一个备可用区恢复服务能力;当主可用区恢复时,负载均衡同样会自动切换到主可用区
提供服务。
使用负载均衡时,您可以将负载均衡实例部署在支持多可用区的地域以实现同城容灾。此外,建议您结
合自身的应用需要,综合考虑后端服务器的部署。如果您的每个可用区均至少添加了一台ECS实例,那
么此种部署模式下的负载均衡服务的效率是最高的。
如下图所示,在负载均衡实例下绑定不同可用区的ECS实例。正常情况下,用户访问流量将同时转至发
主、备可用区内的ECS实例;当可用区A发生故障时,用户访问流量将只转发至备可用区内的ECS实例。
此种部署既可以避免因为单个可用区的故障而导致对外服务的不可用,也可以通过不同产品间可用区的
选择来降低延迟。

如果采取如下图所示的部署方案,即在负载均衡实例的主可用区下绑定多台ECS实例,而在备可用区没
有任何ECS实例。当主可用区发生故障时会造成业务中断,因为备可用区没有ECS实例来接收请求。这
样的部署方式很明显是以牺牲高可用性为代价来获取低延时。

2.4.5 跨地域容灾
您可以在不同地域下部署负载均衡实例,并分别挂载相应地域内不同可用区的ECS。上层利用云解析做
智能DNS,将域名解析到不同地域的负载均衡实例服务地址下,可实现全局负载均衡。当某个地域出现
不可用时,暂停对应解析即可实现所有用户访问不受影响。
2.5 LVS应用场景
2.5.1 音视频大流量场景

对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全和高可靠的云存储服务
音视频海量流量自动分发
音视频应用中由于用户与主播之间需要实时大量的互动,因此,用户的流量非常大,而直播业务的波峰
波谷效应明显,这对整个系统的弹性、稳定性和可用性带来了巨大的挑战
提高横向扩展能力
添加或删减负载均衡后端的服务器实时生效,可根据业务流量大小实时增减
抵御海量流量
业务发展快,访问流量巨大,负载均衡可对多台云服务器进行流量分发服务
提升应用可用性
负载均衡提供后端服务器的健康检查,实时屏蔽异常服务器,提升系统可用性
2.5.2 网络游戏动静分离场景

动静请求分离,快速稳定交付
游戏业务有很多图片等静态资源需要加载,通过CDN实现全球用户访问静态资源的加速;当用户在游戏
中有互动时,产生的访问流量非常大,此时为了保证互动实时性,需要使用负载均衡进行流量分发
动态请求流量分发
动态请求量大,采用多台云服务器计算处理,并利用负载均衡服务随时进行流量分发
静态请求快速加载
静态内容选择对象存储,接入CDN服务,进一步优化内容分发链路,让内容即刻加载
2.5.3 多层次容灾架构场景

跨地域跨可用区的容灾方案
用户业务遍布各地域,使用云解析DNS将不同地域用户智能解析访问到相应的业务系统内,使用负载均
衡进行海量的访问流量分发,还可构建地域级、可用区级的多层容灾架构
智能解析
智能判断提供最佳的访问解析地址,使访问用户获得最快捷、最流畅的体验
流量分发
业务发展快,访问流量巨大,负载均衡可对多台云服务器进行流量分发服务
多层次容灾
云解析提供跨地域的高可用,负载均衡可实现可用区级的高可用
2.5.4 海量访问流量分发场景

2.6 LVS集群类型中的术语
VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer
RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)
CIP:Client IP
VIP:Virtual serve IP VS外网的IP
DIP:Director IP VS内网的IP
RIP:Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
3 LVS 工作模式和相关命令
3.1 LVS集群的工作模式
lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操纵封装新的MAC地址
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP
3.1.1 LVS的NAT模式

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和
PORT实现转发
(1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统

3.1.2 LVS的DR模式

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部
进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源
IP/PORT,以及目标IP/PORT均保持不变
DR模式的特点:
Director和各RS都配置有VIP
确保前端路由器将目标IP为VIP的请求报文发往Director
在前端网关做静态绑定VIP和Director的MAC地址
在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
在RS上修改内核参数以限制arp通告及应答级别
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向
DIP,以确保响应报文不会经由DirectorRS和Director要在同一个物理网络
请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
不支持端口映射(端口不能修败)
RS可使用大多数OS系统

3.1.3 LVS的TUN模式

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首
部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目
标IP是CIP)

TUN模式特点:
1. DIP, VIP, RIP可以是公网地址
2. RS的网关一般不能指向DIP
3. 请求报文要经由Director,但响应不经由Director
4. 不支持端口映射
5. RS的OS须支持隧道功能
3.1.4 LVS的FULLNAT模式

通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP
fullnat模式特点:
- VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向
DIP - RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client
- 请求和响应报文都经由Director
- 支持端口映射
注意:此类型kernel默认不支持
3.1.5 LVS工作模式总结和比较

lvs-nat与lvs-fullnat:
- 请求和响应报文都经由Director
- lvs-nat:RIP的网关要指向DIP
- lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信
lvs-dr与lvs-tun:
- 请求报文要经由Director,但响应报文由RS直接发往Client
- lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
- lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信
1. 企业级调度器LVS初识、工作模式详解的更多相关文章
- ST MCU_GPIO的八种工作模式详解。
补充: N.P型的区别,就是一个为正电压启动(NMOS),一个为负电压启动(PMOS) GPIO的八种工作模式详解 浮空输入_IN_FLOATING带上拉输入_IPU带下拉输入_IPD模拟输入_AIN ...
- Apache 工作模式详解
Apache 工作模式详解 Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择, ...
- Apache三种工作模式详解
Apache HTTP服务器被设计为一个强大的.灵活的能够在多种平台以及不同环境下工作的服务器.这种模块化的设计就叫做“多进程处理模块”(Multi-Processing Module,MPM),也叫 ...
- apache两种工作模式详解
prefork模式 这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请 ...
- RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解
一.RabbitMQ简介 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQ ...
- LVS的工作模式介绍和NAT模式&DR模式实验步骤
一:LVS介绍 二.LVS的NAT和DR模式的实验及配置步骤 一.LVS的简单介绍 linux virtual server 简单来讲lvs是一段内核代码 类似于netfilter本身是一框架但不提供 ...
- 生产环境该如何选择lvs的工作模式,和哪一种算法
lvs的工作模式有这几种: 1.RR : 轮叫算法,平均分配,你一个,我一个: 2.WRR :加权轮叫算法,谁的处理能力强,谁的权重就高: 3.LC :最少链接算法,谁的连接数最少,谁就处理更多的链接 ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- LVS 负载均衡原理详解
LVS简介 LVS是一个开源软件,由章文嵩博士于1998年5月创立,可以实现Linux平台下的简单负载均衡.LVS是Linux Virtual Server的简写,是一个虚拟的服务器集群系统. LVS ...
随机推荐
- HOOK API(四) —— 进程防终止
0x00 前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对 ...
- Java基础复习(三)
1. &和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则 ...
- Typora如何上传图片到gitee
Typora是一款非常好用的Markdown文本编辑器,深受广大程序员的青睐,那么在使用过程中,当我们插入图片的时候,其实是默认放在一个相对路径文件夹下的,这就导致,一旦我们移动文件,或者发送给别人, ...
- 2、Linux基础--常用系统命令与快捷键
笔记 1.昨日问题 1.mac系统虚拟机的问题 2.虚拟机连不上网 1.xshell连接不上 1.虚拟网络编辑器和vmnat8网卡设置错误 2.ping不通百度 1.DNS IP编写错误 2.网卡的网 ...
- 教你写Spring组件
前言 原文地址:https://www.cnblogs.com/qnlcy/p/15905682.html 一.宗旨 在如日中天的 Spring 架构体系下,不管是什么样的组件,不管它采用的接入方式如 ...
- Solution -「POI 2011」「洛谷 P3527」MET-Meteors
\(\mathcal{Description}\) Link. 给定一个大小为 \(n\) 的环,每个结点有一个所属国家.\(k\) 次事件,每次对 \([l,r]\) 区间上的每个点点权加上 ...
- Solution -「HNOI 2009」「洛谷 P4727」图的同构计数
\(\mathcal{Description}\) Link. 求含 \(n\) 个点的无标号简单无向图的个数,答案模 \(997\). \(\mathcal{Solution}\) 首先 ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第01章 - 创建CA证书和kubectl集群管理命令
文章目录 1.kubernetes集群部署 1.0.创建CA证书和秘钥 1.0.0.安装cfssl工具 1.0.1.创建根证书 1.0.2.创建证书签名请求文件 1.0.3.生成CA证书和秘钥 1.0 ...
- XXE外部实体注入漏洞总结
XXE 漏洞原理 XXE是xml外部实体注入漏洞,应用程序解析xml输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取,命令执行,内网端口扫描攻击内网网站等危害. 漏洞危害 ...
- 树莓派GPIO开发(三):蜂鸣器-PWM调节
配置环境 系统:Raspbian11(官方64位) 设备:树莓派CM4 一.写在前面 关于PWM的基本介绍在上一篇博客已经说过了:树莓派GPIO开发(二)RGB模块-PWM调节 在RGB模块中,我们主 ...