LVS知识点

目录

LVS简介:

LVS的四种集群类型

1.NAT模式(VS服务器的压力太大)

2.DR模式

3.TUN模式(不常用)

4.fullnet模式(不常用)

LVS的算法

静态算法:

动态算法:

lvs部署命令

一些常用的ipvsadm命令参数:

ipvsadam的使用

LVS实验

LVS的DR工作方式部署

LVS中防火墙标签解决轮询错误


LVS简介:

LVS是Linux virtual server的缩写,为linux虚拟服务器,是一个虚拟的服务器集群系统。它通过将多个服务器组成一个虚拟服务器集群,实现了高效的负载均衡和流量分发。LVS的核心思想是利用IP负载均衡技术和内容请求分发机制,将客户端的请求均衡地分配给服务器集群中的各个节点。这种机制能够有效地提高服务器的利用率,降低单点故障的风险,并提供高可用性和可伸缩性的服务。

LVS的四种集群类型

1.NAT模式(VS服务器的压力太大)

NAT模式应用于网络层和传输层即改变数据包的ip和端口

工作过程(如下图所示):

1.客户端发出请求包,包中包含这客户端ip(cip)目的IP(vip)以及目的端口

2.VS收到请求进行调度修改,将目的IP由vip修改为服务器真实ip(rip)以及修改目标端口号

3.服务器rip收到请求做出响应发送数据包,此时数据包起始ip为rip目的ip为客户端ip(cip)

4.响应回去路上VS再次进行调度修改将起始ip转换为vip目的ip转换为cip以及转换对应的目的端口

5.客户端接受服务器的响应包

2.DR模式

作用于二层MAC基础上,减轻了VS的压力,是 LVS默认模式,最常用的集群类型。

工作过程:
1.客户端发送数据帧, 帧中包含客户端ip + 客户端的mac +vip+vip 的mac
2.VS收到请求进行调度修改, 把帧中的目的地址vip 的mac 该为真实服务器 mac ,此时帧中的数据为客户端ip + 客户端 的mac+vip+真实服务器 MAC
3.真实服务器 得到接受到请求 做出响应回应数据包,数据包中的内容为 vip+真是主机 MAC+ 客户端ip + 客户端ip 的 MAC

3.TUN模式(不常用)

