lvs使用

article/2025/9/22 18:20:18

1.前言

LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡器,用于分发网络流量和将请求转发给后端服务器。LVS 提供了多种负载均衡算法和转发模式,以满足不同场景和需求的负载均衡需求,在LVS中定义虚拟服务的VIP(Virtual IP)和端口是为了将客户端的请求引导到负载均衡器,并进行负载均衡和请求转发,虚拟服务的VIP是一个虚拟的IP地址,对客户端而言,它是服务的入口地址。客户端将请求发送到虚拟服务的VIP地址,而不是直接发送到后端服务器的实际IP地址。这样,负载均衡器可以根据定义的负载均衡算法,将请求转发给后端服务器,实现负载均衡和流量分发的功能

2.lvs功能

LVS 提供了三种负载均衡的转发模式

NAT 模式(Network Address Translation):在LVS的NAT模式中,当客户端发送请求时,请求经过负载均衡器后,负载均衡器会对请求进行地址转换,并将请求转发给后端服务器。后端服务器处理请求后,将响应返回给负载均衡器,负载均衡器再将响应转发给客户端。这种模式下,负载均衡器扮演了中间转发角色,需要处理请求和响应的转发和转换,既要处理请求的接入,又要处理请求的响应,会存在较大性能瓶颈

DR 模式(Direct Routing):在LVS的DR模式中,负载均衡器通过修改网络的ARP表,将客户端请求直接路由到后端服务器。后端服务器直接与客户端进行通信,将响应直接返回给客户端,而不需要经过负载均衡器。在这种模式下,负载均衡器主要负责请求的路由和负载均衡,而不参与实际数据包的转发和响应,因为只负责转发消耗的资源小,因此性能高,存在的瓶颈小

TUN 模式(Tunneling):负载均衡器在网络层上对请求进行封装和解封,将请求转发给后端服务器,限制比较大,实际中较少使用

DR模式相对于NAT模式具有以下优势:

减少负载均衡器的工作量:DR模式下,负载均衡器不需要处理请求和响应的转发和转换,可以减轻负载均衡器的负担,提高性能和可扩展性

减少延迟:由于响应直接由后端服务器返回给客户端,无需经过负载均衡器的中转,可以减少延迟,提高响应速度

可扩展性:DR模式允许将负载均衡器和后端服务器分别部署在不同的子网中,提供更高的可扩展性和灵活性

lvs负载均衡策略

轮询(Round Robin):这是最常见的负载均衡策略之一。每个新的请求按照顺序分发给后端服务器。当所有后端服务器都参与负载均衡时,请求将按照相等的权重轮流分发给它们。这种策略适用于后端服务器配置相似、负载均匀的情况

加权轮询(Weighted Round Robin):类似于轮询策略,但每个后端服务器分配一个权重值,根据权重值分配请求。具有较高权重值的服务器将获得更多的请求。这个策略适用于后端服务器的性能不同,希望按照性能分配负载的情况

最少连接(Least Connection):根据后端服务器的当前连接数来选择最少连接的服务器来处理新请求。这种策略可以确保负载均衡,使得请求分布更加均匀,适用于长连接或有长时间处理请求的场景

源IP散列(Source IP Hash):根据客户端的源IP地址对请求进行散列,并将其路由到相应的后端服务器。相同的源IP地址将始终被路由到相同的服务器上,这对于需要保持会话一致性的应用程序很有用

最快响应时间(Least Response Time):根据后端服务器的响应时间来选择最快响应的服务器来处理新请求。这种策略尝试将请求发送到能够更快响应的服务器,以提供更好的用户体验

3.ipvsadm工具介绍

ipvsadm 是一个管理 Linux Virtual Server (LVS) 内核模块的命令行工具。它允许你配置和管理 IP 负载均衡器

-A--add-service:添加一个新的负载均衡服务

-C--clear:清除所有现有的负载均衡服务

-D--delete-service:删除指定的负载均衡服务

-E--set:设置负载均衡服务的属性

a--add-server:向负载均衡服务中添加一个后端服务器

-d--delete-server:从负载均衡服务中删除指定的后端服务器

-g--gatewaying:将负载均衡服务设置为网关模式

-e--expire-nodest:设置后端服务器的超时时间

