LVS(Linux virual server)介绍与实验

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的客户端上测试;

相关推荐
China_Yanhy2 小时前
运维日记 - 猛男的AI拓荒录:Fabric (GitHub: danielmiessler/fabric) —— 让 AI 回归 Unix 哲学的终端神器
运维·人工智能·fabric
i学长的猫2 小时前
PM2 管理 Cloudflared 隧道 Neo-mac 及后台运行
linux·编辑器·vim
记录无知岁月2 小时前
【Linux】bash脚本使用
linux·bash
GIOTTO情2 小时前
2026小红书投流新规下,基于Infoseek API的媒介投放自动化方案
java·linux·开发语言
FIT2CLOUD飞致云2 小时前
新增QQ频道与vLLM管理功能,1Panel v2.1.4版本发布
linux·服务器·ai·开源·1panel
wbs_scy2 小时前
Linux 基础 IO 初步解析:从 C 库函数到系统调用,理解文件操作本质
linux·运维·服务器
袁煦丞 cpolar内网穿透实验室2 小时前
Portainer可视化玩转 Docker 全流程。cpolar 内网穿透实验室第 737 个成功挑战
运维·docker·容器·远程工作·内网穿透·cpolar
广州服务器托管2 小时前
WIN11中将控制面板固定到开始菜单的方法
运维·开发语言·windows·计算机网络·可信计算技术
每日学点SEO2 小时前
如何判断网站质量低 & 遭受机器人流量攻击
运维·人工智能·深度学习·机器学习·搜索引擎
暴力求解2 小时前
Linux---磁盘与文件系统(三)
linux·运维·服务器