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

bash 复制代码
# 安装
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配置

bash 复制代码
# 启用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
bash 复制代码
# 配置网关指向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
bash 复制代码
# 配置网关指向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

测试

bash 复制代码
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

bash 复制代码
# 安装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

bash 复制代码
# 在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

bash 复制代码
# 在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

测试

bash 复制代码
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轮询调度问题

bash 复制代码
# 在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. 解决会话保持问题

配置

bash 复制代码
# 创建虚拟服务时启用持久连接
ipvsadm -A -t 172.25.254.100:80 -s rr -p 3600

# 修改现有服务启用持久连接
ipvsadm -E -t 172.25.254.100:80 -s rr -p 3600
相关推荐
花海如潮淹6 分钟前
云原生安全工具:数字基础设施的免疫长城
经验分享·笔记·安全·云原生
宁建利1 小时前
ESP32-S3学习笔记<1>:ESP-IDF的安装与命令
笔记·学习
珊瑚里的鱼3 小时前
牛客网题解 | 单词识别
c++·笔记·算法
老马啸西风10 小时前
windows wsl2-05-docker 安装笔记
运维·windows·笔记·docker·容器·k8s
菜还不练就废了10 小时前
7.19-7.20 Java基础 | File类 I/O流学习笔记
java·笔记·学习
菜一头包12 小时前
C++ STL中迭代器学习笔记
c++·笔记·学习
creator_Li12 小时前
python学习笔记
笔记·python·学习
骁的小小站13 小时前
The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(三)
开发语言·经验分享·笔记·学习·其他·bash·excel
小帅一把手15 小时前
RCE随笔(1)
笔记