TUN模式 不修改请求报文的IP 首部(源 IP CIP ,目标 IP VIP ),而在原 IP 报文之外再封装一个 IP 首部 (源IP DIP ,目标 IP RIP ),将报文发往挑选出的目标 RS RS 直接响应给客户端(源 IP VIP ,目标 IP是CIP
在TUN模式下,LVS通过创建一个隧道来封装和转发请求到后端服务器,这些服务器处理请求后直接将响应发回给客户端。

4.fullnet模式(不常用)

Fullnet模式是一种在LVS中配置的特殊模式,它允许使用Linux系统上的所有网络接口进行输入和输出负载均衡操作。这种模式的核心优势在于其能够利用全部可用的网络资源,从而最大化数据传输的效率和处理能力。

LVS的算法

根据其调度时是否考虑各 RS 当前的负载状态被分为两种:静态方法和动态方法
静态方法:仅根据算法本身进行调度,不考虑 RS 的负载情况
动态方法:主要根据每 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 将被调度

静态算法:

1 RR(roundrobin ):轮询调度RS ,当RS配置有差别时不推荐
2 WRR 加权轮询,根据 RS 的配置的权重进行调度,性能差的 RS 被调度的次数少
3 SH Source Hashing ,实现 session sticky ,源 IP 地址 hash ;将来自于同一个 IP 地址的请求始终发往第一次挑中的RS ,从而实现会话绑定
4 DH Destination Hashing ;目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS

动态算法:

1 LC least connections (最少链接发)
LC算法选择当前连接数最少的服务器来处理新的请求。这种算法适用于长连接应用,因为长连接会持续占用服务器资源。
2 WLC Weighted LC (权重最少链接)
WLC算法是LC的加权版本,它考虑了服务器的性能差异。权重越高,服务器可以处理的连接数越多。
3 SED Shortest Expection Delay,
SED算法优先考虑初始连接的延迟最短的服务器。新连接被赋予较高的优先级。
4 NQ Never Queue
NQ算法在第一轮中均匀分配请求,之后使用SED算法进行调度。
5 LBLC Locality-Based LC
LBLC是一种动态调度算法,它根据服务器的地理位置和负载情况来分配请求
6 LBLCR LBLC with Replication
LBLCR是LBLC的增强版,支持复制功能,可以从负载较重的服务器复制任务到负载较轻的服务器。

lvs部署命令

要成功部署LVS,首先要确保系统已经安装了ipvsadm工具。这个工具是用于管理LVS服务的命令行界面,通过它可以轻松地添加、删除和修改虚拟服务器和真实服务器之间的映射关系

一些常用的ipvsadm命令参数:

-A, --add-service:添加一个新的虚拟服务。例如,ipvsadm -A -t 192.168.1.100:80 -s rr 会添加一个使用轮询调度算法的TCP虚拟服务。

-E, --edit-service:修改现有的虚拟服务配置。通过这个命令,可以调整现有服务的调度算法、超时设置等参数。

-D, --delete-service:删除一个虚拟服务。这个命令用于从虚拟服务表中移除一条记录。

-C, --clear:清除整个IPVS表。这个命令将清空所有的虚拟服务和真实服务器配置。

-S, --save:将当前IPVS配置输出到标准输出。这可以用于备份当前的配置。

-R, --restore:从标准输入恢复IPVS表。与-S配合使用,可以实现配置的备份与恢复。

-a, --add-server:为虚拟服务添加一个新的真实服务器。例如,ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g 将指定的真实服务器以直接路由模式添加到现有的虚拟服务中。

-e, --edit-server:修改已存在的真实服务器配置。可以更改转发模式、权重等参数。

-d, --delete-server:从虚拟服务中删除一个真实服务器。当某个服务器需要下线维护时,可以使用此命令。

-L, --list:列出所有当前的IPVS配置。这对于检查当前配置状态非常有帮助。

-Z, --zero:将所有数据相关的记录清零。这些记录一般用于调度策略。

此外,ipvsadm还提供了一些高级选项来满足特定的负载均衡需求:

-p, --persistent [timeout]:设置持久连接的超时时间。这个选项可以使来自相同客户的多个请求被发送到同一个真实服务器,常用于FTP或SSL服务中。

-M, --netmask netmask:指定客户地址的子网掩码。这用于将同一子网内的请求转发到相同的服务器。

-r, --real-server server-address:指定真实服务器的地址和端口。如果没有指定端口号,将使用虚拟服务的端口号。

-f, --fwmark-service integer:通过防火墙标记来定义要负载均衡的数据包。这对于根据不同规则将流量路由到不同的服务器非常有用。

ipvsadam的使用

在LVS环境中添加虚拟服务器(Director),使用以下命令:      

ipvsadm -A -t 192.168.1.100:80 -s rr

这条命令会添加一个虚拟服务器,其IP地址为192.168.1.100,端口为80,并使用轮询调度算法(rr表示round-robin)

  接下来,将真实服务器(Real Server)加入到虚拟服务器中。对于NAT模式,使用以下命令:

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -m

这条命令会将IP地址为192.168.1.101且端口为80的真实服务器以NAT模式添加到前面定义的虚拟服务器池中。这里的-m标志表示使用MASQUERADE模式。

如果要配置直接路由(DR)模式,只需轻微修改上述命令:

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g

LVS实验

LVS的DR工作方式部署

实验准备:五台虚拟机

客户端配置NAT网卡ip地址为172.25.254.200

一台主机充当路由器,配置两块网卡,工作方式为仅主机和NAT,NAT的地址为172.25.254.100,仅主机地址为192.168.0.100

VS配置仅主机网卡,地址为192.168.0.100,并配置vip在lo上,地址为192.168.0.200

真实服务器1配置仅主机网卡,地址为192.168.0.10,并配置vip在lo上,地址为192.168.0.200

真实服务器2配置仅主机网卡,地址为192.168.0.20,并配置vip在lo上,地址为192.168.0.200

1.在真实服务器1,2上安装httpd服务,并制作默认页面,方便后期测试

yum install httpd -y

systemctl start httpd

echo webserver1 --192.168.0.10 > /var/www/html/index.html (RS1上)

echo webserver2 --192.168.0.20 > /var/www/html/index.html (RS2上)

2.RS1RS2中解决响应问题 ,使其只接受不发送

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

(RS1和RS2上均配置)

3.在VS上配置策略

ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g

ipvsadm -Ln(配置后进行查看)

测试:

LVS中防火墙标签解决轮询错误

http https 为例,当我们在 RS 中同时开放 80 443 端口,那么默认控制是分开轮询的,这样我们就出现了一个轮询错乱的问题,当第一次访问80 被轮询到 RS1 后下次访问 443 仍然可能会被轮询到 RS1
1.在VS上清空策略
ipvsadm -C

ipvsadm -Ln
2.在VS上理由iptables进行端口绑定,将80和443当作一个整体
iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports
80,443 -j MARK --set-mark 66

3.在VS上重新制定策略

ipvsadm -A -f 66 -s rr
ipvsadm -a -f 66 -r 192.168.0.10 -g
ipvsadm -a -f 66 -r 192.168.0.20 -g

测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值