产品介绍

SLB技术原理浅析

阿里云产品团队 发表于2014年3月21日 | 阅读(28,417) 评论 (10)

1 SLB功能介绍

SLB(Server Load Balance)服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic Compute Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。

SLB服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,SLB服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。
 
SLB服务是ECS面向多机方案的一个配套服务,需要同ESC结合使用。

2 SLB技术架构

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

  • 四层负载均衡,采用开源软件LVS(linux virtual server),并根据云计算需求对其进行了定制化;该技术已经在阿里巴巴内部业务全面上线应用2年多详见第3节;
  • 七层负载均衡,采用开源软件Tengine;该技术已经在阿里巴巴内部业务全面上线应用3年多;参见第4节;
  • 控制系统,用于 配置和监控 负载均衡系统;

3 LVS技术特点

LVS是全球最流行的四层负载均衡开源软件,由章文嵩博士(当前阿里云产品技术负责人)在1998年5月创立,可以实现LINUX平台下的负载均衡。
 
LVS是 基于linux netfilter框架实现(同iptables)的一个内核模块,名称为ipvs;其钩子函数分别HOOK在LOCAL_IN和FORWARD两个HOOK点,如下图所示;
 

 
在云计算大规模网络环境下,官方LVS存在如下问题;

  • 问题1:LVS支持NAT/DR/TUNNEL三种转发模式,上述模式在多vlan网络环境下部署时,存在网络拓扑复杂,运维成本高的问题;
  • 问题2:和商用负载均衡设备(如,F5)相比,LVS缺少DDOS攻击防御功能;
  • 问题3:LVS采用PC服务器,常用keepalived软件的VRRP心跳协议进行主备部署,其性能无法扩展;
  • 问题4:LVS常用管理软件keepalived的配置和健康检查性能不足;

为了解决上述问题,我们在官方LVS基础上进行了定制化;

  • 解决1:新增转发模式FULLNAT,实现LVS-RealServer间跨vlan通讯;
  • 解决2:新增synproxy等攻击TCP标志位DDOS攻击防御功能,;
  • 解决3:采用LVS集群部署方式;
  • 解决4:优化keepalived性能;

注1:ali-LVS开源地址https://github.com/alibaba/LVS;

3.1 FULLNAT技术

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

3.2 SYNPROXY技术

LVS针对TCP标志位DDOS攻击,采取如下策略;

  1. Synflood攻击,利用synproxy模块进行防御,如下图所示;实现主要思想:参照linux tcp协议栈中syncookies的思想,LVS代理TCP三次握手;代理过程:client发送syn包给LVS,LVS构造特殊seq的synack包给client,client回复ack给LVS,LVS验证ack包中ack_seq是否合法;如果合法,则LVS再和Realserver建立3次握手;

  1. Ack/fin/rstflood攻击,查找连接表,如果不存在,则直接丢弃;

3.3 集群部署方式

LVS集群部署方式实现的主要思想:LVS和上联交换机间运行OSPF协议,上联交换机通过ECMP等价路由,将数据流分发给LVS集群,LVS集群再转发给业务服务器;
 
健壮性:lvs和交换机间运行ospf心跳,1个vip配置在集群的所有LVS上,当一台LVS down,交换机会自动发现并将其从ECMP等价路由中剔除;
 
可扩展:如果当前LVS集群无法支撑某个vip的流量,LVS集群可以进行水平扩容;
 
集群部署方式极大的保证了异常情况下,负载均衡服务的稳定性;
 

3.4 keepalived优化

对LVS管理软件keepalived进行了全面优化;

  1. 优化了网络异步模型,select改为epoll方式;
  2. 优化了reload过程;

综上所述,四层负载均衡产品有如下特点;

  1. 高可用,LVS集群保证了冗余性,无单点;
  2. 安全,LVS自生攻击防御+云盾,提供了近实时防御能力;
  3. 健康检查:对后端ECS进行健康检查,自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽;

4 Tengine技术特点

Tengine是阿里巴巴发起的web服务器项目,其在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性;Nginx是当前最流行的7层负载均衡开源软件之一;
 
注:Tengine开源地址http://tengine.taobao.org/;

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

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

采用Tengine作为SLB的基础模块,阿里七层负载均衡产品有如下特点;

  1. 高可用,Tengine集群保证了冗余性,无单点;
  2. 安全,多维度的CC攻击防御能力;;
  3. 健康检查,对后端ECS进行健康检查,自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽;
  4. 支持7层会话保持功能;
  5. 支持一致性hash调度;

5 技术展望

SLB作为负载均衡设备,其最重要的指标是 稳定性,在进一步提高稳定性方面,主要工作有2点;

  1. 支持集群内部 session同步;
  2. 采用anycast技术实现同城双A;

同时,在功能方面有更多支持;

  1. 白名单访问控制。从SLB层面实现访问控制,用户可以在SLB系统上配置白名单,便于用户灵活限定外部访问请求;
  2. 更多服务协议的支持。如:HTTPS、UDP等;

(本文作者是SLB研发工程师 吴佳明_普空)

下一文章

云产品再次降价

