本文共 2697 字,大约阅读时间需要 8 分钟。
LVS本身负载均衡为了在高访问中达到一个高可用以及高可靠
对于负载均衡有四层和七层
LVS(Linux Virtual Server):Linux虚拟服务器,一个虚拟的服务器集群系统,可以在UNIX平台下实现负载均衡的功能
对于负载均衡的功能:
LVS的应用场景:
LVS的基本术语:
名称 | 缩写 | 说明 |
---|---|---|
虚拟IP地址(Virtual IP Address) | VIP | Director用客户端计算机提供服务的IP地址 |
真实IP地址(Real Server IP Address) | RIP | 集群节点下使用的真实IP地址 |
DirectorIP地址 | DIP | 用于连接内外网络的IP地址,物理网卡上的IP地址。负载均衡IP |
客户主机IP地址(Client IP Address) | CIP | 请求服务端的IP地址,改地址用于发送给集群请求的源IP地址 |
主要的实现过程: IPVS集群服务(IP加端口)定义为后端服务发送给后端服务器
配置LVS的时候,通过Keepalived软件直接管理IPVS,使用Ipvsadm
LAN下多采用DR模式,WAN下可采用TUN(已被haproxy、nginx、dns取代)
LVS该集群下主要有4种工作模式:
工作模式 | 说明 |
---|---|
NAT(Network Address Translation) | IP负载均衡技术通过网络地址转换(NAT)将一组服务器构成一个高可用高性能的虚拟服务器。 |
TUN(Tunneling) | 隧道实现虚拟服务器 |
DR(Direct Routing) | 直接路由实现虚拟服务器 |
FULLNAT(Full Network Address Translation) | 完全NAT |
NAT模式特性(调度器LB重写请求报文中的目标地址,根据调度,发送给真实服务器地址,之后返回调度器的原地址也被重写在返回给客户)
TUN模式特性(改进调度器的瓶颈能力):将其请求的报文通过IP隧道转发到真实服务器,处理完后将其数据返回给客户端
调度器根据服务器的负载,动态选择服务器,将其报文数据封装再另一个IP报文转发到真实服务器。服务器解封为虚拟IP地址(该地址再IP隧道中)并且处理请求,根据路由表将其返回给客户DR模式(直接路由),更改目的MAC
三种模式的比较:
大致情况 | NAT | TUN | DR |
---|---|---|---|
网络 | 私有 | LAN/WAN | LAN |
节点数量 | 10-20 | 100 | 100 |
优点 | 地址端口转换 | WAN | 性能高 |
缺点 | 调度器瓶颈 | 需支持隧道协议 | 不可跨LAN |
原本只有以上三种模式,更多的采用DR和NAT模式(真实服务器以及LVS要在同个VLAN部署成本高),TUNNEL可跨VLAN,但隧道也需要成本等。对此增加FULLNAT模式(可跨VLAN,真实服务器只需连接内网),Packet IN可做DNAT以及SNAT
FULLNAT大致模式如下:
调度器根据其目标地址决定哪个集群处理数据
大致调度算法如下:
调度算法 | 大致情况 |
---|---|
轮询 rr(Round-Robin) | 依次分配给不同节点(适用节点性能差不多的) |
加权轮询 wrr(Weighted Round-Robin) | 依据不同节点权值分配,权值高的优先获取 |
目的地址哈希 dh(Destination Hashing) | 通过目的地址关键字 |
源地址哈希 sh(Source Hashing) | 通过源地址关键字 |
加权最小连接数 wlc(Weighted Least-Connection) | 每台权值 / 当前TCP连接数最为判定 |
最小连接数 lc(Least-Connection) | IPVS存储所有连接,将其请求发送给最小的调度器 |
基于地址最小连接数 lblc(Locality-Based Least-Connection) | 将同一目的地请求分配给调度器,请求来的时候分发给最小的连接数服务器(前提未达到负荷) |
基于地址带重复的最小连接数 | 目的地址对应有一个调度器的集合,将其请求分配给连接数最小的调度器 |
适用场景:
转载地址:http://rtufk.baihongyu.com/