当前位置: 首页 > news >正文

lvs笔记

集群

概念:将多台计算机组合成单个系统,以向外拓展系统性能
类型:

  • LB均衡负载: 将请求分流到多台后端服务器,提升吞吐量
  • HA高可用性:冗余与故障转移,保持服务持续可用
  • HPC高性能计算

分布式

分类:

  • 分布式存储:Ceph,GlusterFs,FastDFS,MogileFs
  • 分布式计算:hadoop,Spark
集群与分布式
1.集群适合小规模、低延迟、一致性强的场景。同一个业务系统,部署在多台服务器上,通过提高单位时间内执行的任务数
来提升效率
2.分布式适合大规模、高容错、可拓展的场景。将业务系统部署在多台服务器上,通过缩短单个任务的执行时间来提升效率

LVS

四种模式

NAT模式

在这里插入图片描述
通过IP地址和端口转换实现请求转发和响应回流
请求流量:客户端访问 VIP,lvs调度机修改目标 IP 和端口,转发给RS
响应流量:RS返回数据时,lvs调度机将源 IP 改回 VIP,再返回给客户端。

客户端
Source IP: CIP
Destination IP: VIP
Source Port: ****
Destination Port: 80

转换后转发给RS:
VIP:80→RIP:80
CIP→DIP

Source IP: DIP
Destination IP: RIP
Source Port: ****
Destination Port: 80

优点:
1.RS与公网隔离
2.支持端口映射
缺点:
1.响应流量都要结果lvs调度机,lvs的调度机容易阻塞
2.RS必须与lvs调度机在同一内网,网关指向lvs调度机

DR模式

在这里插入图片描述

通过直接路由技术实现请求转发,响应流量不经过lvs调度机
请求流量:客户端访问VIP,lvs接收到请求后,仅修改目标 MAC 地址后转发给RS
响应流量:RS直接通过本地配置的VIP响应客户端,不经过lvs调度机

客户端
Source IP: CIP
Destination IP: VIP
Source Port: ****
Destination Port: 80

lvs接收,转换,转发

Source IP: CIP
Destination IP: VIP  (未变)
Source Port: 54321  (未变)
Destination Port: 80 (未变)lvs不修改 IP 层,仅做 L2 转发。
lvs和RS 必须在本地回环接口(lo)上配置 VIP,并启用 arp_ignore 和 arp_announce 避免 ARP 冲突

RS接收,处理,响应

Source IP: VIP
Destination IP: CIP
Source Port: 80
Destination Port: ****

优点:
1.响应流量不经过lvs,性能高,节省带宽
2.仅修改 MAC 地址,无IP层处理开销,低延迟
缺点:
1.RS需配置 VIP 和ARP 抑制,配置较复杂
2.lvs和RS必须在同一局域网,不能跨 VLAN
3.不支持端口映射

TUN模式

在这里插入图片描述
通过IP隧道技术将客户端请求转发到RS,响应流量直接由RS返回客户端
请求流量:客户端访问 VIP,lvs将原始数据包封装在IP隧道中,发送给RS,RS 解封装后,处理原始请求
响应流量:RS 直接通过 VIP 响应客户端

客户端
Source IP: CIP
Destination IP: VIP
Source Port: ****
Destination Port: 80

lvs封装,通过 IP 隧道发送到 RS

CIP→VIP
外层 Source IP: DIP 
外层 Destination IP: RIP 
内层原始数据包: CIP → VIP

RS解封装,处理,响应

解封装
Source IP: CIP
Destination IP: VIP
Source Port: ****
Destination Port: 80响应
Source IP: VIP
Destination IP: CIP
Source Port: 80
Destination Port:****

优点:
1.可跨机房/跨网络
2.响应流量不经过lvs
3.RS 可分布在公有云、私有云等不同环境
缺点:
1.需启用 IP 隧道,并配置路由
2.封装增加开销

FULLNAT模式

通过同时修改源IP和目标IP

