lvs使用

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://www.mzph.cn/news/4981.shtml

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

相关文章

制作Visual Studio离线安装包

vs2015之后官网就不提供离线安装包了,使用离线安装包就需要自己手动制作一个; 以vs2019为例: 先去官网下载在线安装器 官网下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com) 展开2019的标签…

【C语言】深剖数据在内存中的存储

👦个人主页:Weraphael ✍🏻作者简介:目前正在回炉重造C语言(2023暑假) ✈️专栏:【C语言航路】 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你…

初识react

初识react 第一步就给我出个问题版本太低 https://www.cnblogs.com/gslgb/p/16585233.html https://blog.csdn.net/xiangshiyufengzhong/article/details/124193898 第二个问题 便利生成dom 需要绑定key 不要总想着加冒号这不是vue 第三个问题 我p标签包裹 MapList组件 MapLis…

Redis相关配置(3)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ 文章目录 Redis相关配置1、units2、Include3、loadmodule 加载模块4、NET…

创意网页模板免费下载,让你的网站与众不同!

今天给大家带来的网站模板素材,网站类型丰富,包含户外旅行、餐饮、个人网站等等,可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?categorydesign&sourcecsdn&planbbqcsdn772 1、设…

【1++的C++初阶】之vector

👍作者主页:进击的1 🤩 专栏链接:【1的C初阶】 文章目录 一,什么是vector?二,构造与析构三,vector迭代器的实现四,vector部分重要接口的实现 一,什么是vector? vector…

使用NVIDIA FX Composer验证多纹理合成效果

最近项目上有一个需求,需要将4张带透明通道纹理合成为一张,并且每张纹理指定一个全局透明度。由于纹理过多,合成效果无法保证,为了减少项目的风险,领导希望我先快速验证一下我们讨论的方法是否能完成项目的要求。因此我…

销售易的12年与七个瞬间

导读:企业级没有捷径 12年对一家企业意味着什么? 在消费互联网领域,12年足够长,短短几年内上市的故事过去屡见不鲜。在企业服务的toB领域,产业成熟和企业发展的时间维度被拉长,但故事同样精彩。 2023年7月1…

ylb-接口5产品详情

总览: 1、service处理(根据产品id ,查询产品信息) 在api模块下service包,ProductService接口添加新方法(根据产品id ,查询产品信息queryById(Integer id)): package …

Python venv 和 virtualenv 虚拟环境的基本使用

1.前言 venv 和 virtualenv 都是搭建虚拟环境的工具,virtualenv 是第三方开源的,而 venv 作为 virtualenv 的一个子集自 Python3.3 开始集成到标准库中,在 virtualenv 的文档中可以看到他们的区别: 没有 app-data 种子方法&#…

Python爬虫——urllib_post请求百度翻译

post请求: post的请求参数,是不会拼接在url后面的,而是需要放在请求对象定制的参数中 post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字…

isaac sim添加孔网格

isaac sim仿真和其它仿真实际上一样,对于孔的仿真,是没那么简单的 在此记录一下踩过的坑 1,首先,你需要在soildworks中将你的孔画出来,并导出stl 2,你可以在win10中使用3D画图查看孔的网格,看…

【css】用css样式快速写右上角badge徽标,颜色设置为渐变色

先看效果展示&#xff0c;已公开显示在图片卡片的右上角。 首先是dom代码&#xff1a;需要两个view或者div&#xff0c;public-badge是“已公开”那个矩形&#xff0c;show-signal是右边那个下三角&#xff0c;也就是阴影部分&#xff0c;这样看起来比较有立体感。 <view…

虚拟化技术及实时虚拟化概述

版权声明&#xff1a;本文为本文为博主原创文章&#xff0c;未经本人同意&#xff0c;禁止转载。如有问题&#xff0c;欢迎指正。博客地址&#xff1a;https://www.cnblogs.com/wsg1100/ 文章目录 一、前言二、分时系统三、虚拟化介绍四、虚拟化实现方式及分类模拟器Type2虚拟化…

欧姆龙PLC联网

一、设备信息确认 左上角的为PLC型号,如图该PLC型号为CP1H,不同型号的欧姆龙PLC通讯方面有什么差别呢? 通讯能力和方式不同: 有些型号PLC自带网口,有些则需要扩展(上图中右侧的两个红框内为后扩展的通讯口,扩展模块可以随意组合双网口,双232串口,双485串口都可以)…

JDBC编程连接MySQL数据库遇到的两个错误

在进行java与MySQL数据库进行连接的时候我遇到了两个报错&#xff0c;在一开始的时候遇到的报错是Access denied for user yulinlocalhost (using password: YES)&#xff0c;此时我在网络上搜索发现是密码出现错误的问题&#xff08;出现该问题确实是密码错误&#xff09;&…

【DevOps】Atlassian插件开发指南

本文以Bamboo插件开发为例&#xff0c;记录一下插件开发过程。 一、简介 Atlassian Bamboo 6.9.1 是一款持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;支持使用插件扩展其功能。如果需要开发自己的 Bamboo 插件并添加到 Bamboo 中&#xff0c;则可以参考…

设计模式——享元模式

享元模式 定义 享元模式&#xff08;Flyweight Pattern&#xff09;是池技术的重要实现方式。 使用共享对象可以有效地支持大量的细粒度对象。 优缺点、应用场景 优点 可以大大减少应用程序创建对象的数量&#xff0c;降低程序内存占用。 缺点 提高了系统的复杂度&…

spring-IOC

IOC容器 简介 IoC(Inversion of Control)控制反转&#xff0c;是一种基于面向对象编程法则的设计思想&#xff0c;它设计出的程序具有松耦合、更优良的特点。 IoC容器是Spring框架中重要的核心组件之一&#xff0c;贯穿了Spring从出生到成长的整个过程&#xff0c;Spring通过I…

零基础学习,轻松打造物业服务小程序

现如今&#xff0c;物业服务已经成为了人们生活中不可或缺的一部分。为了更好地满足人们对物业服务的需求&#xff0c;许多企业和个人开始开发物业服务小程序&#xff0c;以便提供更加便捷和高效的服务。然而&#xff0c;对于大多数人来说&#xff0c;搭建一个小程序可能需要一…