LVS 全称 Linux Virtual Server,是 Linux 内核层实现的高性能、高可用 的负载均衡集群技术,由章文嵩博士开发,目前是 Linux 内核的标准模块 之一。它的核心作用是将前端的请求流量分发到后端多台真实服务器 (Real Server)上,从而提升服务的并发处理能力和可用性。
一.NAT模式
Ivs-nat: 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和 PORT实现转发 RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈 支持端口映射,可修改请求报文的目标PORT VS必须是Linux系统,RS可以是任意OS系统。

1.Director 服务器采用双网卡,一个是桥接网卡连接外网,一个是仅主机网卡与后端Web服务器相连
2.Web服务器采用仅主机网卡与director相连
3.Web服务器网关指向192.168.0.100
4.后端web服务器不需要连接外网
环境准备:
修改VS,RS1,RS2的网卡模式和ip地址



RS1指定网关:

RS2指定网关:

测试是否联通:

nat测试:
在vs上安装ipvsadm:

开启内核路由功能:

编写策略:
bash
ipvsadm -C
清空当前所有的 IPVS 规则和配置
ipvsadm -A -t 172.25.254.100:80 -s wrr
-A:添加一个新的虚拟服务;
-t:TCP 协议
-s wrr:指定调度算法为加权轮询,即根据后端服务器的权重分配请求。
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1
-a:向已有的虚拟服务中添加一个真实服务器
-t:TCP 协议
-r:指定真实服务器的地址和端口。
-m:使用NAT模式进行数据包转发。
-w 1:设置该真实服务器的权重为 1。


更改权重:
bash
ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 2
-e:编辑(Edit)已存在的真实服务器配置。
-t:指定虚拟服务为 TCP 协议,地址为 172.25.254.100:80。
-r:指定要修改的真实服务器地址 192.168.0.10:80。
-m:保持NAT转发模式。
-w 2:将该真实服务器的权重从 1 修改为 2。


规则持久化:
利用自定义文件进行持久化:
bash
ipvsadm-save -n > /mnt/ipvs.rule
ipvsadm-restore < /mnt/ipvs.rule

利用守护进程进行规则持久化:

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

环境准备:
RS1和RS2可以用net实验中的来平替;修改router和vsnode 调度器ip地址



设定内核路由

设置转发策略:
bash
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
-t nat:操作nat表,用于地址转换。
-A POSTROUTING:在 POSTROUTING 链中追加一条规则(数据包即将离开本机时处理)。
-o eth1:规则仅对从 eth1 网卡发出的数据包生效。
-j SNAT:执行源地址转换(Source NAT)。
--to-source 192.168.0.100:将数据包的源 IP 地址修改为 192.168.0.100。

RS1在lo上设定vip:


RS2在lo上设定vip:


RS1和RS2arp禁止响应:


测试全网可达:

三.防火墙标签解决轮询错误
bash
#在RS1和RS2中开启https
[root@RS1+RS2 ~] dnf install mod_ssl -y
[root@RS1+RS2 ~] systemctl restart httpd
[root@RS1+RS2 ~] systemctl restart httpd
在vsnode中添加https的轮询策略:
bash
ipvsadm -A -t 192.168.0.200:80 -s rr
-A:添加虚拟服务。
-t:TCP 协议,虚拟 IP 为 192.168.0.200:80。
-s rr:调度算法为 轮询(Round Robin)。
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g
-a:添加真实服务器。
-r 192.168.0.20:后端服务器地址。
-g:使用 DR(Gateway/Direct Routing)模式。
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g
ipvsadm -A -t 192.168.0.200:443 -s rr
ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g

为了防止轮询错误,使用火墙标记访问vip的80和443的所有数据包,设定标记为6666,然后对此标记进行负载

在ip为172.25.254.99的客户端上测试;