双向 NAT:
请求阶段:修改 源 IP(CIP → LIP) 和 目标 IP(VIP → RIP)
响应阶段:修改 源 IP(RIP → VIP) 和 目标 IP(LIP → CIP)

13种算法

静态算法

RR:轮询
WRR:权重轮询
SH:源IP哈希绑定
DH:目标ip哈希绑定

动态算法

LC:最少链接
WLC:权重最少链接
SED:初始链接高权重优先
NQ:第一轮均匀分配,然后SED
LBLC:动态DH
LBLCR:带复制功能的LBLC

新增:FO、OVF、MH

部署lvs

配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore

# 安装
dnf install ipvsadm -y
# 添加VIP
ipvsadm -A -t VIP:PORT -s 算法
# 添加RS
ipvsadm -a -t VIP:PORT -r RIP:PORT -g/m/i
# 删除RS
ipvsadm -d -t VIP:PORT -r RIP:PORT
# 查看配置
ipvsadm -ln
# 清空规则
ipvsadm -C
# 保存规则
ipvsadm --save > 文件

增:
A/a:添加虚拟服务/真实服务器
t/u:TCP/UDP协议
s:调度算法
g:DR模式
m:NAT模式
w:权重值
删:
D/d [增] :删除
C:清空规则
改:
E/e -[]:修改
查:
ln:查看当前配置
-lcn:查看连接状态

实例

NAT模式配置

在这里插入图片描述

lvs配置

# 启用IP转发
echo "net.ipv4.ip_forward=1" | tee /etc/sysctl.d/ip_forward.conf
sysctl -p# 安装ipvsadm
dnf install ipvsadm -y
systemctl enable --now ipvsadm# 配置NAT规则
#清空现有规则
ipvsadm -C
#添加VIP服务(使用轮询算法)
ipvsadm -A -t 172.25.254.100:80 -s rr
#添加真实服务器(NAT模式)
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
#查看配置
ipvsadm -ln# 保存规则
ipvsadm-save > /etc/sysconfig/ipvsadm

RS配置

RS1
# 配置网关指向LVS的DIP
nmcli connection modify eth0 ipv4.gateway 192.168.0.100
nmcli connection up eth0# 安装Web服务
dnf install httpd -y
echo "RS1 - 192.168.0.10" | tee /var/www/html/index.html
sudo systemctl enable --now httpd
RS2
# 配置网关指向LVS的DIP
nmcli connection modify eth0 ipv4.gateway 192.168.0.100
nmcli connection up eth0# 安装Web服务
dnf install httpd -y
echo "RS2 - 192.168.0.20" | tee /var/www/html/index.html
systemctl enable --now httpd

测试

for i in {1..6}; do curl 172.25.254.100; done
# 结果
RS1 - 192.168.0.10
RS2 - 192.168.0.20
RS1 - 192.168.0.10
RS2 - 192.168.0.20
RS1 - 192.168.0.10
RS2 - 192.168.0.20

DR

lvs

# 安装ipvsadm
dnf install ipvsadm -y
systemctl enable --now ipvsadm# 在物理网卡上绑定VIP
ip addr add 172.25.254.100/32 dev eth0# 配置DR模式规则
#清空现有规则
ipvsadm -C
#添加VIP服务(使用加权轮询算法)
ipvsadm -A -t 172.25.254.100:80 -s wrr
#添加真实服务器(DR模式,-g参数)
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -g -w 1
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -g -w 1
#查看配置
ipvsadm -ln# 保存规则
ipvsadm-save > /etc/sysconfig/ipvsadm

RS1

# 在lo接口绑定VIP
ip addr add 172.25.254.100/32 dev lo# 配置ARP抑制
echo 1 | tee /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 | tee /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 | tee /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 | tee /proc/sys/net/ipv4/conf/lo/arp_announce# 安装Web服务
dnf install httpd -y
echo "DR-RS1 - 192.168.0.10" | tee /var/www/html/index.html
systemctl enable --now httpd

