lvs使用

news2025/1/10 21:51:44

1.前言

LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡器,用于分发网络流量和将请求转发给后端服务器。LVS 提供了多种负载均衡算法和转发模式,以满足不同场景和需求的负载均衡需求

2.lvs功能

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

NAT 模式(Network Address Translation):负载均衡器作为请求的源和目标,修改请求和响应的 IP 地址和端口,既要处理请求的接入,又要处理请求的响应,会存在性能瓶颈

DR 模式(Direct Routing):负载均衡器将请求直接转发给后端服务器,并修改请求和响应的 MAC 地址,因为只负责转发消耗的资源小,因此性能高,存在的瓶颈小

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

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://www.coloradmin.cn/o/749591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React在Dva项目中创建并引用页面局部组件

这篇文章我们演示Dva中编写组件的方式 官方这里也特意强调了UI这个关键词 跟多是作为我们界面元素的组件 而不是页面路由 我们要单独做路由的组件肯定还是直接放在我们Dva项目的src下的routes目录下就好了 然后 我们看 项目 src下有一个 components 目录 一般我们做什么前端项…

连接区块链节点的 JavaScript 库 web3.js

文章目录 前言web3.js 介绍web3.js安装web3.js库模块介绍连接区块链节点向区块链网络发送数据查询区块链网络数据 前言 通过前面的文章我们可以知道基于区块链开发一个DApp,而DApp结合了智能合约和用户界面(客户端),那客户端是如…

TCP三次握手、数据传输与四次挥手

一、建立TCP连接 —— 三次握手 (1)客户端向服务端发送一个携带初始序列号的SYN包。 (2)服务端收到后将其加入到半连接队列,然后向客户端回复携带初始序列号的SYNACK包。 (3)客户端收到后再向服…

ModelAttribute用法详解

目录 官方解释 例子 使用场景1 使用场景2 场景3 官方解释 首先看一下官方文档上该注解的解释: 可以看到ModelAttribute可以用在参数上,也可以用在方法上: Can be used to expose command objects to a web view, using specific attribu…

ceph--cephFS的使用

ceph分布式存储—cephFS的使用 1、cephfs的概念 ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过 ceph 协议挂载并使 用 ceph 集群作为数据存储服务器。 Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds&#x…

【Unity面试篇】Unity 面试题总结甄选 |Unity渲染Shader相关 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新…

怎样优雅地增删查改(六):按任意字段关键字查询

文章目录 实现应用测试 实现 定义按任意字段关键字查询过滤器(IKeywordOrientedFilter)接口,查询实体列表Dto若实现该接口,将筛选指定的目标字段(TargetFields)包含指定的关键字(Keyword&#…

软件开发的六大设计原则

我们常说软件开发要尽量具有良好的可扩展性,做到高内聚低耦合。那么究竟该如何实现呢?在面向对象软件设计领域有一系列大家所认可的设计原则,依据这些原则来设计软件,就可以让软件有很好的可扩展性,其中最重要的一条原…

发起投票平台投票吧网络投票平台网络投票平台

小程序投票活动如何做?很多企业在运营当中,都会通过投票活动来进行推广,从而达到吸粉、增加用户粘度等效果。而此类投票活动,通过小程序就可以实现,操作简单。 我们现在要以“青春大不同”为主题进行一次投票活动&…

扩展欧几里得 证明及应用代码(超详细,附带例题)

应用方面: 1.求解乘法逆元 2.求解(ax)%bc 即 a个x 模上b后得到c,其中满足条件的x的最小整数。[也可表示为axc(mod b)] 3.求解直线上的整点数 模板代码: 代码1: ll exgcd(ll a,ll b,ll &x,ll &a…

jeecgboot:vue3版本打包失败的解决过程

根据jeecgboot vue3的文档,把本地node升级到16,在本地运行都正常,打包后一直提示内存不足。 首先怀疑是代码配置问题,找到提示对应的地方,修改了package.json,把默认的NODE_OPTIONS--max-old-space-size81…

【批量将视频转为图像序列】

批量将视频转为图像序列 代码如下,代码中带有解释: # 导入所需要的库 import cv2 import os import numpy as np# 多个视频所在的路径 datasets_path ["/home/y/Code/数据集/1/007f.mp4","/home/y/Code/数据集/1/05f.mp4","/…

Python 打印文件执行路径和行号

文章目录 前言代码部分演示意外惊喜,文件位置跳转 前言 我最近在学Python,但是我感觉动态语言如果不打印文件路径和行号,到时候如果出问题Debug,除非你对业务特别熟悉,不然找不到问题的位置。 反正打印了也不亏 代码…

合宙Air001开发板系列教程—01环境搭建与点灯(基于Keil-MDK的开发)

近日合宙出品了一款: TSSOP20封装、ARMCortex-M0内核,内置32K Flash4K RAM、集成多路USART、IIC、SPI等通讯外设,5个16bit定时器以及1路12bit ADC和2路比较器的国产MCU10块钱一个开发板10个芯片,性价比还是很高的,加其…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升技术

空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号与注记 2.4 研究区…

ndk编译jni错误LOCAL_MAKEFILE is not defined,分析解决

概述 我们用ndk编译jni的时候,通常会写一个Android.mk脚本文件。但是有些情况,我们脚本文件名字不叫Android.mk,比如我的分别改成AndroidSo.mk,AndroidA.mk 这时候就会报错:LOCAL_MAKEFILE is not defined 软件环境 …

单片机数码管

LED数码管(LED Segment Displays)是由8个发光二极管构成,并按照一定的图形及排列封转在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点(固有时成为八段数码管)。 LED数码管有两大类&#xff0c…

从新手到高阶,企业培训直播玩法全攻略

首先,把握培训直播的整体规划。 管理端:直播内容管理纳入企业内部学习资源的建设,让企业内部的知识积累、沉淀形成体系。学员端:方便学员精准、快速定位到课程资源,方便快捷检索内容,学习体验简单易用。 其…

CP AUTOSAR中的EThTrcv

环境 EthTrcv驱动实际上是要实现EthIf指出的接口,包括如下API函数,描述在一个结构体里面 /** \brief type used in EthIf_EthTrcvDrvApi */ typedef struct sEthIf_EthTrcvDrvApiType { EthIf_EthTrcvCheckWakeupFctPtrType CheckWakeupOfEthTrcvDrvApi; /**< Et…

2023 JAVA 面试太难, 吃透这份 JAVA 架构面试笔记后, 成功涨到 30K

前阵子跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其实不差&#xff0c;进入团队干活后达到期望不难&#xff0c;但由于没准备或不会表…