LVS-负载基础知识【术语介绍、ipvsadm命令解析】
1、LVS基本概述
1.1、什么是LVS
LVS的英文全称是(Linux virtual server,即(Linux虚拟服务器。其实它是一种cluster集群技术,主要用于负载均衡,将用户请求均匀的调度到不同的服务器上执行。
注意:Lvs是基于四层 IP:PORT 的负载均衡。
1.2、LVS组成部分
1.2.1、ipvs
ipvs:工作在内核空间,实现集群服务的"调度”,借鉴了iptables的实现方式
1.2.2、ipvsadm
ipvsadm :工作在用户空间,负责为ipvs内核框架编写规则。定义谁是集群服务,谁是后端服务器,数据包如何调度,调度到哪个节点。
1.2.3、ipvs与ipvsadm关系图
1.3、LVS相关名词
1.3.1、请求流程图
1.3.1、相关术语
名称 详细名称 描述
DS Director Server 目标服务器,即负载均衡器LVS
RS Real Server 真实应用服务,即后端服务器
CIP Client lP 客户端请求IP
VIP Virtual lP 直接面向用户的IP地址,通常为公网IP
DIP Director Server lP 用于与后端RIP通信的IP地址
RIP Real Server lP 后端真实服务器的IP地址
2、LVS应用场昙
2.1、腾讯云
2.2、阿里云
2.3、UCloud
2.4、青云
3、LVS常见模型
LvS负载均衡模型有(NAT、DR、TUN、FULL-NAT,较为常见的模型有(NAT、DR,使用最为广泛的模型是DR)
3.1、NAT模型
NAT:通过修改请求报文的目标IP地址,然后根据算法挑选出某台RS进行转发。(请求进入负载均衡器(LvS时做(DNAT,后端返回数据报文出负载均衡时做SNAT
3.1.1、模式特点
集群节点,必须在一个网络中
真实服务器必须将网关指向负载调度器
RIP通常都是私有IP,仅用于各个集群节点通信
负载调度器必须位于客户端和真实服务器之间,充当网关
支持端口映射
负载调度器操作系统必须是 Linux ,真实服务器可以使用任意系统
3.1.2、总结
集群节点处于同一个网络环境中
真实服务器必须将网关指向负载调度器
RIP 通常是私有 IP,仅用于各个集群节点通信
负载调度器必须位于 RS 与 DS 之间,充当网关
支持端口映射
负载调度器必须是 Linux 操作系统,真实服务器随意
进出数据报文都要进过负载调度器机器,压力较大
3.2、DR模型
DR:通过修改请求报文的目标(MAC地址,然后根据算法挑选出某台RS进行转发。(请求进入负载均衡器(LvS时做MAC地址转换,后端返回数据报文不经过负载均衡,所以无需做转换
3.2.1、模式特点
集群节点,必须在一个网络中
真实服务器网关指向路由器
RIP既可以是私网地址,又可以是公网地址
负载调度器只负责入站请求
大大减轻负载调度器压力,支持更多的服务器节点
3.2.2、总结
集群节点处于同一个广播域中
真实服务器将网关指向真实路由器
负载调度器只负责处理入站请求,压力最小
不支持端口映射
负载调度器必须是 Linux ,真实服务最好是Linux
3.3、Tun模型
3.3.1、模式特点
集群节点不必位于同一个物理网络但必须都拥有公网IP(或都可以被路由)
真实服务器不能将网关 指向负载调度器
RIP必须是公网地址
负载调度器只负责入站请求
不支持端口映射功能
发送方和接收方必须支持隧道功能
3.3.2、总结
集群所有节点都必须直接/间接拥有公网地址
真实服务器必须将网关指向真实网关
不支持端口映射
DS 与 RS 必须开启隧道功能
入站由 DS 完成,出站由 RS 完成,
负载调度器必须是 Linux 操作系统,真实服务器随意
压力较大
3.4、LVS各模型流程图
4、ipvsadm命令常用的属性解析
4.1、常见用途
ipvsadm 的用法大概分类两类、
1、管理集群服务(定义负载均衡配置)
2、管理后端RS(定义负载均衡后端节点的增删改查)
4.2、命令介绍
]# ipvsadm --help ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1) Usage: ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags] ipvsadm -D -t|u|f service-address ipvsadm -C ipvsadm -R ipvsadm -S [-n] ipvsadm -a|e -t|u|f service-address -r server-address [options] ipvsadm -d -t|u|f service-address -r server-address ipvsadm -L|l [options] ipvsadm -Z [-t|u|f service-address] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid] ipvsadm --stop-daemon state ipvsadm -h Commands: Either long or short options are allowed. --add-service -A # 添加一个集群服务 --edit-service -E # 修改已添加的集群服务 --delete-service -D # 删除虚拟服务 --clear -C # 清空集群所有规则 --restore -R # 从文件中恢复集群 --save -S # 将集群信息报文至文件中 --add-server -a # 表示要添加 RS 节点 --edit-server -e # 表示要修改 RS 节点 --delete-server -d # 表示要删除 RS 节点 --list -L|-l # 列出当前集群信息 --zero -Z # 清空集群计数器 --set tcp tcpfin udp # 设置链接超时的值 --start-daemon # 开启链接后台同步 --stop-daemon # 停止链接后台同步 Options: --tcp-service -t service-address # 指定操作哪个节点地址与端口, --udp-service -u service-address # 指定操作哪个节点地址与端口, --fwmark-service -f fwmark # 防火墙标记 --scheduler -s scheduler # 指定 LVS 调度策略,默认为wlc【rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq】 --persistent -p [timeout] # 持久连接超时时间 --netmask -M netmask persistent granularity mask --real-server -r server-address server-address is host (and port) --gatewaying -g # 指定 LVS 工作模型 ( DR模型 ) --ipip -i # 指定 LVS 工作模型 ( tun模型 ) --masquerading -m # 指定 LVS 工作模型 ( NAT模型 ) --weight -w weight # 指定 RS 节点的权重 --numeric -n # 数字格式显示 ip 和 port,注意:-n 只能写在-L之后 --sched-flags -b flags # 调度标记