当前位置: 首页 > 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.dtcms.com/a/287687.html

相关文章:

  • RabbitMQ面试精讲 Day 3:Exchange类型与路由策略详解
  • Arc虚拟细胞挑战入门指南
  • OpenCV 官翻5 - 机器学习
  • 实战AI关键词SEO核心技巧高效应用
  • python学智能算法(二十五)|SVM-拉格朗日乘数法理解
  • 7.19 Java基础 | 异常
  • OpenCV 官翻 4 - 相机标定与三维重建
  • [spring6: AspectJAdvisorFactory AspectJProxyFactory]-源码解析
  • 基于 OpenCV 的 Haar 级联人脸检测模型对比研究 —— 以典型应用场景验证为例 毕业论文——仙盟创梦IDE
  • 智能光电检测:YOLO+OpenCV联合算法工程实践
  • Spring Boot入门
  • NJU 凸优化导论(9) 对偶(II)KKT条件+变形重构
  • 从Prompt到结构建模:如何以数据驱动重构日本语言学校体系?以国际日本语学院为例
  • Java行为型模式---访问者模式
  • 自动驾驶仿真领域常见开源工具
  • Linux 内存管理(2):了解内存回收机制
  • Linux 技术概述与学习指南
  • 微信小程序——世界天气小助手
  • AWS Partner: Sales Accreditation (Business)
  • [MySQL基础3] 数据控制语言DCL和MySQL中的常用函数
  • LVS(Linux virtual server)-实现四层负载均衡
  • MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成
  • Python高级数据类型:集合(Set)
  • 【深度学习笔记 Ⅱ】5 梯度消失和梯度爆炸
  • 猎板:在 5G 与 AI 时代,印制线路板如何满足高性能需求
  • GeoPandas 城市规划:Python 空间数据初学者指南
  • gitee 分支切换
  • 【kafka4源码学习系列】kafka4总体架构介绍
  • Gerrit workflow
  • 3-大语言模型—理论基础:生成式预训练语言模型GPT(代码“活起来”)