LVS-负载均衡

目录

一、概念

二、LVS工作原理

1. ipvs/ipvsadm

2.名词:

三、常用命令

四、工作模式

1.NAT地址转换模式

(1)工作流程

(2)特点

(3)实验过程

a.环境准备:

b.修改测试机的IP信息:

c.修改负载均衡服务器网卡信息

d.修改应用服务器的IP

e.负载均衡服务器-配置集群

f.测试机访问测试

g.应用服务器监听日志

h.测试机进行压力测试

2.DR路由模式

(1)工作流程

(2)特点

(3)实验过程

a.客户端修改IP

b.应用服务器修改IP

c.负载调度器修改IP

d.路由器修改IP

e.负载调度器配置路由转发

f.应用服务器配置

g.负载调度器创建集群

h.客户端访问测试

i.路由器配置DNAT规则

j.客户端访问测试

k.路由器配置SNAT规则

l.应用服务器关闭长连接

m.测试机访问测试

3.IP Tunneling (IP 隧道)模式

(1)工作流程

(2)特点

五、负载均衡算法

1.静态算法:

2.动态算法


一、概念

        LVS" 通常指的是 "Linux Virtual Server",这是 Linux 内核中的一种负载平衡解决方案。Linux Virtual Server 用于提升网络服务的可扩展性和可靠性,它通过将传入的请求分发到后端服务器集群来实现。

二、LVS工作原理

