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

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.xdnf.cn/news/15748.html

相关文章:

  • 教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配
  • Keepalived 监听服务切换与运维指南
  • 基于LSTM的时间序列到时间序列的回归模拟
  • AspectJ 表达式中常见符号说明
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现动物分类(C#源码,UI界面版)
  • 张 关于大语言模型(LLM)置信度研究的经典与前沿论文 :温度缩放;语义熵;自一致性;事实与反思;检索增强;黑盒引导;
  • 微服务学习(六)之分布式事务
  • 商业秘密的法律属性与保护路径探析
  • LeetCode 322. 零钱兑换 LeetCode 279.完全平方数 LeetCode 139.单词拆分 多重背包基础 56. 携带矿石资源
  • 【Docker基础】深入解析Docker-compose核心配置:Services服务配置详解
  • 【学习记录】智能客服小桃(进度更新ing)
  • Elastic Search 8.x 分片和常见性能优化
  • UniApp 自定义导航栏:解决安全区域适配问题的完整实践
  • 当OT遇见IT:Apache IoTDB如何用“时序空间一体化“破解工业物联网数据孤岛困局
  • 【黄山派-SF32LB52】—硬件原理图学习笔记
  • NLP中情感分析与观念分析、价值判断、意图识别的区别与联系,以及四者在实际应用中的协同
  • 疯狂星期四文案网第12天运营日报
  • 最少标记点问题:贪心算法解析
  • RabbitMQ面试精讲 Day 3:Exchange类型与路由策略详解
  • Astro:前端性能革命!从原生 HTML 到 Astro + React 的升级指南
  • Java机考题:815. 公交路线 图论BFS
  • 消息队列与信号量:System V 进程间通信的基础
  • P1816 忠诚 题解
  • Flutter基础(前端教程①④-data.map和assignAll和fromJson和toList)
  • 使用C#对象将WinRiver项目文件进行复杂的XML序列化和反序列化实例详解
  • 多模态交互视角下生成式人工智能在中小学探究式学习中的认知支架效能研究
  • 立创EDA中双层PCB叠层分析
  • 锂电池生产过程图解
  • 【OD机试】停车场收费
  • 暑假训练七