LVS 四层负载均衡调度器详细配置及说明

LVS 简介

LVS(Linux Virtual Server):负载均衡调度器,负载均衡又分为四层和七层,本文章讲述的是四层的LVS负载均衡调度器。

DS:调度器,lvs的前端设备
RS:真正提供服务的后端服务器
RIP:后端服务器的ip地址
DIP:调度器和后端服务器通信的ip
源IP:CIP(客户端的IP)
目的IP:VIP(设置的统一入口),对外公布的ip,客户请求进来的ip
源MAC地址:DS调度器的MAC地址
目的MAC地址:RS真正服务器的MAC地址

LVS 的集群的四种工作模式

1、lvs-nat:修改请求报文的目标 IP ,多目标 IP 的 DNAT。

2、lvs-dr:操作封装新的MAC地址。

3、lvs-tun:在原请求 IP 报文之外新加一个 IP 首部。

4、lvs-fullnat:修改请求报文的源和目标 IP 。

LVS 的调度算法

静态调度算法:轮询调度(RR)、加权轮询调度(WRR)、来源哈希调度(SH)、目标哈希调度(DH);

动态调度算法:最少链接调度(LC)、权重最少链接调度(WLC)、初始链接高权重调度(SED)、初始均分后初始链接高权重调度(NQ)、动态目标哈希调度(LBLC)、带复制功能的动态目标哈希调度(LBLCR)、灰度调度(FO)、OVF调度算法。

LVS 的工作原理:LVS 根据请求报文的目标 IP 和目标协议及端口将其调度转发至某 RS(服务主机),根据调度算法来挑选 RS。

LVS 集群的 NAT 模式

LVS-NAT 模式的工作原理

NAT:地址转换。

1、本质是多目标 IP 的 DNAT ,通过将请求报文中的目标地址和目标端口修改为某个挑出的 RS 的 RIP 和 PORT 实现转发;

2、RIP 和 DIP 应在同一个 IP 网络,且应使用私网地址;RS 的网关要指向DIP;

3、请求报文和响应报文都必须经由 Director 转发,Director 易于成为系统瓶颈;

4、支持端口映射,可修改请求报文的目标 PORT;

5、VS必须是Linux系统,RS可以是任意OS系统。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LVS-NAT 模式的数据逻辑

注意:LVS 的 NAT 模式接收和返回客户端数据包时都要经过 LVS 的调度机,所以 LVS 调度机很容易阻塞。

1、客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP),访问目标端口(9000port);

2、VS服务器接收到访问请求,做 DNAT 把请求数据包中的目标由 VIP 换成 RS 的 RIP 和相应端口;

3、RS1 回应请求,发送响应数据包,包中的数据为:数据的来源(RP1)、响应目标(CIP)、相应端口(9000port);

4、VS服务器接收到响应数据包,改变包中的数据来源(RIP1 -> VIP),响应目标端口(9000 -> 80);

5、VS 服务器把修改过的响应数据包报文回传给客户端。

LVS 集群的 DR 模式(广泛使用)

LVS-DR 模式的工作原理

DR(Direct Routing):直接路由。

LVS 默认模式,应用最广泛,通过为请求报文重新封装一个 MAC 首部进行转发,源 MAC 是 DIP 所在接口的 MAC 地址,目标 MAC 是某个挑选出的 RS 的 RIP 所在接口的MAC地址;源 IP/PORT,目标 IP/PORT 均保持不变。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LVS-DR 模式的数据逻辑

1、客户端发送数据帧给 VS 服务器,数据报文的内容为客户端IP、MAC 和 VIP、VIP 的 MAC 地址;

2、VS 服务器接收到数据报文后把报文中的 VIP 的 MAC 变为 RS1 的MAC,此时数据报文中的数据为客户端 IP、MAC 和 VIP、RS1 的MAC地址;

3、RS 得到 VS 服务器的数据包并做出响应回传数据包,数据包直接发送给客户端,不经过 VS 服务器,回传数据包中的内容为 VIP、RS1 的 MAC 地址和客户端 IP、MAC 地址。

LVS-DR 模式的特点

1、Director(路由器) 和各 RS 都配置有VIP;

