云原生(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
相关推荐
墨风如雪6 小时前
甲骨文云(Oracle Cloud)最新注册防坑记录:被ABC了怎么办?
服务器
道清茗8 小时前
【RH294知识点汇总】第 9 章 《 自动执行 Linux 管理任务 》常见问题
linux·运维·服务器
北方的流星8 小时前
华三路由器NAT配置
运维·网络·华三
数据法师9 小时前
开源情报收集工具GhostTrack深度测评:IP、手机号、用户名的合规信息查询方案
网络·网络协议·tcp/ip
丑八怪大丑10 小时前
Java网络编程
linux·服务器·网络
想成为优秀工程师的爸爸11 小时前
第三十篇技术笔记:郭大侠学UDS - 人有生老三千疾,望闻问切良方医
网络·笔记·网络协议·tcp/ip·信息与通信
橙子也要努力变强11 小时前
信号捕捉底层机制-机理篇2
linux·服务器·c++
数智工坊11 小时前
【SAM-DETR论文阅读】:基于语义对齐匹配的DETR极速收敛检测框架
网络·论文阅读·人工智能·深度学习·transformer
CQU_JIAKE12 小时前
4.28~4.30【Q】
linux·运维·服务器
先知后行。12 小时前
Linux 设备模型和platform平台
linux·运维·服务器