RS2

# 在lo接口绑定VIP
ip addr add 172.25.254.100/32 dev lo# 配置ARP抑制
echo 1 | tee /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 | tee /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 | tee /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 | tee /proc/sys/net/ipv4/conf/lo/arp_announce# 安装Web服务
dnf install httpd -y
echo "DR-RS2 Server - 192.168.0.20" | tee /var/www/html/index.html
systemctl enable --now httpd

测试

for i in {1..6}; do curl 172.25.254.100; done
# 结果
DR-RS1 - 192.168.0.10
DR-RS2 - 192.168.0.20
DR-RS1 - 192.168.0.10
DR-RS2 - 192.168.0.20
DR-RS1 - 192.168.0.10
DR-RS2 - 192.168.0.20

DR模式下VIP地址冲突

  1. 前端网关静态绑定
  2. 使用arptables工具
  3. 修改内核ARP参数

防火墙标记(FWM)解决LVS轮询调度问题

# 在D上设置防火墙标记
#清除现有mangle表规则
iptables -t mangle -F
#为80和443端口流量打标记
iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
#保存iptables规则
iptables-save > /etc/sysconfig/iptables# 配置LVS使用标记服务
#清除现有LVS规则
ipvsadm -C
#添加基于标记的虚拟服务
ipvsadm -A -f 66 -s rr
#添加RS
ipvsadm -a -f 66 -r 192.168.0.10 -g
ipvsadm -a -f 66 -r 192.168.0.20 -g
#查看配置
ipvsadm -ln# 检查iptables标记
iptables -t mangle -L -n -v
Chain PREROUTING (policy ACCEPT)
target     prot opt in out source    destination
MARK       tcp  --  *  *  0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 MARK set 0x42

持久链接

作用:

  1. 将同一客户端的请求始终定向到同一台RS
  2. 解决会话保持问题

配置

# 创建虚拟服务时启用持久连接
ipvsadm -A -t 172.25.254.100:80 -s rr -p 3600# 修改现有服务启用持久连接
ipvsadm -E -t 172.25.254.100:80 -s rr -p 3600
http://www.lryc.cn/news/593713.html

相关文章:

  • JAVA高级第六章 输入和输出处理(一)
  • python类Keys
  • OpenCV 官翻 2 - 图像处理
  • CAN通信驱动开发注意事项
  • 使用C#对象将WinRiver项目文件进行复杂的XML序列化和反序列化实例详解
  • 软考高级之工程工期成本计算题
  • 用虚拟机体验纯血鸿蒙所有机型!
  • 深入解析LVS负载均衡核心原理
  • Python MCP与Excel增强智能:构建下一代数据处理和自动化解决方案
  • 线性回归问题
  • 【超详细笔记】概率:中心极限定理的直观理解——样本均值为何趋近正态
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 使用 validation 框架生成一个校验参数是否在枚举内的校验器
  • 环形区域拉普拉斯方程傅里叶级数解
  • DC-DC降压转换5.5V/3A高效率低静态同步降压转换具有自适应关断功能
  • 基于 Google Earth Engine 的 DEM 鞍部自动提取
  • 动态规划——状压DP经典题目
  • 鸿蒙蓝牙通信
  • 【Java源码阅读系列56】深度解读Java Constructor 类源码
  • GitLab 社区版 10.8.4 安装、汉化与使用教程
  • AI编程工具对比:Cursor、GitHub Copilot与Claude Code
  • 【SVM smote】MAP - Charting Student Math Misunderstandings
  • sqli-labs靶场通关笔记:第32-33关 宽字节注入
  • Kotlin方差
  • 1 渗透基础
  • ros2高级篇之高可用启动文件及配置编写
  • Spring AI 1.0版本 + 千问大模型之文本对话
  • node.js学习笔记1
  • 【数据类型与变量】
  • MySQL——约束类型