2、确保前端路由器将目标 lP 为 VIP 的请求报文发往 Director ;

3、在前端网关做静态绑定 VIP 和 Director 的 MAC 地址;

4、RS 的 RIP 可以使用私网地址,也可以是公网地址;RIP 与 DIP 在同一 IP 网络;

5、RIP 的网关不能指向 DIP,以确保响应报文不会经由 Director;

6、RS 和 Director 要在同一个物理网络;

7、请求报文要经由 Director , 但响应报文不经由 Director ,由 RS 直接发往 Client;

8、不支持端口映射(端口不能修改);

9、RS 可使用大多数 OS 系统;

10、在 RS 上使用 arptables 工具,修改内核参数限 arp 通告以及应答级别。

LVS 集群的 TUN 模式工作原理

不修改请求报文的 IP 首部(源 IP 为 CIP,目标 IP 为 VIP),而在原 IP 报文之外再封装一个 IP 首部(源 IP 是 DIP,目标 IP 是 RIP),将报文发往挑选出的目标 RS ;RS 直接响应给客户端(源 IP 是VIP,目标 IP 是 CIP )。

LVS 集群的 FULLNAT 模式工作原理

通过同时修改请求报文的源 IP 地址(CIP -> DIP)和目标 IP 地址(VIP -> RIP)进行转发(此类 kernel 默认不支持,需修改内核的参数)。

1、VIP 是公网地址,RIP 和 DIP 是私网地址,且通常不在同一 IP 网络;因此,RIP 的网关一般不会指向 DIP;

2、RS 收到的请求报文源地址是 DIP ,因此,只需响应给 DIP;但Director 还要将报文发往 Client;

3、请求和响应报文都经由 Director;

4、支持端口映射。

LVS 的调度算法

LVS 静态调度算法

1、RR(roundrobin):轮询,RS 分别被平等调度,当 RS 配置有差别时不推荐;

2、WRR(Weighted RR):加权轮询,根据 RS 的配置进行加权调度,性能差的 RS 可给较小的权(最小值为0:默认不调度),被调度的次数少;

3、SH(Source Hashing):源IP地址进行 hash(哈希算法),将来自于同一个 IP 地址的请求始终发往第一次挑中的 RS ,从而实现会话绑定;

4、DH(Destination Hashing):目标地址进行 hash(哈希算法),第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的 RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商。

LVS 动态调度算法

主要根据 RS 当前的负载状态及调度算法进行调度,Overhead=value 较小的 RS 会被调度。
1、LC(least connections):最少链接

适用于长连接应用 Overhead(负载值) = activeconns (活动链接数) x 256 +
inactiveconns(非活动链接数) ;

2、WLC(Weighted LC):权重最少链接

默认调度方法 Overhead = ( activeconns x 256 + inactiveconns ) / weight ;

3.SED(Shortest Expection Delay):初始链接最高权重

初始连接高权重优先 Overhead = (activeconns + 1 + inactiveconns ) x 256 / weight
; 但是,当 node1 的权重为1,node2 的权重为10,经过运算,前几次的调度都会被 node 2 承接;

4、NQ(Never Queue),第一轮均匀分配,后续SED;

5、LBLC(Locality-Based LC),动态的 DH(目的地址哈希算法)算法,使用场景:根据负载状态实现正向代理;

6、LBLCR(LBLC with Replication),带复制功能的 LBLC,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的 RS ;

7、FO(Weighted Fai Over):常用作灰度发布

在此FO算法中,遍历虚拟服务所关联的真实服务器链接表,找到还未过载( 未设置 IP_VS_DEST_F OVERLOAD 标志
)的且权重最高的真实服务器,进行调度; 当服务器承接大量链接,我们可以对此服务器进行过载编辑( IP_VS_DEST_F OVERLOAD
),那么 VS 调度器就不会把链接调度到有过载标记的主机中;

8、OVF( Overflow-connection ):

基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此
OVF 算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:1.
未过载(未设置IP_VS_DEST_F OVERLOAD标志 );2. 真实服务器当前的活动连接数量小于其权重值;3. 其权重值不为零。

LVS 四层均衡负载器真机实验

LVS-NAT 模式真机实验

