云原生(LVS DR模式ipvs实验)

实验简介

实验一:利用防火墙标记解决轮询错误

该实验针对 HTTP(80 端口)和 HTTPS(443 端口)独立配置 IPVS 轮询时出现的 "轮询重复 / 不一致" 问题进行优化。

  1. 问题场景:在 RS 上同时开启 HTTP/HTTPS 服务,且在 VS 节点分别为 80、443 端口配置独立 IPVS 轮询规则后,客户端同时访问 HTTP 和 HTTPS 时,请求可能被转发到同一台 RS,未实现跨协议的轮询负载。
  2. 解决思路:取消 80/443 端口的独立 IPVS 规则,改用 iptables 为 VIP 的 80/443 端口数据包统一打标记 6666;基于该标记配置全局 IPVS 轮询规则,将两类协议的数据包纳入同一调度体系。
  3. 效果验证:客户端同时 curl HTTP 和 HTTPS 地址时,请求被分别转发到不同 RS(如 RS2、RS1),解决了跨协议轮询不一致的问题。

实验二:利用持久连接实现会话粘滞

该实验核心是基于 IPVS(IP 虚拟服务器)配置会话粘滞,确保客户端请求持续定向到同一台后端真实服务器(RS)。

  1. 配置逻辑 :先通过 iptables 在 mangle 表中为目标 VIP(192.168.0.200)的 80/443 端口 TCP 数据包打上标记 6666;再基于该标记配置 IPVS 规则,采用 rr(轮询)调度策略,并通过-p 1开启持久连接(会话粘滞),将标记数据包转发至 192.168.0.10/20 两台 RS。
  2. 效果验证 :客户端多次 curl 访问 VIP 时,请求始终被转发到同一台 RS(如 RS1),实现了会话粘滞;同时可通过ipvsadm -Lnc观察连接状态,确认会话的持续性。

核心差异

  • 实验一聚焦 "跨协议轮询一致性",通过统一防火墙标记整合 HTTP/HTTPS 调度,解决独立配置导致的轮询错误;
  • 实验二聚焦 "会话粘滞",通过持久连接让同一客户端请求固定到一台 RS。

利用火墙标记解决轮询错误

1.在RS主机中同时开始http和https两种协议

复制代码
[root@RS1 yxs]# dnf install mod_ssl -y
[root@RS1 yxs]# systemctl restart httpd

[root@RS2 yxs]# dnf install mod_ssl -y
[root@RS2 yxs]# systemctl restart httpd

2.在vsnode中添加https的轮询策略

复制代码
[root@vsnode yxs]# ipvsadm -A -t 192.168.0.200:80  -s rr
[root@vsnode yxs]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g
[root@vsnode yxs]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g
[root@vsnode yxs]# ipvsadm -A -t 192.168.0.200:443 -s rr
[root@vsnode yxs]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g
[root@vsnode yxs]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g
[root@vsnode yxs]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80 rr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80              Route   1      0          0         
TCP  192.168.0.200:443 rr
  -> 192.168.0.10:443             Route   1      0          0         
  -> 192.168.0.20:443             Route   1      0          0         

3.轮询错误展示

复制代码
[root@client yxs]# curl  192.168.0.200;curl -k https://192.168.0.200
RS1 - 192.168.0.10
RS1 - 192.168.0.10
[root@client yxs]# curl  192.168.0.200;curl -k https://192.168.0.200
RS2 - 192.168.0.20
RS2 - 192.168.0.20

#当上述设定完成后http和https是独立的service,轮询会出现重复问题

4.解决方案

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

复制代码
[root@vsnode yxs]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark  6666
[root@vsnode yxs]# ipvsadm -A -f 6666 -s rr
[root@vsnode yxs]# ipvsadm  -a -f 6666 -r 192.168.0.10 -g
[root@vsnode yxs]# ipvsadm  -a -f 6666 -r 192.168.0.20 -g

#测试:在客户端
[root@client yxs]# curl  192.168.0.200;curl -k https://192.168.0.200
RS2 - 192.168.0.20
RS1 - 192.168.0.10

利用持久连接实现会话粘滞

1.设定ipvs调度策略

复制代码
[root@vsnode yxs]# ipvsadm -A -f 6666 -s rr -p 1
[root@vsnode yxs]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  6666 rr persistent 1
  -> 192.168.0.10:0               Route   1      0          0         
  -> 192.168.0.20:0               Route   1      0          0         

2.测试

复制代码
[root@client yxs]# curl 192.168.0.200
RS2 - 192.168.0.20
[root@client yxs]# curl 192.168.0.200
RS2 - 192.168.0.20

3.观察

复制代码
[root@vsnode yxs]# watch -n 1 ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    172.25.254.99:42420 192.168.0.200:80   192.168.0.20:80
IP  00:57  ASSURED     172.25.254.99:0    0.0.26.10:0        192.168.0.20:0
TCP 01:54  FIN_WAIT    172.25.254.99:46216 192.168.0.200:80   192.168.0.20:80
TCP 01:55  FIN_WAIT    172.25.254.99:46222 192.168.0.200:80   192.168.0.20:80
相关推荐
ulias2126 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷8 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
振浩微433射频芯片8 小时前
433MHz在智能家居中的应用大全(二):智能安防篇——安全不容“信号死角”
网络·单片机·嵌入式硬件·物联网·智能家居
Dream of maid9 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾9 小时前
统信系统UOS常用命令集
linux·运维·服务器
fengfuyao9859 小时前
基于STM32的4轴步进电机加减速控制工程源码(梯形加减速算法)
网络·stm32·算法
瀚高PG实验室11 小时前
审计策略修改
网络·数据库·瀚高数据库
forAllforMe11 小时前
etherCAT的协议VoE,FoE,EoE,CoE的概念和区别
网络
专吃海绵宝宝菠萝屋的派大星11 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟11 小时前
操作系统之虚拟内存
java·服务器·网络