百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux虚拟服务器LVS详解及部署配置实现Web业务访问负载均衡

ahcoder 2025-06-10 12:23 3 浏览

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,它是我国的章文嵩博士发起的一个开源项目,现在LVS已经是Linux标准内核的一部分。LVS主要用于多服务器的负载均衡,它工作在网络层,可以实现一个高性能,高可用的服务器群集,它具有良好的可靠性、可扩展性和可操作性,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。官方站点:http://www.linuxvirtualserver.org。

LVS体系架构

如上图所示,LVS可分为三部分:

  1. Load Balancer:这是LVS的核心部分,位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,它负责将客户的请求按照一定的算法分发到下一层(Server Array层)不同的应用服务器(Real Server)进行处理,自己本身不做具体业务的处理。
  2. Server Array:该层负责具体业务,由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,上层的Director Server其实也可以同时兼任Real Server的角色。
  3. Shared Storage:为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般由磁盘阵列设备组成。

LVS基本工作原理

LVS是工作在网络层,LVS通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发送至内核空间;
  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链;
  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链;
  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器。

LVS转发类型

这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如何返回给客户端数据等等。IPVS为此有三种转发类型:

  1. VS/NAT(Virtual Server via Network Address Translation)网络地址转换,即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。
  2. VS/TUN(Virtual Server via IP Tunneling)隧道模型,即IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。
  3. VS/DR(Virtual Server via Direct Routing)直接路由模型,即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户端,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最好的,应用比较广泛。

LVS-DR模型的工作原理:

  1. 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP(Client IP),目标IP为VIP;
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链;
  3. IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP(Director Server IP)的MAC地址,将目标MAC地址修改RIP(Real Server IP)的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址;
  4. 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server;
  5. RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP;
  6. 响应报文最终送达至客户端。

LVS调度算法

我们都知道Director Server要选择不同的Real server,那么它具体如何选择Real Server以达到负载均衡的呢,IPVS支持十种调度方法。

一)静态调度:

①RR(Round Robin):轮询调度

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度

②WRR:weight:加权轮询

由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

③SH:source hashing:源地址散列

根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器。

④DH:Destination hashing:目标地址散列

根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器。

二)动态调度:

①LC(Least-Connection):最少连接

最少连接调度算法是把新的连接请求分配到当前连接数最小的服务器,最小连接调度是一种动态调度短算法,它通过服务器当前所活跃的连接数来估计服务器的负载均衡。

②WLC(Weighted Least-Connection Scheduling):加权最少连接。

加权最小连接调度算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权限,加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

③SED(Shortest Expected Delay):最短期望延迟

基于wlc算法,简单算法:(active+1)*256/weight 【(活动的连接数+1)*256/除以权重】

④NQ(never queue):永不排队(改进的sed)

无需队列,如果有台realserver的连接数=0就直接分配过去,不需要再进行sed运算。

⑤LBLC(Locality-Based Least Connection):基于局部性的最少连接

基于局部性的最少连接调度算法根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

⑥LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

带复制的基于局部性最少链均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服接调度算法也是针对目标IP地址的负载务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。

LVS具体配置操作

实验环境三台Linux主机

Diretor server:192.168.52.20

Real server1:192.168.52.121

Real server2:192.168.52.122

下面我们VS/DR介绍详细的配置过程:

在Real server 1和2上面,配置web服务。

yum install httpd -y #安装http服务

echo “This is 192.168.52.12x!!!” > /var/www/html/index.html #配置两台web文件用于测试显示效果

systemctl start httpd #启动http服务

通过浏览器输入IP访问效果如下。


Diretor server上安装LVS。

yum install ipvsadm -y

Director Server上绑定一个虚拟VIP地址192.68.52.250,此IP用于对外提供服务。

ifconfig ens33:0 192.168.52.250 broadcast 192.168.52.250 netmask 255.255.255.255 up

添加路由,访问192.168.52.250都走ens33:0这块网卡。

route add -host 192.168.52.250 dev ens33:0

启用系统的包转发功能。

echo "1">/proc/sys/net/ipv4/ip_forward

如果之前配置过LVS,可先清除ipvsadm以前的设置。

ipvsadm -C

添加一个新的虚拟IP记录192.168.52.250,设置算法为rr轮询算法。
ipvsadm -A -t 192.168.52.250:80 -s rr

在新增的虚拟IP记录中新增两条real server记录,-g即为使用VS/DR模式
ipvsadm -a -t 192.168.52.250:80 -r 192.168.52.121:80 -g
ipvsadm -a -t 192.168.52.250:80 -r 192.168.52.122:80 -g

启用LVS服务。

ipvsadm

两台real server上的配置:
在环回口上绑定了虚拟IP地址,并添加路由。

ifconfig ens33:0 192.168.52.250 broadcast 192.168.52.250 netmask 255.255.255.255 up

route add -host 192.168.52.250 dev lo:0
禁用本机的ARP请求。

echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

最后在其他客户端机子上面,访问http://192.168.52.250/,则可以看到结果了,外部客户端的请求被均衡的分配到两台Real Server上,出现不同的界面。

相关推荐

Linux系统CPU性能评估(linux cpu性能评估工具)

对于Linux系统观察CPU性能的工具很多,如sar,vmstat,mpstat等,下面我们选最常用的vmstat做一个讲解说明。因为不同的系统同样的命令,结果可能会有差异,如centos和u...

「云计算培训摩尔狮」Linux 内存映射:性能提升的隐藏宝藏

在Linux编程领域,内存管理是一个极为关键的环节,它对应用程序的性能有着重大影响。Linux内存映射,便是一项常常未被充分利用的强大技术。接下来,我们将深入探讨内存映射的概念、工作机制,以及如...

linux服务器磁盘性能测试(linux服务器磁盘性能测试方法)

数据库是一个IO密集型的应用(在热点数据量比服务器可用内存大得多的情况下),IO的性能指标,是应用性能、用户体验的极其关键的一个因素,建议参考如下测试模型,对于FIO测试,标红的参数不能调整,对于单个...

微软Win10五月更新重磅来袭!7大漏洞修复,Linux子系统性能飙升

2025年5月14日,综合IT之家、新浪财经等报道微软这波操作,属实让Win10用户松了口气!就在今天凌晨,微软推送了代号KB5058379的五月累积更新,主打“安全+Linux子系统优化”,覆盖Wi...

Linux 性能更好的ftp客户端 lftp 使用详解

简介LFTP是一个命令行FTP客户端,支持多种文件传输协议,包括FTP、FTPS、HTTP、HTTPS和SFTP。它以其通过镜像、后台操作和脚本支持等特性有效管理复杂传输的能力而闻名。安装U...

Intel 13/14代酷睿最新补丁 Linux 实测!性能几乎没有损失

在Linux发布会上,Intel最近发布了一款最新的补丁,旨在提高13/14代酷睿处理器在Linux系统下的性能。今天,我们将为您详细介绍这款补丁的内容和实测结果。补丁内容Intel的...

Linux 6.15-rc6 发布 修复AMD CPU性能受限等问题 Linus回归樱桃机械键盘轴

LinusTorvalds今天发布了Linux6.15-rc6,并有望在两周内发布稳定版。本周,Linux6.15的合并版本中,6.15-rc6修复了一些意外跳过的TLB刷新问题,...

Linux Kernel 6.12震撼发布:实时性能飙升,开启全新计算时代!

概述LinusTorvalds在邮件列表中宣布推出LinuxKernel6.12,该版本带来了多项重要的更新和功能增强。更新亮点PREEMPT_RT支持主要内容:LinuxKernel...

Linux 系统性能监控工具集sysstat之sar(二)

上一篇介绍了sysstat的配置,存储以及sar如何观察CPU负载情况,这一篇介绍如何使用sar分析内存使用情况以及监控磁盘I/O活动情况上一篇:Linux系统性能监控工具集sysstat之sar(...

一文详解 Linux 性能分析命令:top

top命令是系统管理员必备的工具之一。它可以显示计算机运行时间、登录用户数、CPU负载、内存使用情况以及正在运行的进程列表。熟悉这些指标和界面,可以帮助系统管理员了解系统性能并预防故障。本文旨在帮...

Linux 系统性能监控工具集sysstat之sar(三)完结

原创不易上两篇介绍了sar监控CPU,内存,磁盘I/O活动情况第一篇:Linux系统性能监控工具集sysstat之sar(一)第二篇:Linux系统性能监控工具集sysstat之sar(二)(4)...

在Windows 11 WSL2上运行Ubuntu和原生运行有多大区别?

伴随着WindowsSubsystemforLinux(WSL)技术的不断成熟,越来越多的用户在Windows系统上体验Linux系统。那么相比较直接在设备上安装Linux系统,W...

Linux性能革命!Auto-Cpufreq 2.6重磅更新

Linux性能革命!Auto-Cpufreq2.6重磅更新,全新TUI监控让CPU状态一目了然!你是否经常为Linux系统的CPU频率波动而烦恼?想实时监控性能却找不到合适的工具?现在,auto-...

高性能Linux服务器构建实战:运维监控、性能调优与集群应用

百万级字迹详解实战案例,篇幅因素故只展现pdf目录,完整解析获取方式在篇尾了!目录读者对象Web应用篇(1至第3章)数据备份恢复篇(4至第6章)网络存储应用篇(7和第8章)运维监控与性能优化篇(9和第...

Linux:为什么性能工具需要 BPF 技术

了解更多BPF技术内幕,推荐阅读《BPF之巅:洞悉Linux系统和应用性能》一书。▼BPF是近年来Linux系统技术领域一个巨大的创新。作为Linux内核的一个关键发展节点,其重要程度不亚于虚拟...