【转载】SLB技术原理浅析
SLB技术原理浅析
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攻击,采取如下策略;
- Synflood攻击,利用synproxy模块进行防御,如下图所示;实现主要思想:参照linux tcp协议栈中syncookies的思想,LVS代理TCP三次握手;代理过程:client发送syn包给LVS,LVS构造特殊seq的synack包给client,client回复ack给LVS,LVS验证ack包中ack_seq是否合法;如果合法,则LVS再和Realserver建立3次握手;
- 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进行了全面优化;
- 优化了网络异步模型,select改为epoll方式;
- 优化了reload过程;
综上所述,四层负载均衡产品有如下特点;
- 高可用,LVS集群保证了冗余性,无单点;
- 安全,LVS自生攻击防御+云盾,提供了近实时防御能力;
- 健康检查:对后端ECS进行健康检查,自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽;
4 Tengine技术特点
Tengine是阿里巴巴发起的web服务器项目,其在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性;Nginx是当前最流行的7层负载均衡开源软件之一;
注:Tengine开源地址http://tengine.taobao.org/;
针对云计算场景,tengine定制的主要特性如下;
- 继承Nginx-1.4.6的所有特性,100%兼容Nginx的配置;
- 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
- 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线;
- 监控系统的负载和资源占用从而对系统进行保护;
- 显示对运维人员更友好的出错信息,便于定位出错机器;
- 更强大的防攻击(访问速度限制)模块;
采用Tengine作为SLB的基础模块,阿里七层负载均衡产品有如下特点;
- 高可用,Tengine集群保证了冗余性,无单点;
- 安全,多维度的CC攻击防御能力;;
- 健康检查,对后端ECS进行健康检查,自动屏蔽异常状态的ECS,待该ECS恢复正常后自动解除屏蔽;
- 支持7层会话保持功能;
- 支持一致性hash调度;
5 技术展望
SLB作为负载均衡设备,其最重要的指标是 稳定性,在进一步提高稳定性方面,主要工作有2点;
- 支持集群内部 session同步;
- 采用anycast技术实现同城双A;
同时,在功能方面有更多支持;
- 白名单访问控制。从SLB层面实现访问控制,用户可以在SLB系统上配置白名单,便于用户灵活限定外部访问请求;
- 更多服务协议的支持。如:HTTPS、UDP等;
(本文作者是SLB研发工程师 吴佳明_普空)
云产品再次降价
- 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.技术架构 2.LVS技术特点 FULLNAT技术概述 SYNPROXY技术概述 集群部署方式 Keepalived优化 3.Tengine技术特点 4.更多功能 SLB(Server Load B ...
- java 连接池技术_java数据库连接池技术原理(浅析)
在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...
- 某移动端防作弊产品技术原理浅析与个人方案构想
由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: android4.4.4.IDA Pro 7.0.jeb3.sklearn机器学习库 目录 : 防作弊介绍 移动 ...
- wifi室内人员定位技术,原理浅析-新导智能
当咱们在室外开车或许骑自行车时,咱们现已习惯运用GPS来完结盯梢和导航,可是当咱们进入到一个较大型的室内空间,比方机场.会议大厅等,总的来说咱们还在运用纸质地图.为了能够更进一步,苏州新导推出了互操作 ...
- [转载]HTTP PUSH技术原理,结合ASP.NET实现以及评述
HTTP PUSH技术原理,结合ASP.NET实现以及评述 收藏 原文:http://blog.csdn.net/banmuhuangci/archive/2008/09/20/2955719.asp ...
- 【转载】区块链技术原理、应用领域及挑战
区块链技术原理.应用领域及挑战 李董, 魏进武 中国联合网络通信有限公司研究院,北京 100032 引用本文: 李董, 魏进武. 区块链技术原理.应用领域及挑战. 电信科学[J], 2016, 32( ...
- 【转载】多屏互动技术研究之WifiDisplay(Miracast)技术原理及实现
文章目录 WifiDisplay(Miracast)技术原理及实现 1. WifiDisplay简介 2. WifiDisplay协议流程 3. WifiDisplay显示框架实现 4. Androi ...
- 5G天线及挑战-转载自优生微信公众号5G新技术【5G技术原理】
5G天线技术原理 5G天线工程面临的挑战 在这里插入图片描述
- 沉淀,再出发:docker的原理浅析
沉淀,再出发:docker的原理浅析 一.前言 在我们使用docker的时候,很多情况下我们对于一些概念的理解是停留在名称和用法的地步,如果更进一步理解了docker的本质,我们的技术一定会有质的进步 ...
最新文章
- Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
- egg前面加什么_跟 egg 有关的英语多半是贬义,goose egg 也八九不离十
- .NET 6 中哈希算法的简化用法
- 面向.NET开发人员的Dapr——发布和订阅
- 【渝粤题库】国家开放大学2021春2585城市轨道交通概论答案
- [Leetcode][第174题][JAVA][地下城游戏][DFS][动态规划]
- 云服务器ECS使用限制概览,让你的上云少走一些坑
- term和match查询总结(中文检索)
- citrix 产品上线
- BZOJ 2337 XOR和路径(概率DP)
- 回顾︱DeepAR 算法实现更精确的时间序列预测(二)
- getComputedStyle
- node.js安装详细教程
- 电子海图中的自动化关键技术研究
- Java实现输出PDF
- linux的QQ安装在哪个文件夹,linux安装QQ
- 仿人机器人的跑步研究学习笔记2之什么是正逆运动学
- java中验证国际手机号码
- 【Atomikos】分布式事务简单示例
- 软约束、硬约束、Minimum Snap的轨迹优化方法
热门文章
- 金华职业技术学院计算机教研室主任,机械技术系主任及教师赴金华职业技术学院走访调研...
- Oracle恢复误删数据
- 实用分析工具推荐 | OmicsView:交互式可视化分析多组学数据
- 强化学习用 Sarsa 算法与 Q-learning 算法实现FrozenLake-v0
- element UI select下拉选项位置问题
- C语言学习——fscanf()返回值
- C#中改变工具条ToolStrip的位置/宽度/高度?
- 基于Spring Security与JWT实现单点登录
- python爬取并分析淘宝商品信息
- 银河麒麟操作系统开机进入grub提示符界面