1、传统负载均衡面临的困境

随着企业信息化业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。针对此情况在现有网络结构之上衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。分为硬件负载均衡和软件负载均衡。

硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,具备多样化的负载均衡策略,可达到智能化的流量管理,满足因业务变化而产生对资源的波动需求。但是硬件负载均衡的价格较高,对虚拟资源的支持不好。软件负载均衡解决方案是在相应的操作系统上安装软件来实现负载均衡。主要有两种类型,一种是基于代理型软件的负载均衡,例如 Nginx、Apache、HAProxy 等,缺陷在于存在单点问题,流量都要经过负载均衡服务器,性能瓶颈较明显;一种是基于 LVS-DR 型软件,基于后端路由模式,下行流量由后端 vm 直接发向客户端,需要所有 VM 和负载均衡都需要额外配置 VIP,从而对运维管理和自动化造成了挑战。

硬件负载均衡和软件负载均衡各具优势,与硬件负载均衡相比软件负载均衡成本低廉、使用灵活,可以更好地支撑云平台内的虚拟化资源。而用户如果想在云平台内需要结合各类优势的负载均衡服务,既可以提供 DR 模式的负载均衡,同时又可以避免运维操作,将是一个十分优化的方案。

2、品高云 SDN 负载均衡介绍

品高云 V7.0 推出的 SDN 负载均衡服务是基于 LVS+SDN 架构实现的高性能无代理的负载均衡服务,并利用 SDN 技术避免了繁琐的 LVS 后端应用的配置问题。相比 V6 版本中代理模式的负载均衡,SDN 负载均衡带来 15 倍的性能提升,支持与弹性伸缩、云监控等关联使用,提升应用服务能力和灵活性,可构建高可用和低延迟要求的应用,支撑有明显高峰扩展需求的业务。

3、品高云 SDN 负载均衡功能特色

3.1 高效并发负载性能

BingoCloudOS 的 V7 版本负载均衡(基于 SDN+LVS)采用了无代理的免配置模型,让流量下发过程中的负载均衡服务不再成为一个性能瓶颈。V7 版本负载均衡相比 V6 版本负载均衡(基于 Apache+HAProxy),并发负载性能提升 15 倍。

3.2 支持弹性伸缩

为满足不同用户在不同场景下的需求,SDN 负载均衡提供和 Autoscaling 动态伸缩组结合的能力,设置后可自动创建和释放实例。接入层 Web 服务器可随访问压力的增加/减少,相应的增加/减少,从而最大程度地节省 IT 资源成本。

3.3 无代理模式

传统的 LVS-DR 型负载均衡会有配置困难的问题,后端运维人力成本很高,并且会导致使用门槛升高。品高云的 SDN 负载均衡无代理,免去复杂的配置过程,极大程度地精简运维成本。

4、品高云 SDN 负载均衡技术架构

SDN 负载均衡服务技术架构

当客户端发送请求访问负载均衡实例,BingoCloudOS 的 SDN 负载均衡会调配 SDN 控制器下发请求到负载均衡实例的规则。当请求经过负载均衡处理后,SDN 控制器下发规则,让经过负载均衡实例处理后的请求送达到后端实例;同时,SDN 控制器会下发反向规则,让后端实例直接响应到客户端。

SDN 负载均衡将保证请求会均匀的转发到每一个接入层服务器,接入层服务器可使用廉价的、配置一致的虚拟机来承载,并结合动态伸缩组可自动创建和释放实例,接入层 Web 服务器可随访问压力的增加/减少而变化。整个过程无代理,解决传统代理的性能瓶颈问题; 且后端免配置,解决了传统 LVS 负载均衡的配置部署困难的问题。

5、功能实践— 验证无代理模式

BingoCloudOS 的 V7 版本负载均衡(基于 SDN+LVS)采用了无代理的免配置模型,让流量下发过程中的负载均衡服务不再成为一个性能瓶颈。本次功能实践通过负载均衡访问目标实例,并查看网络流表信息,以确认当请求经过负载均衡处理后,SDN 控制器下发规则,让经过负载均衡实例处理后的请求送达到后端实例,同时,后端实例接收到访问请求后直接响应到客户端。

具体操作步骤:新建目标实例、创建负载均衡、访问目标实例、访问后查看流表信息。

5.1 新建目标实例

(1)新建两台用于被访问的实例。

IP 地址分别为 10.202.87.74 和 10.202.87.75。

图 1 新建的目标实例

(2)分别对两台实例写入数据。

IP 地址为 10.202.87.75 的实例写入数据 1111;

IP 地址为 10.202.87.74 的实例写入数据 2222。

