国产最强负载均衡器LVS(理论+实战)

本文详细介绍了LVS(Linux Virtual Server)的工作原理、调度算法、三种工作模式(NAT、DR、TUN),并重点讲解了DR模式及其配置。通过实际的实验手册,演示了如何在DR模式下配置LVS和Keepalived实现高可用,确保在服务器故障时能自动切换,保障服务连续性。

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

长文预警,先看下目录

image

负载均衡产生背景

不要因为技术而技术!技术服务于业务,一定是当前的技术满足不了业务的发展才会产生新的技术来解决业务问题,负载均衡为什么能产生?那是因为有业务需求。

中国人口14亿,移动网络用户7亿,固网用户4亿,根据二八原则保守估计独立用户为2.4亿,他们具有消费能力。

假设你有一个idea,我一无是处只有钱,我当你的天使投资人给你第一笔投资,你会拿去干什么?毫无疑问是营销,营销谁?营销这2.4亿人,假设有2%的人(480万)看到了你的广告,有20%的人(96W)感兴趣下载了你的APP,你什么都不用做,光APP开屏广告就可以大赚一笔,当然96W人在用你的服务,这必然会造成高并发,说明高并发是真的!

高并发产生的日志,有一个字段表示来源站点(比如用户是通过百度点过来的还是微博点过来的),这就可以分析渠道流量,再通过和订单表一关联,就可以分析出渠道流量转化率,这有什么用?这直接明示你下一次该往哪个渠道营销!这说明高并发是有好处的!

有了高并发所以产生了负载均衡!

LVS简介

LVS(Linux Virtual Server) Linux虚拟服务器

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

  • https://baike.baidu.com/item/LVS/17738

网络基础

参考之前写的不得不看的网络基础,很多基础的内容需要先阅读此文

学习手册

更多细节查看

  • LVS手册man ipvsadm
  • keepalived手册man keepalived
  • keepalived配置文件手册man keepalived.conf

LVS调度算法

既然是负载均衡,那么后端肯定不止一台服务器,怎么去调度?LVS提供了下面的调度算法

静态调度

  1. rr(Round Robin): 轮询
  2. wrr(weight):加权
  3. sh(source hashing): 源地址散列
  4. dh(Destination Hashing): 目标地址散列

动态调度

  1. lc(Least-Connection): 最少连接
  2. wlc(Weighted Least-Connection): 加权最少连接
  3. sed(Shortest Expected Delay): 最短期望延迟
  4. nq(never queue): 永不排队
  5. LBLC(Locality-Based Least Connection): 基于本地的最少连接
  6. LBLCR(Locality-Based Least Connections withReplication): 基于本地的带复制功能的最少连接

LVS三种工作模式

名词定义:

  • CIP: Client IP 客户端的IP
  • VIP: Virtual IP LVS实例IP,一般是暴露在公网中的地址;向外部直接面向用户请求,作为用户请求的目标的IP地址
  • DIP: Director IP,主要用于和内部主机通讯的IP地址
  • RIP: Real IP 后端服务器的真实IP
  • DS: Director Server 指的是前端负载均衡器节点
  • RS: Real Server 后端真实的工作服务器

NAT模式

NAT(Net Address Transition)即网络地址转换模式

[图片上传失败…(image-2138b5-1615470382448)]

图中黄色数据包是从客户端到LVS集群的,绿色数据包是从LVS集群到客户端的,大概过程如下:

  1. 数据包CIP->VIP,如果直接将数据包塞给RS,RS会丢弃,因此LVS修改目标地址VIP为RIP(D-NAT),此时数据包变成CIP->RIP发给RS
  2. RS处理完成后发送数据包RIP->CIP,这个数据包直接塞给客户端,客户端是不会收的,因为客户端是发给VIP的,但是回来就变成RIP给客户端的了,客户端也会丢弃,因此LVS修改源地址为VIP(S-NAT),此时数据包变成VIP->CIP发给客户端

整个过程保证一个原则:怎么来的就怎么回去,按照Socket四元组IP反向发回去!比如就客户端和LVS而言发来的是CIP->VIP,发回去就得是VIP->CIP,LVS和RS之间也是同样的道理

特点

  • RS应该使用私有地址,DIP和RIP必须在同一个网段内,RS的网关必须指向DIP(因为最终给CIP的数据包要扔回给LVS)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码狂魔v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值