10条评论
  • m***e

    SLB商用之前大量的小白测试之后,现在感觉稳定性还不错,比测试期好很多了,不过就是价格,真心不给力,巨坑

    2014年3月21日21:29
  • s***0

    除了价格,其他都不错。

    2014年3月25日09:37
  • a***i

    “优化了网络异步模型,select改为epool方式;”
    是想说 epoll 吧?:-)

    2014年3月25日15:26
  • 阿里云产品团队

    感谢反馈,已经修改笔误。

    2014年3月25日17:21
  • u***t

    UDP什么时候被支持?有计划了没?

    2014年3月30日00:15
  • q***6

    d

    2014年3月31日02:49
  • h***5

    SLB 挺好用的。挺……

    2014年4月3日11:57
  • h***8

    优美迅 www.umeixun.com

    2014年6月4日09:57
  • b***p

    “在4层(TCP协议)服务中,当前不支持添加进后端云服务器池的ECS既作为Real Server,又作为客户端向所在的SLB实例发送请求。因为,返回的数据包只在云服务器内部转发,不经过SLB,所以通过配置在SLB内的ECS去访问的VIP是不通的。”在SLB主页看到这段话,是在不理解,能否详细解释下?如果一个ECS不作为realserver, 就可以访问VIP吗?为什么作为realserver就不可以了呢?谢谢

    2014年6月17日23:04
  • c***u

    因为此时realserver作为client,发送到SLB实例后(即到达VIP),realserver发出的数据,原IP是内网IP,目的是VIP,当SLB实例监听到这个时 是相当于对内网的一个报文应答 因为realsever的ip在SLB实例所在设备上都有路由,而正常外部的client访问服务时 会有个替换的过程;自己理解的 可能不对。。

    2015年3月23日14:04

【转载】SLB技术原理浅析相关推荐

  1. 负载均衡技术原理浅析

    1.技术架构 2.LVS技术特点 FULLNAT技术概述 SYNPROXY技术概述 集群部署方式 Keepalived优化 3.Tengine技术特点 4.更多功能 SLB(Server Load B ...

  2. java 连接池技术_java数据库连接池技术原理(浅析)

    在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...

  3. 某移动端防作弊产品技术原理浅析与个人方案构想

    由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: android4.4.4.IDA Pro 7.0.jeb3.sklearn机器学习库 目录 : 防作弊介绍 移动 ...

  4. wifi室内人员定位技术,原理浅析-新导智能

    当咱们在室外开车或许骑自行车时,咱们现已习惯运用GPS来完结盯梢和导航,可是当咱们进入到一个较大型的室内空间,比方机场.会议大厅等,总的来说咱们还在运用纸质地图.为了能够更进一步,苏州新导推出了互操作 ...

  5. [转载]HTTP PUSH技术原理,结合ASP.NET实现以及评述

    HTTP PUSH技术原理,结合ASP.NET实现以及评述 收藏 原文:http://blog.csdn.net/banmuhuangci/archive/2008/09/20/2955719.asp ...

  6. 【转载】区块链技术原理、应用领域及挑战

    区块链技术原理.应用领域及挑战 李董, 魏进武 中国联合网络通信有限公司研究院,北京 100032 引用本文: 李董, 魏进武. 区块链技术原理.应用领域及挑战. 电信科学[J], 2016, 32( ...

  7. 【转载】多屏互动技术研究之WifiDisplay(Miracast)技术原理及实现

    文章目录 WifiDisplay(Miracast)技术原理及实现 1. WifiDisplay简介 2. WifiDisplay协议流程 3. WifiDisplay显示框架实现 4. Androi ...

  8. 5G天线及挑战-转载自优生微信公众号5G新技术【5G技术原理】

    5G天线技术原理 5G天线工程面临的挑战 在这里插入图片描述

  9. 沉淀,再出发:docker的原理浅析

    沉淀,再出发:docker的原理浅析 一.前言 在我们使用docker的时候,很多情况下我们对于一些概念的理解是停留在名称和用法的地步,如果更进一步理解了docker的本质,我们的技术一定会有质的进步 ...

最新文章

  1. Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
  2. egg前面加什么_跟 egg 有关的英语多半是贬义,goose egg 也八九不离十
  3. .NET 6 中哈希算法的简化用法
  4. 面向.NET开发人员的Dapr——发布和订阅
  5. 【渝粤题库】国家开放大学2021春2585城市轨道交通概论答案
  6. [Leetcode][第174题][JAVA][地下城游戏][DFS][动态规划]
  7. 云服务器ECS使用限制概览,让你的上云少走一些坑
  8. term和match查询总结(中文检索)
  9. citrix 产品上线
  10. BZOJ 2337 XOR和路径(概率DP)
  11. 回顾︱DeepAR 算法实现更精确的时间序列预测(二)
  12. getComputedStyle
  13. node.js安装详细教程
  14. 电子海图中的自动化关键技术研究
  15. Java实现输出PDF
  16. linux的QQ安装在哪个文件夹,linux安装QQ
  17. 仿人机器人的跑步研究学习笔记2之什么是正逆运动学
  18. java中验证国际手机号码
  19. 【Atomikos】分布式事务简单示例
  20. 软约束、硬约束、Minimum Snap的轨迹优化方法

热门文章

  1. 金华职业技术学院计算机教研室主任,机械技术系主任及教师赴金华职业技术学院走访调研...
  2. Oracle恢复误删数据
  3. 实用分析工具推荐 | OmicsView:交互式可视化分析多组学数据
  4. 强化学习用 Sarsa 算法与 Q-learning 算法实现FrozenLake-v0
  5. element UI select下拉选项位置问题
  6. C语言学习——fscanf()返回值
  7. C#中改变工具条ToolStrip的位置/宽度/高度?
  8. 基于Spring Security与JWT实现单点登录
  9. python爬取并分析淘宝商品信息
  10. 银河麒麟操作系统开机进入grub提示符界面