全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
负载均衡

技术原理

更新时间:2017-07-10 20:11:18   分享:   

技术架构

如下图所示,整个负载均衡系统由三部分构成:四层负载均衡、七层负载均衡和控制系统。

  • 四层负载均衡:采用开源软件LVS(Linux Virtual Server)构建,并根据云计算需求对其进行了定制和优化。

  • 七层负载均衡:采用开源软件Tengine构建。

  • 控制系统:用于配置和监控负载均衡系统。

    技术架构

LVS技术概述

LVS是全球最流行的四层负载均衡开源软件,可以实现Linux平台下的负载均衡。

LVS是基于Linux Netfilter框架实现的一个内核模块。IPTables是基于Netfilter基本架构实现的一个可扩展的数据报高级管理系统或核外配置工具,名称为IPVS。其钩子函数分别HOOK在LOCAL_IN和FORWARD两个HOOK点,如下图所示。

LVS

阿里云的四层负载均衡针对LVS的一些问题进行了定制和优化,如下表所示。

问题LVS阿里云四层负载均衡优化
问题1 LVS支持NAT/DR/TUNNEL三种转发模式。上述模式在多VLAN网络环境下部署时,网络拓扑复杂,运维成本高。 新增转发模式FULLNAT,实现LVS-RealServer间跨VLAN通讯。
问题2 和商用负载均衡设备(如F5等)相比,LVS缺少DDOS攻击防御功能。 新增了SYNPROXY等TCP标志位DDoS攻击防御功能。
问题3 LVS采用PC服务器,常用Keepalived软件的VRRP心跳协议进行主备部署,其性能无法扩展。 采用LVS集群方式部署。
问题4 LVS常用管理软件Keepalived的配置和健康检查性能不足。 对Keepalived的性能进行了优化。

阿里云LVS开源地址:https://github.com/alibaba/LVS

FULLNAT技术概述

FULLNAT主要实现方式为:

  • 引入local address(内网IP地址)。cip-vip转换为lip-rip,而lip和rip均为IDC内网IP,可以跨VLAN通讯。
  • IN/OUT的数据流全部经过LVS,为了保证带宽,采用万兆(10G)网卡。
  • FULLNAT转发模式,当前仅支持TCP协议。

FULLNAT

SYNPROXY技术概述

LVS针对TCP标志位DDoS攻击,采取如下策略:对于SYN flood类型攻击,利用SYNPROXY模块进行防御。

参照Linux TCP协议栈中SYN cookie的思想,LVS代理TCP三次握手。代理过程如下图所示。

  1. Client发送SYN包给LVS。

  2. LVS构造特殊SEQ的SYN ACK包给Client。

  3. Client回复ACK给LVS。

  4. LVS验证ACK包中ack_seq是否合法。

  5. 如果合法,则LVS再和RealServer建立三次握手。

    三次握手

集群部署方式

LVS集群部署方式实现的主要方式为:

  • LVS和上联交换机间运行OSPF协议。
  • 上联交换机通过ECMP等价路由,将数据流分发给LVS集群。
  • LVS集群再转发给业务服务器。

集群方式部署极大地保证了异常情况下,负载均衡服务的稳定性:

  • 健壮性:LVS和交换机间运行OSPF心跳。一个负载均衡IP配置在集群的所有LVS上。当一台LVS不可用时,交换机会自动发现并将其从ECMP等价路由中剔除。
  • 可扩展性:如果当前LVS集群无法支撑某个负载均衡IP的流量时,LVS集群可以进行水平扩容。

    集群部署

Keepalived优化

阿里云在负载均衡中针对LVS管理软件Keepalived进行了全面优化,主要包括:

  • 优化了网络异步模型,select方式改为epoll方式。
  • 优化了reload过程。

阿里云四层负载均衡特点

综上所述,基于LVS的四层负载均衡具有如下特点:

  • 高可用:LVS集群保证了冗余性,无单点。
  • 安全:LVS自带攻击防御+云盾,提供了接近于实时防御的能力。
  • 健康检查:负载均衡对后端ECS实例进行健康检查,自动屏蔽异常状态的ECS实例,待该ECS实例恢复正常后自动解除屏蔽。

Tengine技术概述

Tengine是阿里巴巴发起的Web服务器项目,是当前最流行七层负载均衡开源软件之一。在Nginx的基础上,针对大访问量网站的需求,Tengine添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

Tengine开源地址: http://tengine.taobao.org

针对云计算场景,Tengine定制的主要特性如下:

  • 继承Nginx-1.4.6的所有特性,百分之百兼容Nginx的配置。
  • 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine。
  • 更加强大的负载均衡能力,包括一致性Hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线。
  • 监控系统的负载和资源占用,从而对系统进行保护。
  • 展示对运维人员更友好的出错信息,便于定位出错机器。
  • 更强大的防攻击(访问速度限制等)模块。

阿里云七层负载均衡特点

采用Tengine作为负载均衡基础模块的七层负载均衡,具有如下特点:

  • 高可用:Tengine集群保证了冗余性,无单点。
  • 安全:多维度的CC攻击防御能力。
  • 健康检查:负载均衡对后端ECS实例进行健康检查,自动屏蔽异常状态的ECS实例,待该ECS实例恢复正常后自动解除屏蔽。
  • 会话保持:支持七层会话保持功能。
  • 一致性:支持一致性hash调度。
本文导读目录
本文导读目录
以上内容是否对您有帮助?