云原生(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
相关推荐
yqcoder1 小时前
什么是 Math 对象
网络·网络协议·udp
Piko61411 小时前
H3C IRF2 堆叠实战:打造高可靠核心交换网络
运维·网络·笔记
茯苓gao13 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
万联WANFLOW13 小时前
SD-WAN 控制平面高可用怎么做?SDWAN 控制器挂了,全网会发生什么
运维·网络·分布式·架构
酱学编程14 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
风行南方15 小时前
密码学之分组密码
网络·密码学
艾莉丝努力练剑16 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
崇山峻岭之间16 小时前
Keil5输出hex转换为bin的设置
linux·运维·服务器
谷雪_65817 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
liulilittle17 小时前
KCC 拥塞控制算法缺陷修复记录(26/07/05)
网络·tcp/ip·计算机网络·c·信息与通信·tcp·通信