技术原理-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

技术原理

行者武松 2017-10-18 17:19:45 2629


技术架构


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

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

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

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


LVS技术概述


LVS是全球最流行的四层负载均衡开源软件,可以实现Linux平台下的负载均衡。
LVS是基于LinuxNetfilter框架实现的一个内核模块。IPTables是基于Netfilter基本架构实现的一个可扩展的数据报高级管理系统或核外配置工具,名称为IPVS。其钩子函数分别HOOK在LOCAL_IN和FORWARD两个HOOK点,如下图所示。

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

阿里云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协议。



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调度。
tengine 弹性计算 负载均衡 网络协议 安全 Linux 应用服务中间件 网络安全 网络虚拟化 nginx
分享到
取消 提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题