-m--masquerading:将负载均衡服务设置为伪装模式

-r--scheduler:指定负载均衡服务的调度器算法

-w--weight:设置后端服务器的权重

-L--list:列出所有负载均衡服务及其相关配置

-S--save:将当前配置保存到文件

-R--restore:从文件中恢复配置

也可以通过以下命令查看

ipvsadm --help

4.lvs使用

以下就通过使用nat模式和dr模式分别来展示lvs的使用,负载均衡策略这里我们统一使用轮询模式

主机信息

nameipportservice
A10.1.60.115、10.1.60.116(虚拟地址)80lvs
B10.1.60.11280nginx
C10.1.60.11480nginx

nat模式

 

所有主机均关闭selinux和防火墙

在A主机执行以下配置

开启内核转发

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

执行以下命令使配置生效

sysctl -p

增加虚拟网卡(模拟真实环境中的外网ip)

ifconfig ens160:1 10.1.60.116/24

需要删除的话可以使用down参数

ifconfig ens160:1 down

安装ipvsadm工具,用于配置ipvs规则

yum -y install ipvsadm

配置lvs负载均衡服务

ipvsadm -A -t 10.1.60.116:80 -s rr

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.114:80 -m

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.112:80 -m

-m:配置为nat模式   -r:配置后端真实地址 -t:配置虚拟地址 -s:配置负载均衡策略为rr轮询策略

查看lvs策略

 在B、C主机执行以下配置

将网卡的网关配置为A主机的地址,即10.1.60.115

 vi /etc/sysconfig/network-scripts/ifcfg-ens160 

 重启网络服务

systemctl restart network

查看路由信息

route -n

更改nginx的默认页面

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak

D主机则将C改为D即可

echo "this is C" >> /usr/share/nginx/html/index.html

启动nginx服务并配置开机启动

systemctl start nginx

systemctl enable nginx
 

使用其它主机访问可以发现访问正常,不能用同网段的主机访问

RD模式

所有主机均关闭selinux和防火墙

在A主机执行以下配置

配置一个虚拟网卡

ifconfig ens160:1 10.1.60.116/24

ip add

配置lvs规则

ipvsadm -A 10.1.60.116:80 -s rr                     #配置负载均衡服务

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.112:80 -g     #为负载均衡服务添加后端的转发地址

ipvsadm -a -t 10.1.60.116:80 -r 10.1.60.114:80 -g     #为负载均衡服务添加后端的转发地址

-g:配置为DR模式   -r:配置后端真实地址 -t:配置虚拟地址 -s:配置负载均衡策略为rr轮询策略

查看lvs规则

ipvsadm -Ln

在B、C主机执行以下配置

增加虚拟网卡配置为A主机的虚拟网卡地址,但是只用于接收客户数据,不能被外部访问,在此就引用lo网卡配置

ifconfig lo:1 10.1.60.116 netmask 255.255.255.255

ip add

优化内核arp参数配置

vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

执行以下命令使配置生效

sysctl -p

配置路由

route add -host 10.1.60.116 dev lo:1

route -n

 在其它主机访问测试

curl 10.1.60.116

可以看到访问虚拟地址可以正常被轮询转发到后端的服务


http://chatgpt.dhexx.cn/article/tt3bHFGH.shtml

相关文章

LVS负载均衡介绍

一、lvs是什么? LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的…

[高可用系列|LVS]LVS详解

背景 上一章我们说了keepalived,keepalived是避免负载均衡设备的单点故障的,即负载均衡设备的高可用。截止到目前为止,负载均衡我们只说到了Nginx(四层,七层负载),接下来的我们介绍的LVS也是用来…

lvs看这篇就够了

1lvs 的由来 1公司的钱大部分都花在了获客,营销上,营销效果好就会带来新的流量,如果自身应用承接不住大的流量将会造成很大的经济损失。所以lvs负载均衡技术就此诞生了。当然不差钱也可以使用F5 等硬件 lvs 学名 Linux虚拟服务器 LVS是Linux …

lvs负载均衡之配置lvs-nat模式的httpd负载集群---http和https

文章目录 Lvs简介体系结构LVS管理工具Ipvsadm核心功能LVS工作模式及原理 LVS调度算法配置lvs-nat模式的httpd负载集群---http配置lvs-nat模式的httpd负载集群---https Lvs简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主…

