学海无涯 个人blog lnmps.com 新站
分类: LINUX
2014-04-25 14:13:40
SLB(Server Load Balance)服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台云服务器(Elastic
Compute
Service,简称ECS)资源虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。
SLB服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,SLB服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。
SLB服务是ECS面向多机方案的一个配套服务,需要同ESC结合使用。
整个SLB系统由3部分构成:四层负载均衡,七层负载均衡 和 控制系统,如下图所示;
LVS是全球最流行的四层负载均衡开源软件,由章文嵩博士(当前阿里云产品技术负责人)在1998年5月创立,可以实现LINUX平台下的负载均衡。
LVS是 基于linux netfilter框架实现(同iptables)的一个内核模块,名称为ipvs;其钩子函数分别HOOK在LOCAL_IN和FORWARD两个HOOK点,如下图所示;
在云计算大规模网络环境下,官方LVS存在如下问题;
为了解决上述问题,我们在官方LVS基础上进行了定制化;
注1:ali-LVS开源地址;
FULLNAT实现主要思想:引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯;
IN/OUT的数据流全部经过LVS,为了保证带宽,采用万兆(10G)网卡;
FULLNAT转发模式,当前仅支持TCP协议;
LVS针对TCP标志位DDOS攻击,采取如下策略;
LVS集群部署方式实现的主要思想:LVS和上联交换机间运行OSPF协议,上联交换机通过ECMP等价路由,将数据流分发给LVS集群,LVS集群再转发给业务服务器;
健壮性:lvs和交换机间运行ospf心跳,1个vip配置在集群的所有LVS上,当一台LVS down,交换机会自动发现并将其从ECMP等价路由中剔除;
可扩展:如果当前LVS集群无法支撑某个vip的流量,LVS集群可以进行水平扩容;
集群部署方式极大的保证了异常情况下,负载均衡服务的稳定性;
对LVS管理软件keepalived进行了全面优化;
综上所述,四层负载均衡产品有如下特点;
Tengine是阿里巴巴发起的web服务器项目,其在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性;Nginx是当前最流行的7层负载均衡开源软件之一;
注:Tengine开源地址;
针对云计算场景,tengine定制的主要特性如下;
采用Tengine作为SLB的基础模块,阿里七层负载均衡产品有如下特点;
SLB作为负载均衡设备,其最重要的指标是 稳定性,在进一步提高稳定性方面,主要工作有2点;
同时,在功能方面有更多支持;
(本文作者是SLB研发工程师 吴佳明_普空)