设备:一台 LVS 服务器(VS)、两台服务器主机(RS)

环境配置( Vmware软件 ):三台虚拟机设备均可正常下载软件;VS 服务器配置两个网络适配器,一个网络适配器使用 ”NAT“ 模式,另一个网络适配器使用”仅主机” 模式,用来模拟外网和内网的环境;两台 RS 服务器的网络适配器使用 ”仅主机“ 模式,与 VS 服务器搭建成内网环境。

实验配置

1、将虚拟机的网络适配器进行添加和更改

VS 服务器网络适配器

VS 服务器需要设置两个网络适配器,一个使用 “NAT” 模式,模拟外网环境,一个使用 “仅主机” 模式,模拟内网环境

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果只有一个网络适配器的话,可点击 “添加” 进行网络适配器的增加

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5C%E6%9E%97%E6%B7%B1%E6%97%B6%E8%A7%81%E9%B9%BF%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5
Cimage-20240808130316302.png&pos_id=img-OCGA47RT-1723383337853)

RS 服务器网络适配器

RS 服务器只需一个网络适配器即可,使用 “仅主机” 模式,模拟内网环境。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、更改 IP 地址和网关,VS 服务器开启路由功能

VS 服务器

网卡1 IP 地址为外网

[root@vs ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.10/24,172.25.254.2
method=manual

网卡2 IP 地址为内网

[root@vs ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-name=eth1

[ipv4]
address1=192.168.0.100/24
method=manual

重新加载配置文件,并激活网络链接

[root@vs ~]# nmcli connection reload	----重新加载配置文件

[root@vs ~]# nmcli connection up eth0	----激活网络链接
[root@vs ~]# nmcli connection up eth1

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

VS 服务器开启路由功能

[root@vs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1	----在文本末尾添加

[root@vs ~]# sysctl -p	----激活路由功能
net.ipv4.ip_forward = 1	----显示此内容则表示已激活

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看路由信息

[root@vs ~]# route -n

在这里插入图片描述

RS 服务器

RS1 网卡为内网 IP 地址

[root@rs1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual

重新加载配置文件,并激活网络链接

[root@rs1 ~]# nmcli connection reload	----重新加载配置文件

[root@rs1 ~]# nmcli connection up eth0	----激活网络链接

查看路由信息
在这里插入图片描述

RS2 网卡为内网 IP 地址

[root@rs2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.20/24,192.168.0.100

重新加载配置文件,并激活网络链接

[root@rs2 ~]# nmcli connection reload	----重新加载配置文件

[root@rs2 ~]# nmcli connection up eth0	----激活网络链接

在这里插入图片描述

路由信息

在这里插入图片描述

3、RS 服务器下载 httpd 软件,并输入不同的网页内容,方便进行实验观察(真实企业搭建的网页内容应一致)

下载 httpd 软件

[root@rs1 ~]# yum install https -y

[root@rs2 ~]# yum install https -y

输入内容至网页内

[root@rs1 ~]# echo this is rs1 > /var/www/html/index.html

[root@rs2 ~]# echo this is rs2 > /var/www/html/index.html

重启服务,开机自启动

[root@rs1 ~]# systemctl enable --now httpd

[root@rs2 ~]# systemctl enable --now httpd

4、测试 VS 服务器能否访问 RS 服务器

[root@vs ~]# curl 192.168.0.10

在这里插入图片描述

5、VS 服务器下载 ipvsadm 软件,并设置策略

下载软件

[root@vs ~]# yum install ipvsadm -y

设置策略

[root@vs ~]# ipvsadm -A -t 172.25.254.10 -s rr
[root@vs ~]# ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.10:80 -m
[root@vs ~]# ipvsadm -a -t 172.25.254.10:80 -r 192.168.0.20:80 -m

查看设置成功的策略(临时设置,重启设备后失效)
在这里插入图片描述

6、实验结果观察
在这里插入图片描述

LVS-DR 模式真机实验

设备:一台 LVS 服务器(VS)、一台路由器(RD)、一台客户端(CD)、两台服务器主机(RS)

环境配置( Vmware软件 ):五台虚拟机设备均可正常下载软件;VS 服务器的网络适配器使用”仅主机模式“ ;RD 设备配置两个网络适配器,一个网络适配器使用 ”NAT 模式“,另一个网络适配器使用”仅主机模式“,用来模拟内网和外网的环境;CD 设备网络适配器使用 “NAT” 模式,模拟外网环境;两台 RS 服务器的网络适配器使用 ”仅主机“ 模式,与 VS 服务器和 RD 设备搭建成内网环境。

实验配置

1、添加网络适配器并修改工作模式

客户端设备
在这里插入图片描述

路由器设备
在这里插入图片描述

VS 服务器
在这里插入图片描述

RS 服务器
在这里插入图片描述

2、更改 IP 地址和网关

客户端

[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.10/24,172.25.254.100
method=manual

重新加载配置文件,并激活网络链接

[root@client ~]# nmcli connection reload	----重新加载配置文件

[root@client ~]# nmcli connection up eth0	----激活网络链接

在这里插入图片描述

路由器

[root@router ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual

[root@router ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-name=eth1

[ipv4]
address1=192.168.0.100/24
method=manual

重新加载配置文件,并激活网络链接

[root@router ~]# nmcli connection reload	----重新加载配置文件

[root@router ~]# nmcli connection up eth0	----激活网络链接
[root@router ~]# nmcli connection up eth1

在这里插入图片描述

VS 服务器

[root@vs ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.50/24,192.168.0.100
method=manual

重新加载配置文件,并激活网络链接

[root@vs ~]# nmcli connection reload	----重新加载配置文件

[root@vs ~]# nmcli connection up eth0	----激活网络链接

在这里插入图片描述

RS 服务器

[root@rs1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual


[root@rs2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0

[ipv4]
address1=192.168.0.20/24,192.168.0.100
method=manual

重新加载配置文件,并激活网络链接

[root@rs1 ~]# nmcli connection reload	----重新加载配置文件

[root@rs1 ~]# nmcli connection up eth0	----激活网络链接

[root@rs2 ~]# nmcli connection reload	----重新加载配置文件

[root@rs2 ~]# nmcli connection up eth0	----激活网络链接

在这里插入图片描述

3、RS 服务器下载 httpd 软件,并在默认发布网页内输入内容

下载 httpd 软件

[root@rs1 ~]# yum install https -y

[root@rs2 ~]# yum install https -y

输入内容至网页内

[root@rs1 ~]# echo this is rs1 > /var/www/html/index.html

[root@rs2 ~]# echo this is rs2 > /var/www/html/index.html

重启服务,开机自启动

[root@rs1 ~]# systemctl enable --now httpd

[root@rs2 ~]# systemctl enable --now httpd

4、VS 服务器下载 ipvsadm 软件,并设置策略

下载软件

[root@vs ~]# yum install ipvsadm -y

设置策略

[root@vs ~]# ipvsadm -A -t 192.168.0.200 -s wrr
[root@vs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@vs ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2

查看设置成功的策略(临时设置,重启设备后失效)
在这里插入图片描述

5、路由器设备开启路由功能,并在 VS 服务器和 RS 服务器上添加 VIP 地址

开启路由功能

[root@router ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1	----在文本末尾添加

[root@router ~]# sysctl -p	----激活路由功能
net.ipv4.ip_forward = 1	----显示此内容则表示已激活

在这里插入图片描述

添加 VIP

[root@vs ~]# ip address add 192.168.0.200/32 dev lo

6、客户端访问服务端结果观察

在这里插入图片描述

防火墙标签解决轮询错误

在已经配置好的 LVS-DR 模式下进行相关的配置

RS 服务器

安装 mod_ssl 模块,使 RS 服务器支持 https

[root@rs1 ~]# yum install mod_ssl -y

[root@rs2 ~]# yum install mod_ssl -y

开启 httpd 服务

[root@rs1 ~]# systemctl restart httpd

[root@rs2 ~]# systemctl restart httpd

VS 服务器

添加新的策略

[root@vs ~]# ipvsadm -A -t 192.168.0.200:443 -s wrr
[root@vs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
[root@vs ~]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g

查看设置的策略

在这里插入图片描述

为端口做标记

[root@vs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

在这里插入图片描述

客户端测试

在这里插入图片描述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值