LVS基本知识概述

1.什么是LVS? LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中 该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体…

LVS介绍

一、LVS是什么 LVS(Linux Virtual Server),是一个极好的负载均衡解决方案,它将一个真实服务器集群虚拟成一台服务器来对外提供服务,同时在真实服务器集群中实现了负载均衡。该技术由章文嵩博客发起,从linux…

LVS详解

LVS简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 LVS名词解释 DS:director server,即负载均…

LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

一、LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1…

程序员必备的 10 大国外技术网站

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 今天给大家推荐 10 个国外比较优质的技术网站,希望大家喜欢。 1、dev dev社区和国内的掘金社区很相似,技术分类也比较多,像 Java、Python、js、分布式等…

程序员经常浏览的 60 个技术网站汇总,还不赶快收藏!

>>号外:关注“Java精选”公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料、开源项目。 程序员是一个需要不断学习的职业。幸运的是,在这个互联网时代,知识就在那里,等着我们去获取。 作…

国内10大技术网站,你最爱和哪个玩耍?

所谓“物以类聚,人以群分” 所谓“士为知己者死,女为悦己者容” 所谓“世上的乌鸦都一般黑,鸽子却各有各的白” ...... CSDN,掘金,博客园等,说起来都是“技术”社区,每个却都有着不同的姿色和用…

IT网站推荐

IT网站推荐 1.首先肯定是 CSDN 啦,许多系统问题、软件安装问题都是在这弄好的。以及写代码时的各种懵逼,也可以在这里搜索解决。 觉得还是有必要附上链接 CSDN::https://www.csdn.net/ 2.MSDN:https://msdn.itellyou.cn/ 官网系…

推荐八个技术学习网站

推荐八个技术学习网站 写在前边的话八个纯技术学习好网站 写在前边的话 我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。在众多互联网技术网站中,各有各的好,经过网上收集整理&#xf…

IT技术相关网站

OSCHINA - 中文开源技术交流社区https://www.oschina.netCSDN - 专业开发者社区https://www.csdn.netSegmentFault 思否 - 中国领先的开发者技术社区https://segmentfault.xn--com-0da有穹_一个开发者的作品发布平台https://www.youqiong.net牛客网 - 找工作神器|笔试题库|面试…

it技术交流社区与学习资料的网站大全

点击上方蓝字"优派编程"选择“加为星标”,第一时间关注原创干货 对国内技术社区 博客园 https://www.cnblogs.com/ 掘金 https://juejin.cn/ 思否 https://segmentfault.com/ 开源中国 https://www.oschina.net/ 51CTO https://www.51cto.com/ V2EX https…

ResourceBundle读取配置文件及路径问题

读取配置文件 今天工作过程中,看到获取配置文件里面的值研究了一下,算是自己的一点小进步,分享出来,希望帮到大家。 (ssm项目) java.util.ResourceBundle,这个类的作用就是读取资源属性文件&am…

【Java】问题——ResourceBundle读取文件时出现的问题

ResourceBundle读取文件时出现的问题 问题产生 接手的一个运维项目代码写的乱,看到连接数据库信息直接写在class文件里面,不易管理,就是顺手写个wfc_config.properties文件,专门去存储相关的配置信息。整理好信息之后更新到服务…

ResourceBundle.getBundle()从哪里查找配置文件

ResourceBundle.getBundle()方法会在classpath中寻找配置文件,而在idea中一个模块的classpath不是src目录,而是位于out/product/相应模块目录下。 比如JDBC-test模块的classpath 不是 C:\Users\Administrator\IdeaProjects\javaExercise\JDBC-test\src&a…

ResourBundle.getBundle方法

import java.util.Locale; import java.util.ResourceBundle;public class Main {public static void main(String[] args) {//对于读取properties文件,我们可以使用Properties和ResourceBundle这两个类//但不同的是,ResourceBundle可以实现实现配置文件…

java之ResourceBundle类详细分析(全)

目录 前言1. 配置文件2. 方法3. 实战 前言 主要的作用: 当程序需要一个特定于语言环境的资源时(如 String),程序中可从当前的用户环境资源包中加载它。使得编写在很大程序上只是独立于当前的用户环境,将资源包中大部分…