lvs

lvs

Linux Virtual Server (lvs) 是Linux内核自带的负载均衡器,也是目前性能最好的软件负载均衡器之一。lvs包括ipvs内核模块和ipvsadm用户空间命令行工具两部分。

lvs中,节点分为Director ServerReal Server两个角色,其中Director Server是负载均衡器所在节点,而Real Server则是后端服务节点。当用户的请求到达Director Server时,内核netfilter机制的PREROUTING链会将发往本地IP的包转发给INPUT链(也就是ipvs的工作链),在INPUT链上,ipvs根据用户定义的规则对数据包进行处理(如修改目的IP和端口等),并把新的包发送到POSTROUTING链,进而再转发给Real Server

转发模式

NAT

NAT模式通过修改数据包的目的IP和目的端口来将包转发给Real Server。它的特点包括

  • Director Server必须作为Real Server的网关,并且它们必须处于同一个网段内
  • 不需要Real Server做任何特殊配置
  • 支持端口映射
  • 请求和响应都需要经过Director Server,易称为性能瓶颈

LVS NAT

DR

DRDirect Route)模式通过修改数据包的目的MAC地址将包转发给Real Server。它的特点包括

  • 需要在Real Serverlo上配置vip,并配置arp_ignorearp_announce忽略对vipARP解析请求
  • Director ServerReal Server必须在同一个物理网络内,二层可达
  • 虽然所有请求包都会经过Director Server,但响应报文不经过,有性能上的优势

LVS DR

TUN

TUN模式通过将数据包封装在另一个IP包中(源地址为DIP,目的为RIP)将包转发给Real Server。它的特点包括

  • Real Server需要在lo上配置vip,但不需要Director Server作为网关
  • 不支持端口映射

FULLNAT

FULLNAT是阿里在NAT基础上增加的一个新转发模式,通过引入local IPCIP-VIP转换为LIP->RIP,而LIPRIP均为IDC内网IP)使得物理网络可以跨越不同vlan,代码维护在alibaba/LVS上面。其特点是

  • 物理网络仅要求三层可达
  • Real Server不需要任何特殊配置
  • SYNPROXY防止synflooding攻击
  • 未进入内核主线,维护复杂

LVS FULLNAT

调度算法

  • 轮叫调度(Round-Robin Scheduling
  • 加权轮叫调度(Weighted Round-Robin Scheduling
  • 最小连接调度(Least-Connection Scheduling
  • 加权最小连接调度(Weighted Least-Connection Scheduling
  • 基于局部性的最少链接(Locality-Based Least Connections Scheduling
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling
  • 目标地址散列调度(Destination Hashing Scheduling
  • 源地址散列调度(Source Hashing Scheduling
  • 最短预期延时调度(Shortest Expected Delay Scheduling
  • 不排队调度(Never Queue Scheduling

posted on 2021-04-28 19:38  tycoon3  阅读(178)  评论(0编辑  收藏  举报

导航