5.2 创建负载均衡

(1)进入【高级服务→负载均衡→负载均衡】页面中,点击新建,出现向导界面,填写负载均衡名称 LVS-LB,选择负载均衡器类型为 LVS,选择相应的云网络与所在区域,选择端口转发的规则(注意:使用 https 协议的需要服务证书管理中创建自己的证书)。

图 2 创建负载均衡页面

(2)依次根据创建向导设置完成负载均衡的创建。在添加实例环节中选中刚刚创建的两台实例。

图 3 负载均衡关联实例页面

5.3 访问新建实例

任意远程登录一台实例用于访问负载均衡,本次操作选择 IP 地址为 10.202.111.55 的实例。

(1)在访问新建实例之前,查看新建实例(目标实例)、负载均衡实例、客户端实例的 MAC 地址,以确定访问时网络的流量信息走向。

图 4IP 地址为 10.202.87.75 实例的 MAC 地址信息 DO:OD:51:BF:A7:CD

图 5IP 地址为 10.202.87.74 实例的 MAC 地址信息 DO:OD:87:ED:AF:D6

图 6 负载均衡实例的 MAC 地址信息 DO:OD:O1:12:OF:B3

图 7 客户端实例的 MAC 地址信息 8c:89:a5:10:45:bc

(2)访问前登录 SDN 控制页面查看网络 IP 流表信息。

目前,客户端实例还未访问目标实例,因此,通过 SDN 控制页面不能查到客户端实例的流表信息。

图 8 负载均衡所在节点 10.202.11.12 的流表信息

图 9 目标实例所在节点 10.202.11.13 和 10.202.11.11 的流表信息

(3)利用客户端实例通过负载均衡轮询机制依次访问两台实例,这样目标实例、负载均衡实例、客户端实例三者之间会产生相应的流表信息。

图 10 访问目标实例页面

5.4 查看访问流表信息

客户端实例开始访问目标实例后,我们再次登录 SDN 控制页面查看网络 IP 流表信息。在节点 10.202.11.12 上查看到 LVS 的流表访问信息,客户端(IP 地址为 10.202.111.55)访问时,访问信息首先经过负载均衡(IP 地址为 10.202.87.76)然后再下发至目标实例。

图 11 访问后负载均衡所在节点 10.202.11.12 的流表信息

目标实例接受到访问请求后会将反馈信息直接反馈到客户端,不经过负载均衡,图 12 中未出现负载均衡的信息。此时,这样,当大规模流量下发过程中减少了负载均衡的工作负载,进一步提高了负载均衡服务的性能。

图 12 中 1.1.1.1 是 SDN 为目标实例添加了一个固定的虚拟 IP,所有目标实例将信息反馈至客户端时都是显示此 IP 地址。因此,图中目标实例 MAC 地址一栏中显示为空。

图 12 访问后目标实例所在节点 10.202.11.13 和 10.202.11.11 的流表信息

6、品高云 SDN 负载均衡性能测试

6.1 测试目标

负载均衡并发长连接 HTTP 数量

6.2 测试环境

LVS 负载均衡实例 1 台(规模:12 核 24G);

后端 WEB 服务器实例 20 台(规模:4 核 8G);

测试客户端实例 100 台(规模:2 核 2G)。

6.3 测试工具

tsung,是用 erlang 开发的一款可分布式部署的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问。同时该工具支持多种协议,比如 SSL、HHTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP。

6.4 测试过程

(1)创建 LVS 类型的负载均衡。

图 13 新建负载均衡

(2)绑定后端 20 台 WEB 服务器实例,此时的连接数均为 0。

图 14 实例绑定页面(截图仅显示了一部分实例)

(3)用其中一台客户端测试一下 LVS 负载均衡的负载功能是否正常。图 15 可以看出,当访问 LVS 负载均衡时,返回结果来自各个后排服务器实例并且均衡,验证了均衡功能正常。

图 15 验证负载均衡状态

(4)使用 tsung 工具正式进行压力测试,并查看 LVS 负载均衡的连接数列表。图 16 可以看出当前 LVS 负载均衡的连接数基本可以锁定在 50 到 60 万左右。并且均衡能力并没有明显的衰减。

图 16 测试结果(截图仅显示了一部分实例)

SDN 负载均衡服务已经在品高云 7.0 版本中正式发布,对于这项服务感兴趣的读者,可以访问品高云 7.0 的亮点功能介绍,也可以通过视频的方式增加直观的了解。

品高云 7.0 的亮点功能介绍链接:http://cloudos.bingocloud.cn/templates/newlook.html