lvs的调度算法有几种_lvs负载均衡系统(dr模式)部署与验证

news/2024/7/24 5:59:24 标签: lvs的调度算法有几种

745146669d8c90c0368ac1a2d5be55c6.png

一、lvs负载均衡简介

LVS(Linux Virtual Server)是最常用的开源负载均衡之一,LVS已经被集成到Linux内核模块,具有性能高的特点。终端互联网用户从外部访问企业的负载均衡服务器,也就是LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。

LVS调度算法非常灵活,常用有以下几种

1.轮询调度

轮询调度(Round Robin),最大的特点就是实现简单。轮询算法适合所有服务器的性能相同,调度器会将收到的请求平均分配到每个真实服务器。

2.加权轮询调度

加权轮询(Weight Round Robin),主要是对轮询算法的一种优化与补充,WRR会考虑到每台服务器的性能,并给每台服务器添加一个权值,权值越高的服务器,将处理更多的请求。

3.最小连接调度

最小连接(Least Connections ),是把新的连接请求分配到当前连接数最小的服务器。

4.加权最小连接调度

加权最少连接(Weight Least Connections),作为最小连接的补充,和wrr一样,可以给服务器分配不同的权值。

5.源地址散列调度

源地址散列调度(Source Hashing ),先根据请求的源IP地址,分配固定的服务器。如果第一次连接的服务器未超载,那么相同的源地址一直连接相同的服务器。

二、lvs的实现。

Lvs的组网模型有nat,dr,tunnel等,其中dr模式的性能较高,本实验以lvs的dr模式为例,来看lvs的实现及原理。

相关概念

Lvs服务器:作为负载均衡节点,负责接收客户端的请求,并进行调度。

真实服务器(realserver):真正处理请求的服务器。

VIP:客户端访问的ip,这个ip在lvs服务器,真实服务器上都存在。其中真实服务器必须配在lo接口上。

c63b8223aef11a88811e6f5176f70f3a.png

Lvs负载均衡节点的物理网卡地址为192.168.1.236,vip为192.168.1.200

真实服务器节点1物理网卡地址为192.168.1.237,vip为192.168.1.200

真实服务器节点2物理网卡地址为192.168.1.238,vip为192.168.1.200

  1. 实现步骤

在lvs节点安装lvs软件,在真实服务器部署好相同的web服务。

通过shell脚本实现lvs集群的配置

Lvs节点脚本如下

#! /bin/bash

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

ipv=/sbin/ipvsadm

vip=192.168.1.200

rs1=192.168.1.237

rs2=192.168.1.238

ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev ens33:0

$ipv -C

$ipv -A -t $vip:80 -s wrr

$ipv -a -t $vip:80 -r $rs1:80 -g -w 1

$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

这里使用dr模式,并使用wrr调度算法,两台服务器的权值均设置为1

真实服务器脚本如下

#! /bin/bash

vip=192.168.1.200

ifconfig lo $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo

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

真实服务器需要修改网络内核参数,避免真实服务器对vip的arp响应,导致负载均衡系统失效。

三、结果验证

可以通过vip来访问web站点,且根据轮询调度算法将请求合理分配到两台真实服务器。

7c2a6267ac5725dc9d6c786252aae66e.png

原理分析:

在客户端上查看arp表

8f107b3259cd14f206648d282b8ca098.png

Windows 客户端arp表

b05b1ad971a8dc85cfcf4c60d6a00d37.png

Fedora客户端arp表

可以看到vip对应的mac地址是lvs节点的,但是lvs并未开启web服务,而是将web请求转发到真实服务器,由真实服务器提供web服务

56175be665d3b945a3acc0c72b30b178.png

下图是真实服务器的抓包记录,可以看出web请求已经转发给真实服务器,然后由真实服务器提供响应服务

a0685abb455696a22fb09a58858b8eff.png

ebe650210c8831f4c2db9ec8710bd30b.png

http://www.niftyadmin.cn/n/1284262.html

相关文章

使用element UI非必填字段校验的效果修改

必填字段应该达到的效果是: 不填-> 提示应该要填写 填写-> 对了 -> 框变绿 -> 错了 -> 框变红 提示错误原因 非必填字段应达到的效果是: 不填-> 不校验 填了-> 校验 -> 正确绿框 错误红框 填了删除-> 不校验 方法一、自…

快速学习Oracle-单行函数

1. 字符函数 接收字符输入返回字符或者数值,dual 是伪表 把小写的字符转换成大小的字符 upper(smith)把大写字符变成小写字符 lower(SMITH)2. 数值函数 四舍五入函数:ROUND() 默认情况下 ROUND 四舍五入取整,可以自己指定保留的位数。 …

一个容易误解的小问题:TextBox的EnableViewState为false后,为什么点击按钮PostBack,TextBox的内容还是会保持(Persist)?...

Page对象的EnableViewState属性为false&#xff0c;意味着整个页面&#xff08;包括其中的所有服务器端控件&#xff09;的ViewState被禁用&#xff0c;但是<input type"hidden" name"__VIEWSTATE" value"...." />并不消失&#xff0c;这个…

配置库用户_Mysql相互复制(互为主从)详细配置步骤

文章目录前言1. 设置数据库的配置文件库1&#xff1a;库22. 进入数据库创建从账号库1&#xff1a;库2&#xff1a;3. 查看生成的binlog日志&#xff0c;记录下来日志名字和起始位置。库1&#xff1a;库2&#xff1a;4. 进入数据库进行从读设置&#xff0c;指定要读的主服务库的…

在.NET中用不用htc

.net很多特性会反复的刷新页面&#xff0c;实际上在局域网内还没什么问题&#xff0c;如果在internet上&#xff0c;那用户体验就比较差。所以很多还是借助客户端的jscript去做比较好&#xff0c;那么封装成HTC就是一个非常好的主意。 比如验证模块&#xff0c;这个在.net中也有…

如何查询buckets更新_更好的理解 MySQL(1):查询和更新的内部实现

摘要在MySQL中&#xff0c;简单的CURD是很容易上手的。但是&#xff0c;理解CURD的背后发生了什么&#xff0c;却是一件特别困难的事情。在这一篇的内容中&#xff0c;我将简单介绍一下MySQL的架构是什么样的&#xff0c;分别有什么样的功能。然后再简单介绍一下在我们执行简单…

快速学习Oracle-多行函数(聚合函数)

1.统计记录数 count() 范例&#xff1a;查询出所有员工的记录数 注意:不建议使用 count(*)&#xff0c;可以使用一个具体的列以免影响性能。 2.最小值查询 min() 范例&#xff1a;查询出来员工最低工资 3.最大值查询 max() 范例&#xff1a;查询出员工的最高工资 4.查询…

应用ADO.net得到系统表信息

---------------------------------------------------------- 开发者&#xff1a;赵玉 开发时间&#xff1a;2005.1.13 功能&#xff1a;应用ADO.net得到表 ---------------------------------------------------------- Imports Zy_DataAccess Imports System Imports System…