1. ipvs/ipvsadm

  • IPVS钩子函数,内核机制,在请求没有到达目的地址之前,捕获并取得优先控制权的函数。把所有的数据包根据匹配判断规则审核,决定如何处理(内核机制
  • IPVSADM工作在用户空间,负责为ipvs内核框架编写规则,定义谁是集群服务,谁是后端真实的服务器(管理命令

   

2.名词:

        CIP:客户端IP

        DIP:负载调度器IP(指单个负载调度服务器)

        VIP:集群IP(代表整个服务器组,集群)

        RIP:真实服务器IP

三、常用命令

#命令:ipvsadm#常用参数:-A, --add-service:添加一个新服务。-E, --edit-service:修改一个已存在的服务。-D, --delete-service:删除一个服务。-C, --clear:清除所有虚拟服务和它们的服务器。-L, --list:列出所有虚拟服务及其的服务器。-a, --add-server:向服务添加一个服务器(真实服务器)。-e, --edit-server:修改一个真实服务器的参数。-d, --delete-server:从服务中删除一个服务器#服务和服务器指定参数:-t, --tcp-service:指定 TCP 服务,需跟上服务地址和端口。-u, --udp-service:指定 UDP 服务,同样需跟上地址和端口。-f, --firewall-mark:指定使用防火墙标记的服务。-r, --real-server:指定真实服务器地址和端口。-g, --gatewaying:使用 Direct Routing 网关方式。-i, --ipip:使用 IPIP 隧道模式(Tunneling)。-m, --masquerading:使用 NAT 模式。#调度算法参数:-s, --scheduler:指定服务使用的调度算法,如 rr(轮询)、wrr(加权轮询)、lc(最少链接)等。
#查看集群
ipvsadm -ln
#查看集群流量信息
ipvsadm -lnt 10.88.54.31:80 --stats
#创建集群
ipvsadm -A -t 192.168.10.110:80 -s rr
#向已存在的集群中添加应用服务器(使用NAT模式)
ipvsadm -a -t 192.168.10.110:80 -r 192.168.11.120:80 -m
ipvsadm -a -t 192.168.10.110:80 -r 192.168.11.130:80 -m
#从指定集群中删除某应用服务器
ipvsadm -d -t 192.168.10.110:80 -r 192.168.11.120:80
#删除集群
ipvsadm -D -t 192.168.79.10.110:80
#修改指定集群内某应用服务器的【模式】和【权重】
ipvsadm -e -t 192.168.10.110:80 -r 192.168.79.11.120:80 -g -w 2
#修改指定集群的算法
ipvsadm -E -t 192.168.10.110:80 -s wrr

四、工作模式

1.NAT地址转换模式

(1)工作流程

1.客户端将请求交给负载调度器,客户端发出数据包,此时这个数据包的源ip为CIP,目标ip为VIP(集群ip)

2.数据包到达负载调度器后,修改数据包的目标ip地址为真实服务器的ip,此时数据包的源ip为CIP,目标ip为RIP

3.将数据包发送给RS,之后RS响应将数据包发回给负载调度器,此时数据包的源ip为RIP,目标ip为CIP

4.负载调度器在转发时,会将源ip地址改为自己的VIP地址,然后再发给客户端,此时数据包的源ip为VIP,目标ip为CIP。

(2)特点

    1.负载调度器和真实服务器,必须位于同一网络

    2.真实服务器的网关必须指向DIP

    3.负载调度器必须位于客户端和真实服务器之间

    4.RIP通常都是私有地址,仅用于各个集群节点通信

    5.支持端口映射

    6.真实服务器可以使用任意操作系统、负载调度器必须是LINUX系统

(3)实验过程

a.环境准备:

四台虚拟机:一台图形化(测试机),一台均衡负载服务器,两台httpd应用服务器

使用10和11网段,测试机修改网卡为vmnet10(仅主机模式);

均衡负载服务器,添加一张网卡,vmnet10(仅主机模式)和vmnet11(仅主机模式);

两台httpd应用服务器vmnet11(仅主机模式)

b.修改测试机的IP信息:

    更改网段,网关指向负载调度器

    修改hosts文件

#均衡负载服务器IP
192.168.10.86    www.hongfuedu.com
c.修改负载均衡服务器网卡信息
#先修改10网段
#查看需要增加的网卡名
ip a#修改网卡名和11网段,删除UUID#开启路由转发功能
vim /etc/sysctl.confnet.ipv4.ip_forward=1      #检查路由转发功能是否开启成功
sysctl -p
d.修改应用服务器的IP
#应用服务器一
#修改IP地址,网关指向均衡服务器#配置访问网页文件
yum -y install httpdecho “120...” >> /var/www/html/index.htmlsystemctl restart network httpd
#应用服务器二
#修改IP地址,网关指向均衡服务器#配置访问网页文件
yum -y install httpdecho “130...” >> /var/www/html/index.htmlsystemctl restart network httpd
e.负载均衡服务器-配置集群
#安装命令行
yum -y install ipvsadm#查看集群
ipvsadm -ln#创建集群
ipvsadm -A -t 192.168.10.110:80 -s rr#向192.168.10.110的集群中添加192.168.11.120的应用服务器,-m代表NAT模式
ipvsadm -a -t 192.168.10.110:80 -r 192.168.11.120:80 -m
ipvsadm -a -t 192.168.10.110:80 -r 192.168.11.130:80 -m#再次查看集群的信息
ipvsadm -ln
f.测试机访问测试
1.先打开浏览器单独访问192.168.11.120和1302.浏览器访问www.hongfuedu.com
#可以成功,轮询有间隔是应用服务器keepalive的问题3.多次执行查看效果
curl www.hongfuedu.com
4.关闭长连接
#两台应用服务器执行
cd /etc/httpd/conf.d && cp -a /usr/share/doc/httpd-2.4.6/httpd-default.conf ./#修改配置文件中KeepAlive值为Off
vim httpd-default.confKeepAlive Off#重启服务
systemctl restart httpd5.回到测试机浏览器再次访问浏览器,效果显示成功
g.应用服务器监听日志
#监听浏览器访问日志
tailf /var/log/httpd/access_log#测试机的浏览器再次刷新,查看日志的变化效果
h.测试机进行压力测试
#查看是否有ab命令
which ab#安装服务
yum -y install httpd-tools#进行压力测试
#-c指定并发数量,-n为总访问次数,一次访问100个,共访问10次
ab -c 100 -n 1000 http://www.hongfuedu.com/index.html
ab -c 1000 -n 10000 http://www.hongfuedu.com/index.html#查看两台应用服务器监听的日志
wc -l /var/log/httpd/access_log#ab命令执行后再次查看
wc -l /var/log/httpd/access_log

2.DR路由模式

(1)工作流程

1.客户端发出数据包,源ip是CIP,目标ip是VIP

2.依靠路由把数据发送给负载调度器,负载调度器将数据包的源MAC地址修改为DIP的MAC地址。

3.目标MAC地址修改为RIP的MAC地址,此时源ip和目标ip均未修改。

4.由于DS和RS在同一网络中,所以通过二层来传输,通过路由再将数据包发到RS

5.RS接收数据包,之后通过lo接口传送给eth0向外发出,此时的源ip是VIP,目标ip为CIP。

6.最后通过路由发给客户端。

(2)特点

    1.负载调度器和真实服务器,必须位于同一网络

    2.真实服务器的网关必须指向路由器

    3.负载调度只处理入站请求

    4.RIP可以是私有地址,也可以是公网地址

    5.真实服务器可以使用任意操作系统,负载调度器必须是LINUX系统

(3)实验过程

a.客户端修改IP
1.测试机a.修改IP地址信息IP:192.168.10.86网关:192.168.10.81		#网关指向路由器的外网网卡systemctl restart network
b.应用服务器修改IP
应用服务器C7-5a.修改IP地址信息IP:192.168.11.84网关:192.168.11.81		#网关指向路由器的内网网卡systemctl restart network应用服务器C7-4a.修改IP地址信息IP:192.168.11.83网关:192.168.11.81		#网关指向路由器的内网网卡systemctl restart network
c.负载调度器修改IP
4.负载调度器C7-3a.修改IP地址信息IP:192.168.11.82网关:192.168.11.81		#网关指向路由器的内网网卡systemctl restart network
d.路由器修改IP
5.路由器C7-2a.修改IP地址信息IP:192.168.10.81systemctl restart networkb.cd /etc/sysconfig/network-scripts/ip addr		#查看需要增加网卡名称cp -a ifcfg-ens33 ifcfg-ens3*		#添加网卡,修改IP(内网),修改网卡名,删除UUIDc.vim /etc/sysctl.confnet.ipv4.ip_forward = 1		#开启路由转发功能
e.负载调度器配置路由转发
6.负载调度器C7-3a.cd /etc/sysconfig/network-scripts/cp -a ifcfg-ens33 ifcfg-ens33:0	#添加子网卡接口,修改IP(VIP)和网卡名192.168.11.200b.vim /etc/sysctl.conf新增:net.ipv4.conf.all.send_redirects = 0	#关闭路由重定向功能(防止更改目标IP)sysctl -p
f.应用服务器配置
7.应用服务器C7-4和C7-5同时控制a.yum -y install httpdb.echo “83” >> /var/www/html/index.htmlc.systemctl start httpdsystemctl enable httpdd.vim /etc/sysctl.conf新增:net.ipv4.conf.all.arp_ignore = 1	#关闭arp协议关于IP和MAC地址绑定的检查机制net.ipv4.conf.all.arp_announce = 2	#关闭arp协议关于IP和MAC地址绑定的检查机制sysctl -pe.cd /etc/sysconfig/network-scripts/cp -a ifcfg-lo ifcfg-lo:0		#新增回环网卡接口vim ifcfg-lo:0修改设备名lo:0	IP地址改为192.168.11.200掩码:255.255.255.255systemctl restart network		ifconfig lo:0		#查看回环网卡是否启动成功f.vim /etc/rc.local新增:route add -host 192.168.11.200 dev lo:0	#添加路由记录,使物理网卡和回环网卡能通信chmod +x /etc/rc.localroute add -host 192.168.11.200 dev lo:0		#执行命令,使修改的配置生效route -n	#查看添加的路由记录是否生效tailf /var/log/httpd/access_log		#监听日志
g.负载调度器创建集群
8.负载调度器C7-3a.yum -y install ipvsadmipvsadm -A -t 192.168.11.200:80 -s rr	#创建集群ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.83:80 -g	#向集群中添加DR类型服务器ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.84:80 -gipvsadm -ln		#查看集群的状态
h.客户端访问测试
9.测试机C7-6curl 192.168.11.200	#已经成功实现访问轮询
i.路由器配置DNAT规则
10.路由器C7-2cd /etc/sysconfig/		yum -y install iptables-servicesvim iptables  iptables -t nat -L		#查看nat表里的防火墙规则iptables -t nat -L	-n	#数字化显示防火墙规则iptables -t nat -A PREROUTING -i ens33 -d 192.168.10.81 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200:80	#进行目标地址转换iptables -t nat -L	-n	#再次查看防火墙规则
j.客户端访问测试
11.测试机C7-6curl 192.168.10.81		#测试查看效果
k.路由器配置SNAT规则
12.路由器C7-2iptables -t nat -A POSTROUTING -o ens33 -s 192.168.11.0/24 -p tcp --sport 80 -j SNAT --to-source 192.168.10.81		#源地址转换service iptables save		#保存防火墙规则
l.应用服务器关闭长连接
13.应用服务器C7-4和C7-5cp -a /usr/share/doc/httpd-2.4.6/httpd-default.conf /etc/httpd/conf.d/vim /etc/httpd/conf.d/httpd-default.confKeepAlive On改为Offsystemctl restart httpd
m.测试机访问测试
14.测试机C7-6浏览器访问192.168.10.81yum -y install httpd-toolsab -c 1000 -n 10000 http://192.168.10.81/index.html

3.IP Tunneling (IP 隧道)模式

(1)工作流程

    1.客户端发送数据包到负载调度器,此时数据包的源ip为CIP,目标ip为VIP。

    2.负载调度器会在数据包的外面再次封装一层ip数据包,封装源ip为DIP,目标ip为RIP。此时源ip为DIP,目标ip为RIP。

    3.之后负载调度器将数据包发给RS(因为在外层封装多了一层ip首部,所以可以理解为此时通过隧道传输),此时源ip为DIP,目标ip为RIP。

    4.RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP。

    5.之后将数据包发给客户端。

(2)特点

    1.所有真实服务器节点既要有RIP,又要有VIP,并且RIP、必须是公网ip

    2.负载调度器和真实服务器必须支持隧道功能

    3.负载调度器只处理入站请求

    4.真实服务器一定不能使用负载调度集群做默认网关

    5.不支持端口映射

五、负载均衡算法

1.静态算法:

静态算法:只考虑算法本身,不考虑后端服务器状态

    rr(轮循):从1开始到n结束

    wrr(加权轮循):按权重比例进行调度,权重越大,负责的请求越多

    sh(源地址hash):实现会话绑定,保留之前建立的会话信息。将来自于同一个ip地址的请求发送给    一个真实服务器。(同一个ip重复访问)

    dh(目标地址hash):将同一个目标地址的请求,发送给同一个服务器节点。提高缓存命中率(不同    的ip访问同一个资源)

2.动态算法

动态算法:既要考虑算法本身,也要考虑后台服务器状态(原理:通过hash表记录连接状态----            active/inactive)能不能扛得住

    LC(最少连接):将新的连接请求分配给当前连接数最少的服务器。 公式:活动连接*256+非活动连接

    WLC(加权最少连接):最少连接的特殊模式。      公式:(活动连接*256+非活动连接)/权重

    SED(最短期望延迟):加权最少连接的特殊模式。  公式:(活动连接 +1)*256/权重

    NQ  (永不排队):sed的特殊模式,当某台真实服务器连接为0时,直接分配,不计算

    LBLC(基于局部性的最少连接):dh的特殊模式,既要提高缓存命中率,又要考虑连接数量。先根据    请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且    有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

    LBLCR(带复制的基于局部性的最少连接):LBLCR=LBLC+缓存共享机制

    最好的是dh、LBLC、LBLCR。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39007.shtml

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

相关文章

UE5 动画蓝图

文章目录 一、State Machines二、Blend Spaces三、Aim Offset四、Montage 初步介绍 Unreal Engine 5 Tutorial - Animation Blueprint Part 1: State Machines (youtube.com) Unreal Engine 5 Tutorial - Animation Blueprint Part 2: Blend Spaces (youtube.com) Unreal Engi…

非静压模型SWASH学习(8)——三维孤立波在锥形岛屿上的爬坡过程(Runup of solitary waves on a conical island)

三维孤立波在锥形岛屿上的爬坡过程(Runup of solitary waves on a conical island) 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件数值求解方法输出设置模拟时间 波浪(孤立波)入射边界的时间序列.bnd文件模拟结果注…

[吃瓜教程]南瓜书第4章决策树

1.决策树的算法原理 从逻辑角度,条件判断语句的组合;从几何角度,根据某种准则划分特征空间; 是一种分治的思想,其最终目的是将样本约分约纯,而划分的核心是在条件的选择或者说是**特征空间的划分标准 ** …

mac安装达梦数据库

参考:mac安装达梦数据库​​​​​​ 实践如下: 1、下载达梦Docker镜像文件 同参考链接 2、导入镜像 镜像可以随便放在某个目录,相当于安装包,导入后就没有作用了。 查找达梦镜像名称:dm8_20240613_rev229704_x86…

第1章 人工智能的基础概念与应用导论

亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…

Figma-ui设计学习APP Store

Figma汉化:Figma 中文社区_插件组件库,软件汉化教程 - Figma.Cool 选择Chorme汉化版离线包 插件安装: 打开浏览器安装扩展,解压加载进去即可。 打开标尺,设置左右内边距参考线(左21 右356),wi…

【postgresql】版本学习

PostgreSQL 17 Beta 2 发布于2024-06-27。 PostgreSQL 17 Beta 2功能和变更功能的完整列表:PostgreSQL: Documentation: 17: E.1. Release 17 ​ 支持的版本: 16 ( 当前版本) / 15 / 14 / 13 / 12 ​ 不支持的版本: 11 / 10 / 9.6 / 9.5 /…

探索工业AI智能摄像机的高端科技

在当今快速发展的工业智能化领域,工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注(文末有国外工程师的评测链接)。搭载Raspberry Pi CM4支持的旨在广泛应用,涵盖从简单的条形码扫描到基于人工智能的工业环境中的缺…

7.1.SQL注入-基于函数报错的方式来利用updatexml()

基于函数报错的方式来进行利用-字符型(本页updatexml()) 前提条件是后台数据库没有屏蔽数据库语法报错信息 updatexml()方法详解 注释: 第一个参数,意思就是xml文档的名称 第二个参数,意思就是定位到xml文档中指定…

OFDM关键技术——ICI消除技术

ICI消除算法可以分为以下几类: 1、OFDM符号长度和载波间隔的最优选择,较短的符号周期更有利于降低ICI 2、OFDM基信号的最佳选择,选择频域衰减更快的OFDM基带脉冲 3、自干扰消除技术,将信息调制到一组子载波上 4、频域均衡器&a…

认识100种电路之耦合电路

在电子电路的世界中,耦合电路宛如一座精巧的桥梁,连接着各个功能模块,发挥着至关重要的作用。 【为什么电路需要耦合】 在复杂的电子系统中,不同的电路模块往往需要协同工作,以实现特定的功能。然而,这些模…

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图 生成自定义的词云图通常需要以下步骤: 1. 爬取数据:使用爬虫工具或库,如requests、BeautifulSoup等,可以爬取网页、论坛、社交媒体等平台上的文本数据。 2. 数据预处理&#xff1a…

uniapp微信小程序电子签名

先上效果图,不满意可以直接关闭这页签 新建成单独的组件,然后具体功能引入,具体功能点击签名按钮,把当前功能页面用样式隐藏掉,v-show和v-if也行,然后再把这个组件显示出来。 【签名-撤销】原理是之前绘画时…

AI影像测量:开启测量仪器的智能之眼

在基于机器视觉的影像测量中,一些复杂特征传统测量需要人工手动选点测量,不仅易受到人为因素的干扰,而且极大的降低测量效率,提高了人力成本和生产成本。AI影像测量技术运用先进的机器视觉和深度学习算法,可快速、准确…

【JVM】JVM 内存结构

程序计数器 Cpu 要不停的切换执行线程,所以在切换回同一个线程的时候要知道程序执行到哪了,程序计数器(PC 计数器),用来存储指向下一条指令的地址,也就是将要执行的代码。 程序的分支、循环、跳转、异常处…

QuickBooks 2024 for Mac:财务智慧,触手可及

QuickBooks 2024 for Mac是一款专为Mac用户设计的专业财务管理软件,它集成了多种实用功能,助力企业和个人用户高效管理财务事务。 📊 全面的财务管理工具:QuickBooks 2024 for Mac 提供了一套全面的财务管理功能,包括…

用免费的可视化工具制作3D智慧城市大屏,融合数字孪生,引领数据升级

在如今数据驱动的时代,越来越多的场景中都有可视化大屏的身影,许多企业和政府部门也从常规的二维看板渐渐地转向更加炫酷,立体的3D可视化大屏。3D可视化大屏成为了展示复杂数据、实时监控业务动态的重要工具。本文将详细介绍如何使用免费的数…

物联网工业级网关解决方案 工业4G路由器助力智慧生活

随着科技的飞速发展,无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代,一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能,助力我们步入智慧新纪元。 一、快速转化&…

Python处理excel数据详解

1.导入文件 注意:要把excel放到跟你的python文件在同一个地方 import pandas as pd import numpy as np dfpd.read_excel("鸢尾花训练数据.xlsx",engine"openpyxl") import pandas 先引入 (若没有下载 需要在终端下载 pip install pandas)…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给…