Linux Virtual Server简介
一、LVS的介绍
二、LVS的工作原理
三、LVS的集群体系结构
四、LVS功能
五、LVS应用场景
六、LVS工作模式和相关命令
七、LVS的十种算法介绍
八、LVS相关软件
九、防火墙标记
十、持久连接
十一、实战案例(搭建DR模型)
一、LVS的介绍
**LVS:Linux Virtual Server( Linux虚拟服务器) :是负载调度器,内核集成。**
LVS官网:http://www.linuxvirtualserver.org/
阿里LVS官网:http://github.com/alibaba/LVS
二、LVS工作原理
* * VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理”* *
三、LVS集群体系架构
四、LVS功能
负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性
五、LVS应用场景
1 、音视频大流量场景
对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全和高可靠的云存储服务。
2 、网络游戏动静分离场景
动态请求流量分发:动态请求流量大,采用多台云服务器计算处理,并利用负载均衡服务随时进行流量分发。
静态请求快速加载:静态内容选择对象存储,接入CDN服务,进一步优化内容分发链路,让内容即刻加载。
3 、多层次容灾架构场景
4 、海量访问流量分发场景
六、LVS工作模式和相关命令
LVS集群类型中的术语
VS:Virtual Server ( 虚拟服务器) ,Director Server ( DS) ,Dispatcher(调度器),Load Balancer(负载均衡器)
RS:Real server(真正的服务器,通常指服务器)
CIP:Client IP(客户端IP)
VIP:Virtual server IP(VS外网的IP)
DIP:Director IP (VS内网的IP)
RIP:Real server(真正的服务器IP)
访问流程:CIP< -- > VIP== DIP< -- > RIP
工作模式
lvs- nat: 修改请求报文的目标IP,多目标IP的DNAT
lvs- dr: 操纵封装新的MAC地址
lvs- tun: 在原请求IP报文之外新加一个IP首部
lvs- fullnat: 修改请求报文的源和目标IP
1 、LVS的NAT模式
过程:
(1 )用户发送请求经过公网到负载均衡器
(2 )负载均衡器调度和重写数据包把数据包发送给中心开关
(3 )服务器处理请求后,将回复包发给负载均衡调度器
(4 )负载均衡调度器重写回复数据包通过虚拟IP通道把回复请求发给用户
lvs- nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
(1 )RIP和DIP应在同一个IP网络里,且应使用私网地址;RS的网关要指向DIP
(2 )请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
(3 )支持端口映射,可修改请求报文的目标PROT
(4 )VS必须是Linux系统,RS可以是任意OS系统
这里Director :调度器
2 、LVS的DR模式
过程:
(1 )用户发送请求通过公网到虚拟服务器上
(2 )虚拟服务器重新封装MAC头部后在内部网络(必须在同一个物理段)通过直接路由发送给RS
(3 )RS处理完请求后直接返回给用户
LVS- DR:Direct Routing ( 直接路由) ,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC头部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址,源IP/ PORT,以及目标IP/ PORT均保持不变。
DR模式的特点:
1 、Director和各RS都配置有VIP
2 、确保前端路由器将目标IP为VIP的请求报文发往Director
(1 )在前端网关做静态绑定VIP和Director的MAC地址
(2 )在RS上使用arptables工具
arptables - A IN - d $VIP - j DROP
arptables - A OUT - s $VIP - j mangle -- mangle- ip- s $RIP
(3 )在RS上修改内核参数以限制arp通告及应答级别
/ proc/ sys/ net/ ipv4/ conf/ all/ arp_ignore
/ proc/ sys/ net/ ipv4/ conf/ all/ arp_announce
3 、RS的RIP可以使用私网地址,也可以是公网地址;RIP和DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director
4 、RS和Director要在同一个物理网络
5 、请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
6 、不支持端口映射(端口不能修改)
7 、无需开启ip_forward
8 、RS可使用大多数OS系统
七、LVS的十种算法介绍
1 、静态方法:仅根据算法本身进行调度
(1 )RR:roundrobin(设置轮流捡取), 轮询算法,较常用
(2 )WRR:Weighted RR,加权轮询,较常用
(3 )SH:Source Hashing(y源散列) 实现session sticky, 源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定
(4 )DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:Web缓存。
2 、动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead= value较小的RS将被调度
(1 )LC:least connections ( 至少连接) 适用于长连接应用
Overhead= activeconns* 256 + inactiveconns
(2 )WLC:Weighted LC,默认调度方法,较常用
Overhead= (activeconns* 256 + inactiveconns)/ weight
(3 )SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接
Overhead= (activeconns+ 1 )* 256 / weight
(4 )NQ:Never Queue,第一轮均匀分配,后续SED
(5 )LBLC:Locality- Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等
(6 )LBCR:LBLC with Relication, 带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,实现Web Cache等
八、LVS相关软件
1 、程序包:ipvsadm
Unit File:ipvsadm. server
主程序:/ usr/ sbin/ ipvsadm
规则保存工具:/ usr/ sbin/ ipvsadm- save
规则重载工具:/ usr/ sbin/ ipvsadm- restore
配置文件:/ etc/ sysconfig/ ipvsadm- config
ipvs调度规则文件:/ etc/ sysconfig/ ipvsadm
2 、ipvsadm命令
ipvsadm核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
ipvsadm 工具用法:
管理集群服务:增、删、改
增、修改:
ipvsadm - A| E - t| u| f service- address [ - s scheduler] [ - p [ timeout] ]
说明:
删除:ipvsadm - D - t| u| f service- address
清空定义的所有内容:ipvsadm - C
清空计数器:ipvsadm - Z [ - t| u| f service- address]
查看:ipvsadm - L| l [ options]
ipvs规则:/ proc/ net/ ip_vs
ipvs连接:/ proc/ net/ ip_vs_conn
保存:建议保存至/ etc/ sysconfig/ ipvsadm
ipvsadm- save > / PATH/ TO/ IPVSADM_FILE
ipvsadm - S > / PATH/ TO/ IPVSADM_FILE
systemctl stop ipvsadm. service #会自动保存规则至/ etc/ sysconfig/ ipvsadm
重载:
ipvsadm- restore < / PATH/ FROM/ IPVSADM_FILE
systemctl start ipvsadm. service #会自动加载/ etc/ sysconfig/ ipvsadm中规则
九、防火墙标记
FWM:FireWall Mark (防火墙标记)
MARK target 可用于给特定的报文打标记
-- set- mark value
其中:value 可为0xffff 格式,表示十六进制数字
借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度
实现方法:
在Director主机打标记:
iptables - t mangle - A PREOUTING - d $vip $proto - m multiport -- dports $port1, $port2, . . . - j MARK -- set- mark NUMBER
在Director主机基于标记定义集群服务
ipvsadm - A - f NUMBER [ options]
十、LVS持久连接
session绑定:对共享同一组RS的多个集群服务,需要统一进行绑定,lvs sh算法无法实现持久连接(lvs persistence) 模板:实现无论使用任何调度算法,在一段时间内(默认360 s),能够实现将来自同一个地址的请求始终发往同一个RS
ipvsadm - A| E - t| u| f service- address [ - s scheduler] [ - p [ timeout] ]
持久连接实现方式:
每端口持久(PPC):每个端口定义为一个集群服务,每集群服务单独调度
每防火墙标记持久(PFWMC):基于防火墙标记定义集群服务;可实现将多个端口上的应用统一调度,即所谓的port Affinity
每客户端持久(PCC):基于0 端口(表示所有服务)定义集群服务,即将客户端对所有应用的请求都调度至后端主机,必须定义为持久模式